?
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