Programm wird nicht gestartet
-
Hallo,
wenn ich meine WinApi starten möchte, dann kommt immer nur eine leere Eingabeaufforderung.
main.cpp:#include <windows.h> #include "resource.h" LPCSTR MainClassName = ""; LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { WNDCLASSEX wc; MSG wmsg; HWND hWnd; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (GRAY_BRUSH); wc.lpszMenuName = "MAINMENU"; wc.lpszClassName = MainClassName; wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON), IMAGE_ICON, 16, 16, 0); hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, MainClassName, "Menü Beispiel", WS_OVERLAPPEDWINDOW|WS_VISIBLE, -1, -1, 1024,768,NULL,NULL,hInstance, NULL); while(GetMessage(&wmsg,NULL,0,0)) { TranslateMessage(&wmsg); DispatchMessage(&wmsg); } return wmsg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HWND hwndedit; char string[255]; switch (iMsg) { case WM_CLOSE: DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_FILE_EXIT: DestroyWindow(hWnd); break; } break; case WM_PAINT: hdc = BeginPaint (hWnd, &ps); SetBkColor (hdc, RGB(130,130,130)); TextOut (hdc, 20,10,"Text", 20); EndPaint (hWnd, &ps); return 0; case WM_CREATE: hwndedit = CreateWindow( "edit", "Text", WS_CHILD | WS_VISIBLE, 251, 50, 50, 50, hWnd, (HMENU)2, (HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), NULL); return 0; } return DefWindowProc(hWnd,iMsg,wParam,lParam); }resource.h:
#define MAINMENU 101 #define ID_ICON 111 #define ID_FILE_EXIT 40003menu.rc:
//Ressourcen-Skriptedatei *.rc #include "resource.h" ///////////////////////////////////////////////////////////////// // // Menü // MAINMENU MENU { POPUP "Datei" { MENUITEM "Ende", ID_FILE_EXIT } } ///////////////////////////////////////////////////////////////// // //Stringtabelle // STRINGTABLE { }E:\ Der Compiler spuckt mir beim Debuggen folgende Warnungen aus:
E:\CodeBlocks\api\main.cpp:62: warning: unused variable 'hdc'
E:\CodeBlocks\api\main.cpp:63: warning: unused variable 'ps'
E:\CodeBlocks\api\main.cpp:64: warning: unused variable 'hwndedit'
E:\CodeBlocks\api\main.cpp:65: warning: unused variable 'str'
-
Hallo,
dein LPCSTR MainClassName sollte nicht leer sein,
Fenster registrieren mit Funktion RegisterClassEx.mfg
kpeter
-
Hallo,
jetzt klappts. Aber jetzt wird kein Menü angezeigt.
-
sulpsulpc (Gast) schrieb:
Aber jetzt wird kein Menü angezeigt.
Das liest sich, als ob das Menü vorher da war
.Naja, so wird das nix.
Dein Code hat erhebliche Mängel. Insbesondere hast du keine Möglichkeit eingebaut, das Prog abzubrechen (zB. wenn hWnd = NULL ist und
das Prog trotzdem weiterläuft). Nach deinem oberen Listing passiert das so.Am einfachsten erstellst du dir einen funktionierenden Grundprogrammcode ohne Schnickschnack und baust darauf auf..
edit: Beispiel
-
kpeter schrieb:
Insbesondere hast du keine Möglichkeit eingebaut, das Prog abzubrechen (zB. wenn hWnd = NULL ist und
das Prog trotzdem weiterläuft).Hallo,
ich habe sowas nicht nötig, da ich KEIN Microschrott-Programmierer bin.
-
sulpsulpc schrieb:
da ich KEIN Microschrott-Programmierer bin.
das glaub ich dir sogar

-
sulpsulpc schrieb:
ich habe sowas nicht nötig, da ich KEIN Microschrott-Programmierer bin.
A....loch