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..