2016-03-29 9 views
1

Ich habe ein Kombinationsfeld und ich muss die Änderung der Auswahl abfangen, während der Benutzer die Auswahl ändert, indem Sie einfach mit der Maus ohne klicken. Dies dient zum Anzeigen ergänzender Informationen zu dem Objekt, über dem der Benutzer schwebt.Hot tracking list Artikelauswahl in einem Kombinationsfeld

CBN_SELCHANGE wird den Job nicht machen, da diese Meldung nur wird ausgelöst, wenn der Benutzer hat tatsächlich die Auswahl auf einer der Kombinationsfeldelemente durch Anklicken geändert oder wenn die Auf-/Ab-Taste gedrückt werden.

Scheinbar keine Nachricht wird ausgelöst, während der Benutzer gerade über die Combobox schwebt.

Illustration

Z. B: ich wissen muss, wenn der Benutzer 33 die Maus aus dem Eintrag 2 zum Eintrag bewegt.

enter image description here

+0

Ich kann meine einfache win32 Combobox nicht mit der Maus zum Hot Track bringen. Wie schaffen Sie es? –

+0

@DavidHeffernan, kann ich nicht. Das ist eigentlich die Frage: Wie man eine heiße Spur verfolgt. –

+0

Sie möchten also das Verhalten des Standard-Kombinationsfelds so ändern, dass es Hotspots gibt? Das ist eine wirklich schlechte Idee in Bezug auf UX. –

Antwort

1

Unterklasse Diese ist C++ basierend auf c# article, die Sie erwähnt:

LRESULT CALLBACK ComboProc(HWND hwnd, UINT msg, WPARAM wParam, 
    LPARAM lParam, UINT_PTR uIdSubClass, DWORD_PTR) 
{ 
    if (msg == WM_CTLCOLORLISTBOX) 
    { 
     COMBOBOXINFO ci = { sizeof(COMBOBOXINFO) }; 
     GetComboBoxInfo(hwnd, &ci); 
     if (HWND(lParam) == ci.hwndList) 
     { 
      int pos = SendMessage(ci.hwndList, LB_GETCURSEL, 0, 0); 
      OutputDebugStringA(std::to_string(pos).c_str()); 
      OutputDebugStringA("\n"); 
     } 
    } 

    if (msg == WM_NCDESTROY) 
    { 
     RemoveWindowSubclass(hwnd, ComboProc, uIdSubClass); 
    } 

    return DefSubclassProc(hwnd, msg, wParam, lParam); 
} 

... 
SetWindowSubclass(hComboBox, ComboProc, 0, 0); 

Das auf Windows

10. Dies ist nur die Hover-Auswahl in Dropdown-Liste mitteilen getestet wurde, Es kann die Auswahl nicht ändern.

Verwandte Themen