Fenster erstellen
-
Hallo,
ich steh grad mächtig aufm Schlauch:
void Ctest111View::OnTestTest() { // TODO: Fügen Sie hier Ihren Befehlsbehandlungscode ein. HINSTANCE hInstance = AfxGetInstanceHandle(); HWND hwnd = GetSafeHwnd(); CreateWindow(NULL,"test",NULL,100,200,100,50,hwnd,NULL,hInstance,NULL); CreateDlg( ShowWindow(SW_SHOW); UpdateWindow(); }
Warum seh ich das Fenster nicht, wenn ich auf die Test im Menü drücke??
Grez
Frostie
-
Weil das Fenster, das du erzeugst, weder den Stil WS_VISIBLE hat, noch mit ShowWindow() angezeigt wird, letzteres bezieht sich nämlich auf Ctest111View.
HWND hwndNew = CreateWindow(...); ::ShowWindow(hwndNew, SW_SHOW);
Die :: sorgen dafür, dass die API-Funktion und nicht die Memberfunktion von CWnd aufgerufen wird.
oder mit MFC:
CWnd *wnd = new CWnd; wnd->Create(...);
und später:
wnd->DestroyWindow(); delete wnd;
-
void Ctest111View::OnTestTest() { // TODO: Fügen Sie hier Ihren Befehlsbehandlungscode ein. HINSTANCE hInstance = AfxGetInstanceHandle(); HWND hwnd = GetSafeHwnd(); HWND hwndNew = Create(NULL,"test",WS_VISIBLE,100,200,100,50,hwnd, NULL,hInstance,NULL); ::ShowWindow(hwndNew,SW_SHOW); ::UpdateWindow(hwndNew); }
Es funzt immer noch nicht!!!!!!!!!! Warum?? Wo liegt der Fehler??
Warum seh ich das Fenster nicht, wenn ich auf die Test im Menü drücke??Grez
Frostie
-
Dein Create ist die Memberfunktion von Ctest111View.
Schau nochmal genauer in mein letztes Posting, die erste Version benutzt CreateWindow (Api-Funktion), die zweite Create (Member von CWnd)
-
Sorry,
ich hatte auch CreateWindows versucht.
Oder versteh ich jetzt was nicht?
Gruß
Frostie
-
Du musst noch einen Klassennamen für das Fenster übergeben. Schau mal in die Doku von CreateWindow