2011-11-04 60 views
1

我有一個無模式對話框的屏幕非常怪異的行爲,我無法找到一個解決方案。缺少WM_LBUTTONDOWN

我通過單擊視圖按鈕打開一個無模式對話框。由於對話框不是模態的,我應該可以在對話框打開時點擊該視圖中的任何其他按鈕。但是我不能。事實上,我不能把任何control..edits,按鈕,我檢查的觀點越來越哪些郵件焦點等

,似乎它沒有得到WM_LBUTTONDOWN消息。但它確實得到了WM_LBUTTONUP消息。

爲了使事情變得更加古怪,它只是發生在Windows 7 64位(沒有人報告在Windows XP中這個問題,並正在使用很長一段時間),並就在一些電腦。但是我找不到原因,我也不知道爲什麼會在這些計算機中發生這種情況。

是否有人有線索?開始尋找的地方?

謝謝。

哈維爾

回答

1

這是一個棘手的問題。 問題發生在對話框的自定義實現中。他們使用MFC2008視覺樣式繪製非客戶區域,當爲視覺管理器調用OnNcActivate時,它在Aero和桌面窗口管理器處於活動狀態時返回FALSE。所以對話不會將控制權釋放給其子控制。

相當棘手,因爲我說.....我只是讓你知道在哪裏,以防萬一有人在某處問題曾經有類似的問題。我花了兩天的時間試圖找出答案。

謝謝。

哈維爾

1

必須在錯誤的方式對待WM_NCACTIVATE。確保父窗口過程返回TRUE當它收到WM_NCACTIVATE與wparam是FALSE