enableMenuItem

ComFreek

Mod | @comfreek
Moderator
Erstmal Guten Morgen,

brauche mal wieder Hilfe :).

Und zwar komme ich mit enableMenuItem von der WinAPI nicht so klar.
Habe gegoogelt, und die Ergebnisse ausprobiert (Auch unter
Google Labs==>Codesuche gegoogelt.)
Und unter der MSDN verstehe ich es nicht so ganz.

Also ich weise in der WinMain-Funktion wincl (Typ: WNDCLASSEX) ein Menü aus meiner Ressource zu.
Ich will aber, das von vornherein ein Menüitem deaktiviert wird.


WindowProcedure-Funktion:
Code:
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_CREATE:
            EnableMenuItem((HMENU)MAKEINTRESOURCE(IDR_MENU1),ID_GAME_STOP,MF_BYPOSITION+MF_DISABLED);
            break;
....


resource.h
Code:
//resource.h - Headerdatei

#define ID_STRING_OPEN                  1
#define ID_STRING_SAVE                  2
#define ID_STRING_OPTION1               3
#define ID_STRING_OPTION2               4
#define ID_STRING_ABOUT                 5

#define IDR_MENU1                       101

#define ID_ICON                         111

#define ID_GAME_NEW                    40001
#define ID_GAME_STOP                    40002
#define ID_GAME_EXIT                    40003
#define ID_OPTIONS_OPTIONS_OPTION1      40004
#define ID_OPTIONS_OPTIONS_OPTION2      40005
#define ID_ABOUT                        65535


Ist das richtig es bei WM_CREATE reinzuschreiben?

1000 Mal Danke für jede Antwort !! :p
 
Hi,

du solltest nicht die Resource verwenden:
C++:
(HMENU)MAKEINTRESOURCE(IDR_MENU1)

sondern das Menü deines DIalogs:
C++:
GetMenu(hWnd)

Gruß
Anfänger
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank! Jetzt funktionierts
Außerdem musste ich noch MF_BYPOSITION durch MF_BYCOMMAND ersetzen.

Code:
EnableMenuItem(GetMenu(hwnd),ID_GAME_STOP,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
 
Zurück