Brauche ein CWnd meiner Ansicht



  • Hallo.
    In meinem MFC-Programm gibt es ein Dialogfenster.
    In der OnInitDialog des Dialogfensters steht folgendes.

    CWnd* pWnd = GetDlgItem( IDC_STATIC_PLACEHOLDER );
    CRect rcCtrl;
    pWnd->GetClientRect( &rcCtrl );
    pWnd->ClientToScreen( &rcCtrl );
    ... u.s.w.

    Ich will dies nun in eine Ansicht (in die MyView) eines anderen Programms einfügen.
    Gibt es eine Möglichkeit ein CWnd* pWnd = ... meiner Ansicht zu bekommen. In meiner
    Anscht gibt es kein "IDC_STATIC_PLACEHOLDER" so das das nicht funktioniert
    Ich bräuchte etwas wie z.B.

    CWnd* pWnd = GetWnd(); oder so. Kann leider nicht s passendes finden.

    hal_ibm



  • Hi,
    Jede Fensterklasse hat eine Memberfunktion mit dem Namen "GetSafeHwnd()", mit dieser Funktion kann das API-Fenster-Handle HWND des Fensters ermittelt werden.
    danach kannst Du folgendes machen:

    CWnd wnd;
    wnd.Attach(hWndWindow);
    

    Dann hast du ein CWnd-Objekt des Fensters. Ich hoffe ich konnte dir damit weiterhelfen.



  • Hallo RR.
    Bin ein neuling in C++ und kann leider mit deiner Antwort nicht viel anfangen.
    Habe folgendes versucht aber bekomme nur Fehlermeldungen.

    HWND hWndWindow = GetSafeHwnd();
    CWnd pWnd;
    pWnd.Attach(hWndWindow); diese Zeile macht probleme

    Fehlermeldung: Debug assertion Faild in Wincore.cpp

    Wenn ich die Zeile rausnehme kommt keine Fehlermeldung.

    hal_ibm


Anmelden zum Antworten