Morgen zusammen =)
Ich habe ein Problem bei der Menuveränderung @ runtime.
Zeige ich euch am besten erstmal Codeauschnitte:
Resource:
(Natürlich haben die ganzen MENUITEM's (außer SEPERATOR) auch ID's, tut nur hier nichts zur Sache, daher habe ich sie nicht mit abgeschrieben ^.^
Das Popupmenu wird auch vollständig und funktionstüchtig angezeigt.
Nun möchte ich aber @ runtime im Untermenu Sub 1 Items hinzufügen.
Tätigen sollte dies folgender Code:
Habe mir es in Olly angeguckt, er geht in den else-Block von "sub == NULL" wie er soll.
Zur kurzen Erklärung - falls mein provisorischer Code Fragen aufwirbelt: bei "Sub 1" soll ein weiteres POPUP item eingefügt werden mit dem Pluginnamen, und (das ist jetzt noch nicht im obrigen Code) dann in diesem Submenu die Menüpunkte welche in plugin->personel_menu Vector stehen.
Nun das Problem:
Er macht nix
gar nichts .. Das Menü sicht nach wie vor gleich aus, und GetLastError wird nicht aufgerufen, die Funktionen InsertMenuItem und DrawMenuBar schlagen also keinen Fehler zurück ... ich bin ratlos :S
Weiß einer was der Fehler sein könnte ?
Danke im Vorraus
MfG
Ich habe ein Problem bei der Menuveränderung @ runtime.
Zeige ich euch am besten erstmal Codeauschnitte:
Resource:
Code:
IDR_POPUP_MENU MENU
BEGIN
POPUP "POPUP"
BEGIN
MENUITEM "Item 1"
MENUITEM SEPERATOR
POPUP "Sub 1"
MENUITEM SEPERATOR
MENUITEM "Item 2"
END
MENUITEM "Item 3"
MENUITEM "Item 4"
MENUITEM "Item 5"
END
END
(Natürlich haben die ganzen MENUITEM's (außer SEPERATOR) auch ID's, tut nur hier nichts zur Sache, daher habe ich sie nicht mit abgeschrieben ^.^
Das Popupmenu wird auch vollständig und funktionstüchtig angezeigt.
Nun möchte ich aber @ runtime im Untermenu Sub 1 Items hinzufügen.
Tätigen sollte dies folgender Code:
Code:
bool AddPluginMenuItem(pluginstruct * plugin){
size_t size = plugin->personal_menu.size();
if(size){
HMENU menu = GetSubMenu(LoadMenu(hInst, MAKEINTRESOURCE(IDR_POPUP_MENU)), 0);
HMENU sub = NULL;
MENUITEMINFOA mii;
mii.cbSize = sizeof(MENUITEMINFOA);
int i = 0, j = GetMenuItemCount(menu);
char name[64] = {0};
while(i<j){
GetMenuStringA(menu, i, name, sizeof(name), MF_BYPOSITION);
if(memcmp(name, "Sub 1", strlen(name) == 0){
sub = GetSubMenu(menu, i);
break;
}
memset(name, 0, sizeof(name));
++i;
}
if(sub == NULL) MessageBoxA(0, "FATAL ERROR", "ERROR", MB_ICONERROR);
else{
mii.fMask = MIIM_SUBMENU | MIIM_STRING | MIIM_ID;
mii.wID = 0x00008888; // nur provisorisch, das handling im dlgproc kommt noch, geht ja erstmal nur um anzeige
mii.hSubMenu = sub;
mii.dwTypeData = (char*)plugin->PluginName;
if(InsertMenuItemA(sub, 0, TRUE, &mii) == 0)
AlertLastError(GetLastError()); // Zeigt eine MessageBox
if(DrawMenuBar(hWnd) == 0)
AlertLastError(GetLastError());
}
}
return true;
}
Habe mir es in Olly angeguckt, er geht in den else-Block von "sub == NULL" wie er soll.
Zur kurzen Erklärung - falls mein provisorischer Code Fragen aufwirbelt: bei "Sub 1" soll ein weiteres POPUP item eingefügt werden mit dem Pluginnamen, und (das ist jetzt noch nicht im obrigen Code) dann in diesem Submenu die Menüpunkte welche in plugin->personel_menu Vector stehen.
Nun das Problem:
Er macht nix

Weiß einer was der Fehler sein könnte ?
Danke im Vorraus
MfG