Habn Problem mit Menüs
-
[cpp] case WM_MENUCOMMAND: { MENUITEMINFO mii; char szText[MAX_PATH]; ZeroMemory(&mii, sizeof(MENUITEMINFO)); mii.cbSize = sizeof(MENUITEMINFO); HMENU hMenu = GetSubMenu((HMENU)lParam, 0); mii.fMask = MIIM_STRING | MIIM_TYPE; mii.fType = MFT_STRING; mii.cch = MAX_PATH; mii.dwTypeData = szText; GetMenuItemInfo(hMenu, (UINT)wParam, true, &mii); MessageBox(0, szText, 0, 0); break; } [/cpp]So ungefähr nur gibt er den text net aus

-
Ich hätte so geraten:
case WM_MENUCOMMAND: { char szText[MAX_PATH]; GetMenuString((HMENU)lParam,(UINT)wParam,szText,MAX_PATH,MF_BYPOSITION); MessageBox(0,szText,"blupp",MB_OK); break; }
-
Hab auch schon versucht wie mein oberes bsp. nur kommt kein text in der MSG Box

-
Kann keiner mehr helfen Funktioniert immer noch net
wäre für eure hilfe echt dankbar
-
Hmm, warum hast du da eigentlich GetSubMenu() drin?
case WM_MENUCOMMAND: { MENUITEMINFO mii; char szText[MAX_PATH]; ZeroMemory(&mii, sizeof(MENUITEMINFO)); mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STRING | MIIM_TYPE; mii.fType = MFT_STRING; mii.cch = MAX_PATH; mii.dwTypeData = szText; GetMenuItemInfo((HMENU)lParam, (UINT)wParam, true, &mii); MessageBox(0, szText, 0, 0); break; }Passen denn die Rückgabewerte von GetMenuItemInfo()?
-
@geeky danke das du mir hilfst
Weis net so recht mit GetLastError bekomme ich fehler 87 beim debuggen bringt er kar keine meldung läuft sauber durch weis nemmer weiter vieleicht liegts ja auch darin wie ich mein menü erstellehier mal der code
[code] //Menü Aufruf Für Datenbank eintrag while (!m_recordset->ADOEOF) { char szText01[255]; my_String = _strdup((char*) ((_bstr_t)(m_recordset->GetFields()->GetItem(field)->GetValue())) ); sprintf(szText01,"%s",my_String); //Menü Eintrag anlegen // Im Programm aufgerufen mit // g_AccessDatabase.PrintFieldMenu(strTable, "Link", hMenu); AppendMenu(hWin,MF_STRING,NULL,szText01); m_recordset->MoveNext(); } [/code]Tray Menü Code im Programm
[code] case (WM_USER + 1): { switch(lParam) { case WM_LBUTTONUP: { hMenu = CreatePopupMenu(); // Mein Datenbank Aufruf g_AccessDatabase.Connect("Data/Database.mdb"); string strTable = "Linkpager"; // Meine Funktion zum einfügen der Links in das Menü g_AccessDatabase.PrintFieldMenu(strTable, "Link", hMenu); // Haupt menü zum steuern des Programms AppendMenu(hMenu,MF_SEPARATOR,NULL,NULL); AppendMenu(hMenu,MFT_STRING,IDOK,TEXT("Wiederherstellen")); AppendMenu(hMenu,MFT_STRING,IDCANCEL,TEXT("Beenden")); SetForegroundWindow(hWnd); GetCursorPos(&pt); TrackPopupMenu(hMenu, TPM_LEFTALIGN|TPM_TOPALIGN, pt.x, pt.y, 0, hWnd, NULL); PostMessage(hWnd, WM_NULL, 0, 0); } case WM_MENUCOMMAND: { MENUITEMINFO mii; char szText[MAX_PATH]; ZeroMemory(&mii, sizeof(MENUITEMINFO)); mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_STRING | MIIM_TYPE; mii.fType = MFT_STRING; mii.cch = MAX_PATH; mii.dwTypeData = szText; GetMenuItemInfo((HMENU)lParam, (UINT)wParam, true, &mii); MessageBox(0, szText, 0, 0); break; } } return 0; } [/code]hier die ausgabe der MessageBox Hier Fehler
hier das tray Menü ausgabe Hier Tray
-
Was sagt der Returnwert von GetMenuItemInfo?
Schon mal daran gedacht das, diese Funktion einen Fehler meldet?
-
wie bekom ich den return wert
sorry für die blöde frage
-
GetMenuItemInfo gibt doch einen Wert zurück! Welchen Wert?
-
er liefert einen int Wert zurück, mit dem Wert 1243088
sry
für die späte Antwort hab spätschicht und komm immer erst um die zeit nach haus zumindest diese woche