2010-09-22 59 views
1

根據MSDN,窗口最小化或恢復時WM_SIZE應發送到窗口。 但是我的應用程序窗口,WTL CDialogImpl在最小化或恢復時永遠不會獲得WM_SIZE。我使用spy ++來檢查它,我可以得到WM_SYSCOMMAND,WM_WINDOWPOSCHANING,WM_ACTIVE,WM_ACTIVEAPP等,但沒有WM_SIZE。當最小化或恢復時,沒有WM_SIZE消息

我檢查了一些其他WTL示例應用程序,我可以在最小化或恢復時獲取WM_SIZE msg。

我的問題是爲什麼我的WTL CDialogImpl窗口沒有收到WM_SIZE? 除此之外,是否還有其他消息表明還原或最小化完成? 我的意思是,在系統中,大部分時間都有動畫來顯示最小化/恢復過程。我需要一條消息或事件讓應用程序知道恢復時動畫已完成。

謝謝!

威廉·

+1

WM_MOVE,不是WM_SIZE。記錄窗口的樣式標誌。 – 2010-09-22 05:23:11

回答

0

正如doc一個窗口,通過它的WindowProc函數接收到該消息指出這樣你就不會通過間諜得到它++。

無論如何被接收在一個ATL的WM_SIZE消息::在創建,儘量減少和恢復CDialogImpl類衍生的對話框。

爲了與WTL應用程序嚮導檢查它創建一個最小的WTL模態對話框應用程序並添加WM_SIZE消息映射項和匹配篩上部分()成員:

BEGIN_MSG_MAP(CMainDlg) 
     MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) 
     MESSAGE_HANDLER(WM_SIZE, OnSize) 
     //... 
    END_MSG_MAP() 
    LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) 
    { 
     return 0; 
    } 

在篩上部分設置斷點()它會被擊中。

你的問題(如果有的話)在其他地方。

相關問題