Menü nicht da
-
Hallo ich bin gerade WinAPI am lernen mit dem Buch "Windows Programmierung" von Microsoft und dem Compiler Dev-C++ + Eclipse und habe ein Problem.
Ich habe was aus dem Buch nachprogrammiert hier die Quellcodes:
menudemo.cpp#include <windows.h> #include "resource.h" #define ID_TIMER 1 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); TCHAR szAppName[] = TEXT("Menu Demo"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = szAppName; wndclass.lpszClassName = szAppName; if(!RegisterClass(&wndclass)){ MessageBox(NULL, TEXT("Programmfehler"), szAppName, MB_ICONERROR); //MessageBox(NULL, TEXT("Programmfehler"), WS_OVERLAPPEDWINDOWS, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hIntance, NULL); } hwnd = CreateWindow(szAppName, TEXT("Programmfehler"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage(&msg, NULL, 0, 0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static int idColor[5] = {WHITE_BRUSH, LTGRAY_BRUSH, GRAY_BRUSH, DKGRAY_BRUSH}; static int iSelection = IDM_BKGND_WHITE; HMENU hMenu; hMenu = GetMenu(hwnd); switch(message){ case WM_COMMAND: switch(LOWORD(wParam)){ case IDM_FILE_NEW: case IDM_FILE_OPEN: case IDM_FILE_SAVE: case IDM_FILE_SAVE_AS: MessageBeep(0); return 0; case IDM_APP_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); return 0; case IDM_EDIT_UNDO: case IDM_EDIT_CUT: case IDM_EDIT_COPY: case IDM_EDIT_PAST: case IDM_EDIT_CLEAR: MessageBeep(0); return 0; case IDM_BKGND_WHITE: case IDM_BKGND_LTGRAY: case IDM_BKGND_GRAY: case IDM_BKGND_DKGRAY: case IDM_BKGND_BLACK: CheckMenuItem(hMenu, iSelection, MF_UNCHECKED); iSelection = LOWORD(wParam); CheckMenuItem(hMenu, iSelection, MF_CHECKED); SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG) GetStockObject(idColor[LOWORD(wParam) - IDM_BKGND_WHITE])); InvalidateRect(hwnd, NULL, TRUE); return 0; case IDM_TIMER_START: if(SetTimer(hwnd, ID_TIMER, 1000, NULL)){ EnableMenuItem(hMenu, IDM_TIMER_START, MF_GRAYED); EnableMenuItem(hMenu, IDM_TIMER_STOP, MF_ENABLED); } return 0; case IDM_TIMER_STOP: KillTimer(hwnd, ID_TIMER); EnableMenuItem(hMenu, IDM_TIMER_START, MF_ENABLED); EnableMenuItem(hMenu, IDM_TIMER_STOP, MF_GRAYED); return 0; case IDM_APP_HELP: MessageBox(hwnd, TEXT("Hilfestellung noch nicht implentiert."), szAppName, MB_ICONEXCLAMATION | MB_OK); return 0; case IDM_APP_ABOUT: MessageBox(hwnd, TEXT("Hilfestellung noch nicht implentiert."), szAppName, MB_ICONINFORMATION | MB_OK); return 0; } break; case WM_TIMER: MessageBeep(0); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }resource.h
#define IDM_FILE_NEW 40001 #define IDM_FILE_OPEN 40002 #define IDM_FILE_SAVE 40003 #define IDM_FILE_SAVE_AS 40004 #define IDM_APP_EXIT 40005 #define IDM_EDIT_UNDO 40006 #define IDM_EDIT_CUT 40007 #define IDM_EDIT_COPY 40008 #define IDM_EDIT_PAST 40009 #define IDM_EDIT_CLEAR 40010 #define IDM_BKGND_WHITE 40011 #define IDM_BKGND_LTGRAY 40012 #define IDM_BKGND_GRAY 40013 #define IDM_BKGND_DKGRAY 40014 #define IDM_BKGND_BLACK 40015 #define IDM_TIMER_START 40016 #define IDM_TIMER_STOP 40017 #define IDM_APP_HELP 40018 #define IDM_APP_ABOUT 40019menudemo.rc
#include "resource.h" #include "afxres.h" MENUDEMO MENU DISCARDABLE BEGIN POPUP "&Datei" BEGIN MENUITEM "&Neu", IDM_FILE_NEW MENUITEM "&Öffnen", IDM_FILE_OPEN MENUITEM "&Speichern", IDM_FILE_SAVE MENUITEM "Speichern &unter", IDM_FILE_SAVE_AS MEMUITEM SEPERATOR MENUITEM "B&enden", IDM_APP_EXIT END POPUP "&Bearbeiten" BEGIN MENUITEM "&Widerrufen", IDM_EDIT_UNDO MENUITEM SEPERATOR MENUITEM "A&usschneiden", IDM_EDIT_CUT MENUITEM "&Kopieren", IDM_EDIT_COPY MENUITEM "E&infügen", IDM_EDIT_PAST MENUITEM "&Löschen", IDM_EDIT_CLEAR END POPUP "&Hintergrund", BEGIN MENUITEM "&Weiß", IDM_BKGND_WHITE, CHECHED MENUITEM "&Hellgrau", IDM_BKGND_LTGRAY MENUITEM "&Grau" IDM_BKGND_GRAY MENUITEM "&Dunkelgrau" IDM_BKGND_DKGRAY MENUITEM "&Schwarz" IDM_BKGND_BLACK END POPUP "&Timer" BEGIN MENUITEM "&Start" IDM_TIMER_START MENUITEM "&Stop" IDM_TIMER_STOP, GRAYED END POPUP "&Hilfe" BEGIN MENUITEM "&Hilfe" IDM_APP_HELP MENUITEM "I&nfo" IDM_APP_ABOUT END ENDWenn ich das ganze Compilieren und ausführe habe ich zwar ein Windowsfenster aber kein Menü.
-
hi, Also:
in deinem Code fehlt..._____________________________________________________________________________
1.:wndclass.lpszMenuName = szAppName;wird zu:
wndclass.lpszMenuName = MAKEINTRESOURCE(MENUDEMO);_____________________________________________________________________________
2.: (nicht unbedingt nötig, aber sinnvoll!)HMENU hMenu; hMenu = GetMenu(hwnd);wird zu:
static HMENU hMenu; // der Init unter WM_CREATE: case WM_CREATE: // ... hMenu = GetMenu(hwnd); // ... break;_____________________________________________________________________________
MfG CodeFinder
PS: Bin mir nicht ganz sicher, aber in MVC++ muss du alles dem Projekt hinzufügen!
-
So gehts auch:
HMENU hMenu; hMenu = MAKEINTRESOURCE (MENUDEMO);
-
Also mit anderen Worten im Buch steht mist? jetzt verstehe ich warum windows so ka.. läuft

