CreateWindow Problem
-
hWndMain ist nicht NULL
-
Sisko86 schrieb:
hWndMain ist nicht NULL
Upps überlesen. Kontrolliere das mal mit IsWindow!
-
IsWindow(hWndMain) liefert TRUE
-
Muss irgendwas mit meiner WNDCLASS zu tun haben,
Wenn ich eine neue erstelle und ein andere Funktion für lpfnWndProc angebe Funktionierts.
Wieso dass?
-
Wie initialisierst Du die?
-
Hi, so müsste es funktionieren:
hChildWnd = CreateWindow ( winclass, NULL, WS_CHILDWINDOW | WS_VISIBLE, // :warning: pos_u, pos_v, 100, 30, hWndMain, (HMENU) ChildWndID, // :warning: (HINSTANCE) GetWindowLong (hWndMain, GWL_HINSTANCE), // :warning: NULL) ;Ich habe die Paramenter berichtigt und mit
gekennzeichnet!MfG
WilMen
-
Sisko86 schrieb:
Das Handle das ich zurück bekomme ist nicht NULL
DWORD d; HWND hwnd = CreateWindow( winclass, // gleiche wie bei meinem Main Window NULL, WS_CHILD, pos_u, pos_v, 100, 30, hWndMain, NULL, hInst, NULL ); d = GetLastError(); // Code: 1400Wie ich schon schrieb sind seine Probleme wohl eher die Parameter die an CreateWindow() übergeben werden!
-
WilMen schrieb:
Hi, so müsste es funktionieren:
S_CHILDWINDOW | WS_VISIBLE, //

Ein Fenster muss nicht sichtbar sein!
(HMENU) ChildWndID, //

Ein Fenster benötigt keine ID
(HINSTANCE) GetWindowLong (hWnd, GWL_HINSTANCE), //

Wenn man die HINSTANCE verwendet sollte man die nehmen, die auch vom entsprechenden Modul verwendet wird! Und nicht irgendein, die man von irendeinem anderen Fenster bekommt.
IMHO kann aber HINSTANCE NULL sein.
-
was ist denn ChildWndID bzw wie bekomm ich die.
Meine WNDCLASS:
WNDCLASS wc; char winclass[64]; strcpy(winclass, "MAINWINCLASS"); /* remember instance handle */ hInst = (HINSTANCE)hInstance; /* define and register application class */ wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = (HINSTANCE)hInstance; wc.hIcon = (icon_id <= 0) ? NULL : LoadIcon((HINSTANCE)hInstance, MAKEINTRESOURCE(icon_id)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; wc.lpszMenuName = menu_id <= 0 ? NULL : MAKEINTRESOURCE(menu_id); wc.lpszClassName = winclass;
-
@Martin Richter
1. Man muss die Stil-Bits natürlich nicht setzen, aber da ich bei ihm keinen Aufruf von ShowWindow() bzw. SetWindowPos() gesehen habe, wäre es natürlich nicht schlecht, wenn er dann sein Fenster auch sehen würde!

2. Stimmt, man muss keine ID angeben!
(HINSTANCE) GetWindowLong (hWndMain, GWL_HINSTANCE) ;Ich habe den Bezeichner vergessen zu ändern! Hättest du auch selber drauf kommen können!

MfG
WilMen