假設我有the COpenGLControl class derived from CWnd,並且我正在爲我自己的目的對其進行定製。
我想要做這樣的事情:
1-在我的對話框頂部添加一個縮放工具工具欄按鈕。
2-按下工具欄按鈕後提到下面解釋的功能啓用。
3-如果用戶單擊鼠標左鍵,我們將放大2倍,並將glTranslate放到用戶點擊的位置。
4 - 如果用戶單擊鼠標右鍵,我們會縮小0.5倍,並將glTranslate設置爲用戶單擊的位置。
5-如果用戶點擊另一個工具欄按鈕,上面兩個步驟中解釋的功能將被禁用。如何實現WM_LBUTTONCLICK事件處理程序
你知道我想在Global Mapper
中實現類似Zoom Tool
的東西。
我在執行glScale
或glTranslate
時沒有問題。
只是MFC部分有問題。
搜索默認的消息處理程序,我發現我們有WM_LBUTTONDBLCLK
,WM_LBUTTONDOWN
,WM_LBUTTONUP
,WM_RBUTTONDBLCLK
,WM_RBUTTONDOWN
,WM_RBUTTONUP
但不是WM_LBUTTONCLK
或WM_RBUTTONCLK
?
即使我們有WM_LBUTTONCLK
或WM_RBUTTONCLK
,這些事件處理程序將自創建窗口之前啓用並激活,直到關閉它爲止,但我希望它們僅在特定時間處於活動狀態(點擊縮放工具之後並單擊另一個工具)
我知道從here,也許我需要在用戶定義的消息處理程序中實現這些功能,但我沒有任何想法,因爲我是新來的MFC。
你能幫我從真正的想法出發嗎?
在您提供的[鏈接](http://stackoverflow.com/a/18430091/1245120)中沒有提及「用戶定義的」消息處理程序。只需實現一個[ON_LBUTTONDOWN](http://msdn.microsoft.com/en-us/library/aa232230(v = vs.60).aspx)處理程序,並根據處理程序的狀態在處理程序中決定要執行的操作你的軟件。 –
好了@Michael Walz發佈問題後,我實現了ON_LBUTTONDOWN處理程序。它正如我所期望的那樣工作。但問題是這個處理程序總是處於活動狀態,每當我進入opengl窗口並左鍵單擊glScale並運行glTranslate時。但是我告訴過,我希望處理程序在某個特定時間處於活動狀態(單擊對話框頂部的「縮放工具」工具欄按鈕並單擊其他工具欄按鈕之前)。實際上,我問如何讓鼠標事件處理程序在特定時間處於活動狀態?我不知道! – sepideh
或者我怎樣才能讓鼠標WM_LBUTTONDOWN消息在特定時間發送? – sepideh