を発射ません:リストボックスの選択イベント(LBN_SELCHANGEとLBN_DBLCLK)私はこのようなリストボックスコントロールを作成してい
HWND hAvailable = CreateWindowEx(WS_EX_CLIENTEDGE, L"Listbox", NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
LBS_DISABLENOSCROLL | LBS_SORT,
0, 0, 0, 0, hWnd, (HMENU)IDC_AVAILABLELIST,
hInst, NULL);
と、このようなWM_COMMANDの下で私のコールバック関数内のイベントのためのリスニング:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
int wmId, wmEvent;
switch (message) {
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId) {
case IDC_AVAILABLELIST:
// We get here, with LBN_SETFOCUS and LBN_KILLFOCUS
if (wmEvent == LBN_SELCHANGE || wmEvent == LBN_DBLCLK) {
// Never gets here!
}
[ ... ]
問題は、選択を変更すると、新しいアイテムが選択されていることがわかりますが、適切なイベントを受信できません。
アイテムを選択すると、LBN_SETFOCUSイベントの後にLBN_KILLFOCUSイベントが表示されます。 int idx = SendMessage(hAvailable, LB_GETCURSEL, 0, 0);
で現在選択されているインデックスを取得しようとすると、実際にアイテムが選択されていても-1が返されます。