Welchen Style muß man setzen, um sein Fenster mit ALT F4 beenden zu können?



  • Hallo,
    ich habe das Problem, daß ich mein Fenster mit ALT F4 oder mit dem Kreuz in der oberen rechten Ecke beenden möchte.
    Leider kann ich daß nicht.
    Welchen Style muß ich mit SetWindowLong(..) setzen, um daß zu erreichen?

    Vielen Dank!



  • Hallo,
    ich habe mittlerweile das selbst rausgefunden!



  • Wenn man selbst sein Problem lösen kann, dann gibt man hier auch höflicherweise an, wie man das geschafft hat.



  • Hallo,
    na klar kann ich die Lösung noch angeben. Ich hab´s gestern grad sehr eilig gehabt.

    Also ich hab ein Fenster mit der ATL - Klasse CAxDialogImpl erzeugt, abgekürzt ungefähr so:

    class CViewDlg : public CAxDialogImpl<CViewDlg>
    {
    ...
    public:
    
      BEGIN_MSG_MAP(CRasterViewDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_HANDLER(IDOK, BN_CLICKED, OnOK)
        COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnCancel)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
        NOTIFY_CODE_HANDLER(TCN_SELCHANGING, OnSheetSelChanging)
        NOTIFY_CODE_HANDLER(TCN_SELCHANGE, OnSheetSelChanged)
      END_MSG_MAP()
    
      //Message methods
      LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
      LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
      LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& handled);
      LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
      LRESULT OnSheetSelChanged(WPARAM wParam, LPNMHDR lParam, BOOL& bHandled);
      LRESULT OnSheetSelChanging(WPARAM wParam, LPNMHDR lParam, BOOL& bHandled);
    
    usw...
    };
    

    Ser Fehler, den ich gemacht habe, ist, daß ich die Message
    COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnCancel)
    bei diesen Dialog nicht behandelt habe.

    Offensichtlich ist das nötig, damit Windows den Dialog mit ALT F4 oder mit einem Klick auf das obere rechte Kreuz beenden kann!

    Ich dachte zuerst, daß ich mit SetWindowLong(...) noch einen bestimmten Fensterstil setzen müßte, daß war aber nicht der Fall.

    edit: Codetags


Anmelden zum Antworten