मेरे पास एक Win32 एप्लिकेशन (सी ++) है जिसमें एक संदर्भ मेनू है जो अधिसूचना आइकन पर दायाँ क्लिक करने के लिए बाध्य है। मेनू/उपमेनू आइटम गतिशील रूप से बनाए जाते हैं और रनटाइम के दौरान बदल जाते हैं।सी ++ win32 गतिशील मेनू - कौन सा मेनू आइटम चुना गया था
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");
उपरोक्त कोड में hDevices और hChannels गतिशील रूप से उत्पन्न उप मेन्यू हैं। गतिशील मेनू इस तरह उत्पन्न कर रहे हैं:
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");
वहाँ जो मद (उपरोक्त कोड में IDM_DEVICE) प्रत्येक सबमेनू आइटम यह खुद आईडी है परिभाषित करने के लिए बिना क्लिक किए गए जानने का कोई तरीका है? यह पता लगाना चाहेंगे कि उस उपयोगकर्ता ने सबमेनू IDM_DEVICE पर क्लिक किया है और उसने इस उपमेनू में पहली आइटम (टेस्ट 1) पर क्लिक किया था।
मैं कुछ इस तरह हासिल करना चाहते हैं:
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;
}
धन्यवाद मैं नमूना के लिए पूरे दिन खोज रहा हूं और कोई भी नहीं मिला! – blejzz