Das Menü ist aber trozdem nicht da
-
Welches Buch hast Du denn?
Hier mal ein Tutorial zum Umgang mit Menüs:
http://pronix.linuxdelta.de/C/win32/win32_4.shtml
Aber von dem linuxdelta nicht verwirren lassen..

-
Ich habe denn Code übernommen aber es gibt kein Menü
-
Microsoft Visual C++ => Neues Projekt => Win32 Anwendung => Standard Einstellungen lassen!
Damit erstellt der die eine nette bsp. Anweundung, mit Menü... könnt ihr euch mal im selber Fehlerfinden trainieren...
-
Ich kann mit Microsoft Visual C++ aber nur Konsolenanwendungen erstellen
-
lord_fritte schrieb:
Ich kann mit Microsoft Visual C++ aber nur Konsolenanwendungen erstellen
oho, wieso ?
MfG CodeFinder
PS: Hassu meine Tipps mal probiert ?
-
CodeFinder schrieb:
lord_fritte schrieb:
Ich kann mit Microsoft Visual C++ aber nur Konsolenanwendungen erstellen
oho, wieso ?
MfG CodeFinder
PS: Hassu meine Tipps mal probiert ?
Ja geht alles nicht
-
Seid wann kann jemand nur Konsolen Anwendungen erstellen?! Das ist jawohl stuss schlecht hin...
Welche Version(VC++) ?!
-
Dier hier Ich hatte vergessen PSDK zu installieren

-
ζσζ
hatte mich schon gewundert
-
Wenn ich jetzt aber eine Widows Anwendung neu erstelle und das Projekt so lasse wie es ist und das Compiliere bekomm ich einen Fehler:
Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'winwlm.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macwin32.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'rpcerr.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'rpcmac.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macname1.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macpub.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macapi.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Test2 : warning PRJ0041 : Fehlende Abhängigkeit 'macname2.h' für Datei 'Test2.rc' kann nicht gefunden werden. Das Projekt kann zwar erstellt werden, ist aber erst dann aktuell, wenn die Datei gefunden wurde. Die temporäre Datei "c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000139001436.rsp" wird erstellt. Inhalt: [ /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp"Debug\Test2.pch" /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TP ".\Test2.cpp" ]Erstellen der Befehlszeile "cl.exe @"c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000139001436.rsp" /nologo /errorReport:prompt"Die temporäre Datei "c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000239001436.rsp" wird erstellt. Inhalt: [ /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Yc"stdafx.h" /Fp"Debug\Test2.pch" /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /c /Wp64 /ZI /TP ".\stdafx.cpp" ]Erstellen der Befehlszeile "cl.exe @"c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000239001436.rsp" /nologo /errorReport:prompt"Erstellen der Befehlszeile "rc.exe /d "_UNICODE" /d "UNICODE" /fo"Debug/Test2.res" ".\Test2.rc""Die temporäre Datei "c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\TMP00000339001436.tmp" wird erstellt. Inhalt: [ 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ ".\\Debug\\Test2.exe.embed.manifest" ]Erstellen der Befehlszeile "rc.exe /fo".\Debug\Test2.exe.embed.manifest.res" "c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\TMP00000339001436.tmp"" Die temporäre Datei "c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000439001436.rsp" wird erstellt. Inhalt: [ /OUT:"C:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Debug\Test2.exe" /INCREMENTAL /MANIFEST /MANIFESTFILE:"Debug\Test2.exe.intermediate.manifest" /DEBUG /PDB:"c:\dokumente und einstellungen\tobias\eigene dateien\visual studio 2005\projects\test2\debug\Test2.pdb" /SUBSYSTEM:WINDOWS /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib ".\debug\stdafx.obj" ".\debug\Test2.obj" ".\debug\Test2.res" ".\Debug\Test2.exe.embed.manifest.res" ]Erstellen der Befehlszeile "link.exe @"c:\Dokumente und Einstellungen\Tobias\Eigene Dateien\Visual Studio 2005\Projects\Test2\Test2\Debug\RSP00000439001436.rsp" /NOLOGO /ERRORREPORT:PROMPT"