Mein WinAPI Programm wird nicht angezeigt!



  • Hallo,
    ich lernen zurzeit WinAPI mit Charles Petzolds Buch (Windows Programmierung), so jetzt habe ich mal ein Programm ausprobiert (um genau zu sein das zweite vom Buch), das ganz normal ein Fenster erstellt und in die Mitte schreibt

    "Hello World"
    

    . Aber irgendwie erscheint kein Fenster 😡 Fehler findet der Compiler (Debuger) auf nicht. Bitte um Hilfe!

    Im TaskManager läuft aber das Programm!

    Ich benutze: Visual C++ 2008 und Windows 7 falls es daran liegt 😃

    Danke für alle Antworten

    Code:

    #include "windows.h"
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
    	static char szAppName[] = "HelloWin";
    	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 = NULL;
    	wndclass.lpszClassName = szAppName;
    
    	hwnd = CreateWindow(szAppName, "Das erste echte Programm", 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)
    {
    	HDC hdc;
    	PAINTSTRUCT ps;
    	RECT rect;
    
    	switch(message)
    	{
    	case WM_CREATE:
    		return 0;
    
    	case WM_PAINT:
    		hdc = BeginPaint(hwnd, &ps);
    		GetClientRect(hwnd, &rect);
    
    		DrawText(hdc, "Hello World", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    		EndPaint(hwnd, &ps);
    		return 0;
    
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    	}
    	return DefWindowProc(hwnd, message, wParam, lParam);
    }
    


  • RegisterClass() fehlt.



  • jop, danke

    Habs nachen post schon bemerkt 😉


Anmelden zum Antworten