[英]CStatic subclassed Control fails to receive input messages
我正在使用基於MFC對話框的應用程序,並且具有子類的CStatic
控件。 我想在我的子類控件中接收WM_MOUSEWHEEL和其他消息,但是以某種方式這些消息永遠不會到達。
這是我的對話框的樣子:
我只在做一些非常簡單的繪圖,並且希望能夠通過滾動來上下移動列表。
我已經做了:
PreTranslateMessage
捕獲消息 可悲的是,當我在對話框中滾動/按一個鍵或用鼠標單擊時,什么也沒有被調用。 消息只是沒有到達。
例如,這是我的Mousewheel處理程序:
class CFolderView : public CStatic
{
...
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
DECLARE_MESSAGE_MAP()
...
}
BEGIN_MESSAGE_MAP(CFolderView, CStatic)
ON_WM_MOUSEWHEEL()
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
BOOL CFolderView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
MessageBox("Mouse Wheel moved!", "Debug", MB_OK);
return CStatic::OnMouseWheel(nFlags, zDelta, pt);
}
我不明白為什么沒有輸入消息被發送到我的子類控件。 是否有一些開關可以啟用子類控件的輸入?
您無法在CStatic
處理WM_MOUSEWHEEL
,因為它無法通過設計獲得焦點。
從MSDN:
旋轉鼠標滾輪時,WM_MOUSEWHEEL消息將發送到焦點窗口
通過查看您的屏幕截圖,我建議改為CListBox
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.