Переделал под себя один из найденных примеров, но даже в функцию ListBoxProc не заходит при отладке.
| Код | //Вначале WNDPROC OldListBoxProc; LRESULT CALLBACK ListBoxProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam); //В обработчике WM_CREATE
g_hwndListboxFriends = CreateWindow(L"LISTBOX",NULL,WS_VISIBLE | WS_CHILD | LBS_DISABLENOSCROLL | LBS_STANDARD | LBS_NOTIFY,0,20,r.right,r.bottom-r.top-22-26-20,hWnd,(HMENU)ID_LISTBOX_FRIENDS,g_hInst,NULL); OldListBoxProc = SubclassWindow(g_hwndListboxFriends, ListBoxProc); SendDlgItemMessage(hWnd,ID_LISTBOX_FRIENDS,LB_ADDSTRING,0,(LPARAM)L"Проба пера");
//Собственна сама функция LRESULT CALLBACK ListBoxProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_CONTEXTMENU: { int index = SendMessage(hWnd, LB_ITEMFROMPOINT, 0, lParam); POINT point; point.x = LOWORD(lParam); point.y = HIWORD(lParam); ClientToScreen(hwnd, &point); int menuid = TrackPopupMenu(g_FriendsPopup, TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD, point.x, point.y, 0, hWnd, 0); DestroyMenu(g_FriendsPopup); } break; default: return CallWindowProc(OldListBoxProc, hwnd, Message, wParam, lParam); } }
|
|