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


Anmelden zum Antworten