joshua xin:
我創建了一個Dialog對話框,之後鼠標點擊對話框內部區域,發現背景圖表也會觸發點擊事件。
最明顯的就是,在對話框內部點擊並拖動鼠標時候,背景K線圖也會跟著在移動。
請問,怎麼樣才可以攔截鼠標的拖動事件,讓背景圖表不會受到影響
>>鼠標點擊對話框內部區域,發現背景圖表也會觸發點擊事件。
點擊動作無論是直接觸發 OnMouseDown 還是 OnClick,都是由 OnMouseEvent處理整個流程
想辦法讓點擊觸發的動作在OnMouseEvent的流程觸發return true;直接結束掉你的點擊
true 代表讓這次事件直接消耗掉,就不會再傳送到下一層事件,也就不會點擊到背景圖。
以下我研究的流程是這樣,請自行....想辦法處理..
MT5 發出一個 CHARTEVENT_MOUSE_MOVE 事件,這個事件包含了滑鼠的座標和按鍵狀態。
在 OnMouseEvent 函式中,程式會偵測到滑鼠左鍵「剛剛被按下」。
此時你要寫一個自己發明的函式偵測點擊目標物到是不是你要的「物件」如果就是此物件
呼叫 OnMouseDown() 來處理後續邏輯之讓OnMouseEvent 會回傳 true。
這個 true 的回傳值會沿著呼叫鏈一路返回給OnChartEvent或 OnEvent ,收到 true 後,就代表「事件已被消耗」
因此它會立即停止事件的進一步傳播。如此一來,這個點擊事件就永遠不會傳遞到圖表本身。
如果沒消耗掉這個事件,最後就會傳到MT5圖表(裡面的東西也算是物件),然後就點中圖表本身....
>>在對話框內部點擊並拖動鼠標時候,背景K線圖也會跟著在移動。
拖曳動作:
先停用圖表的滾動功能
先停用圖表的滾動功能
ChartSetInteger(m_chart_id, CHART_MOUSE_SCROLL, false);
拖曳結束:
重新恢復圖表的滾動狀態。
ChartSetInteger(m_chart_id, CHART_MOUSE_SCROLL,true);
我创建了一个Dialog对话框,之后鼠标点击对话框内部区域,发现背景图表也会触发点击事件。
最明显的就是,在对话框内部点击并拖动鼠标时候,背景K线图也会跟着在移动。
请问,怎么样才可以拦截鼠标的拖动事件,让背景图表不会受到影响