Childs werden nicht erstellt.



  • Hi Leute,

    ich habe ein Problem.
    Meine Childs werden einfach nicht erstellt. Ich weiß einfach nicht woran das liegen kann. Habe auch schon den Fehlercode ausgelesen mit GetLastError();. Doch dieser besagte nur, "Cannot create a top-level child window.".

    Hier ist mal mein Code.
    Zur Erklärung: WinApi.h ist eine eigen erstellte Header und nur zu testzwecken. In ihr sind ein paar Klassen definiert und die benötigten Header included.

    #include "WinApi.h"
    
    HINSTANCE g_hInstance;
    HWND hWindow;
    HWND hButton1;
    
    //Fenster erstellen
    HWND CreateWindows (HINSTANCE hInstance, int nWidth, int nHeight, HWND hWnd, const char szClassName[])
    {
    	WNDCLASSEX	windowclass;
    
    	windowclass.cbSize = sizeof (WNDCLASSEX);
    	windowclass.style = CS_HREDRAW | CS_VREDRAW;
    	windowclass.lpfnWndProc = WindowProc;
    
    	windowclass.cbClsExtra = 0;
    	windowclass.cbWndExtra = 0;
    
    	windowclass.hInstance = hInstance;
    
    	windowclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    	windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    	windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);
    
    	windowclass.hbrBackground = (HBRUSH) COLOR_BACKGROUND+1;
    	windowclass.lpszMenuName = NULL;
    
    	windowclass.lpszClassName = szClassName;
    
    	if (!RegisterClassEx (&windowclass) )
    		return (NULL);
    
    	hWnd = CreateWindowEx (NULL, szClassName, szClassName,WS_OVERLAPPED|WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, nWidth, nHeight, NULL, NULL, hInstance, NULL);
    
    	int x;
    	int y;
    	x = GetSystemMetrics(SM_CXSCREEN);
    	y = GetSystemMetrics(SM_CYSCREEN);
    	SetWindowPos(hWnd, HWND_NOTOPMOST, x/2-(nWidth/2), y/2-(nHeight/2), 0,0,SWP_NOSIZE);
    	return (hWnd);
    }
    
    //Callback Funktion
    LRESULT CALLBACK WindowProc (HWND hWnd, unsigned int message, WPARAM wParam, LPARAM lParam)
    {	
    	switch (message)
    	{
    		case WM_COMMAND:
    		{		
    			switch(LOWORD(wParam))
    			{
    			}break;
    		}break;
    
    		//AUFRUF BEIM BEENDEN DES PROGRAMMS
    		//
    		case WM_DESTROY:
    		{
    			PostQuitMessage(0);
    		}break;
    
    		//AUFRUF BEIM START DES PROGRAMMS
    		//
    		case WM_CREATE:
    		{
    		} break;
    	}
    	return (DefWindowProc (hWnd, message, wParam, lParam));
    }
    
    //Hauptfunktion Settings
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCommandLine, int iShowCommand)
    {	
    	g_hInstance = hInstance;
    	MSG message;
    
    	CreateWindows (g_hInstance, 500, 500, hWindow, "MainWindow");
    
    	hButton1 =	CreateWindow	("BUTTON","TEST",
    								BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,
    								110, 113, 100, 30,
    								hWindow, (HMENU)ID_BTN_BUTTON1, g_hInstance, NULL);	
    	//Messageloop
    	while (GetMessage (&message, NULL, 0, 0) )
    	{
    		TranslateMessage (&message);
    		DispatchMessage  (&message);
    	}
    
    	DestroyWindow(hWindow);
    	UnregisterClass("MainWindow",g_hInstance);
    	return (0);
    }
    

    Ich hoffe jemand findet den fehler.
    Mit freundlichem Gruß
    xXSlayerXx





  • Ich hab alles so gemacht wie immer.
    Eigentlich sollte das Funktionieren.

    Doch wie man sieht tut sich da einfach nichts.
    Nur das weiße Fenster erscheint und es werden keine Childs erstellt.

    EDIT: Habe nach langer Fehlersuche den Fehler gefunden.

    aus: CreateWindows (g_hInstance, 500, 500, hWindow, "MainWindow");

    musste hWindow= CreateWindows (g_hInstance, 500, 500, hWindow, "MainWindow");

    hab ich garnicht dran gedacht..


Anmelden zum Antworten