WM_PAINT



  • hi leute....

    hab mal wieder n kleines prob und hoffe ihr könnt mir helfen. und zwar soll ich n programm schreiben, was einfach nur n leeres fenster ist. ist ja soweit null problem. jetzt soll das fenster nach jeder änderung (minimieren, maximieren, größe verändern) die aktuelle höhe und breite anzeigen. naja, soweit bin ich jetzt:

    [code

    ]#include <windows.h>
    
    LRESULT CALLBACK Fensterfunktion(HWND hwnd,UINT message,
    								 WPARAM wparam, LPARAM lparam) {
    
    	int x,y,nWidth,nHeight,fwSizeType;
    	char s[100];
    	HDC dc;
    	PAINTSTRUCT ps;
    
    	switch(message) 
    	{
    		case WM_PAINT:
    
    			dc=BeginPaint(hwnd, &ps);
    			if (dc != NULL)
    				SetTextColor(dc,RGB(0,0,0));
    				TextOut(dc,50,50, "hier sollte dann höhe und breite erscheinen",50);
    
    			EndPaint(hwnd, &ps);
    			return 0;
    
    		case WM_SIZE:
    			fwSizeType = wparam;      
    			nWidth = LOWORD(lparam);  
    			nHeight = HIWORD(lparam);
    			return 0;
    
    		case WM_DESTROY:
    
    		PostQuitMessage(0);
    		return 0;
    	}	
    	return DefWindowProc(hwnd, message, wparam, lparam);
    }
    
    int WINAPI WinMain(HINSTANCE dieseInstanz,HINSTANCE
    				   vorigeInstanz,LPSTR t, int d) {
    	MSG n;
    	HWND f;
    
    	char szAppName[]="Eine neue Fensterklasse";
    	WNDCLASS wc;
    	wc.style		= CS_HREDRAW | CS_VREDRAW ;
    	wc.lpfnWndProc	= Fensterfunktion;
    	wc.cbClsExtra	= 0;
    	wc.cbWndExtra	= 0;
    	wc.hInstance	= dieseInstanz;
    	wc.hIcon		= LoadIcon(NULL, IDI_INFORMATION);
    	wc.hCursor		= LoadCursor(NULL, IDC_CROSS);
    	wc.hbrBackground= CreateSolidBrush(RGB(255,255,255));
    	wc.lpszMenuName	= NULL;
    	wc.lpszClassName= szAppName;
    
    	if (!RegisterClass(&wc))	{	
    
    		return 0;
    	};
    
    	f = CreateWindow ( szAppName,
    			"Fenster",
    			WS_OVERLAPPEDWINDOW |  WS_VISIBLE,
    			100,
    			100,
    			800,
    			600,
    			NULL,
    			NULL,
    			dieseInstanz,
    			NULL);
    	while (GetMessage(&n,NULL,0,0) ) {
    		DispatchMessage(&n);
    	};
    	return n.wParam;
    
    }[/
    

    code]

    also ich glaub, das es soweit erstmal funktionieren würde, nur komm ich bei der ausgabe nicht weiter. wie gibt man variablen aus?!

    sry - bin nich allzu lang im winapi-geschäft 😉

    thx für jede hilfe!!!!!



  • Ist doch klar: Da wo unter TextOut() ""hier sollte dann höhe und breite erscheinen" steht, setzt Du nWidth und nHeight ein.


  • Mod

    if (dc != NULL) 
    {
        char szText[200];
        RECT rect;
        GetClientRect(hwnd,&rect);
        wsprintf(szText,"Höhe %d, Breite %d", rect.bottom-rect.top, rect.right-rect.left);
        SetTextColor(dc,RGB(0,0,0)); 
        TextOut(dc,50,50, szText, lstrlen(szText)); 
    }
    


  • MAKEINTRESOURCE( IDB_MEIN_TOLLES_BMP )
    

    sollt's eigentlich tun.


Anmelden zum Antworten