Bir bağlam menüsüne sahip bir win32 uygulamasına (C++) sahip olmak, bildirim simgesine sağ tıklatır. Menü/alt menü öğeleri, çalışma zamanında dinamik olarak oluşturulur ve değiştirilir. hDevices ve hChannels Yukarıdaki kodda C++ win32 dinamik menüsü - hangi menü öğesi seçildi
InsertMenu(hSettings, 0, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hDevices, L"Setting 1");
InsertMenu(hSettings, 1, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hChannels, L"Setting 2");
InsertMenu(hMainMenu, 0, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT_PTR) hSettings, L"Settings");
InsertMenu(hMainMenu, 1, MF_BYPOSITION | MF_STRING, IDM_EXIT, L"Exit");
dynamicly alt menüler oluşturulur. dinamik menüler böyle oluşturulur:
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 1");
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 2");
InsertMenu(hDevices, i, style, IDM_DEVICE, L"Test 3");
(yukarıdaki kodda IDM_DEVICE) kendi kimliği var her alt menü öğesini tanımlamak zorunda kalmadan tıklandığı madde bilmenin bir yolu var mı? Bu kullanıcı IDM_DEVICE alt menüsünü tıkladığını ve bu alt menüdeki ilk öğeyi (Test 1) tıkladığını tespit etmek ister.
Böyle bir şey başarmak istiyorum:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_DEVICE: // user clicked on Test 1 or Test 2 or Test 3
UINT index = getClickedMenuItem(); // get the index number of the clicked item (if you clicked on Test 1 it would be 0,..)
// change the style of the menu item with that index
break;
}
Teşekkürler bir gün için tüm gün arıyordum ve bulamadı! – blejzz