這是基於你提到c# article C++子類:
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);
這是在Windows 10
測試這隻能報告懸停選擇在下拉列表中,它不能改變選擇。
我不能讓我的平原Win32的組合框熱點追蹤鼠標。你如何管理它? –
@DavidHeffernan,我不能。這其實是一個問題:如何熱追蹤。 –
所以,你想修改標準組合框的行爲,使其熱軌?就用戶體驗而言,這是一個非常糟糕的主意。 –