期貨量化軟件:圖形對(duì)象集合 - 在所有打開的圖表上管理對(duì)象屬性修改
我們已經(jīng)能夠控制在圖表窗口中構(gòu)建的、基于函數(shù)庫(kù)程序操作的標(biāo)準(zhǔn)圖形對(duì)象屬性的更改。 為了跟蹤一些事件,我決定采用上一篇文章中的事件模型。 圖形對(duì)象事件將在 OnChartEvent() 響應(yīng)程序中處理。 這大大簡(jiǎn)化了代碼(盡管事件響應(yīng)處理現(xiàn)在位于兩個(gè)不同的函數(shù)庫(kù)代碼塊之中),并修復(fù)了在圖表上創(chuàng)建圖形對(duì)象時(shí),類對(duì)象屬性填充不完整的問題。 我在上一篇文章中已提到了這一點(diǎn)。
一切似乎都還不錯(cuò),但現(xiàn)在我們無(wú)法直接接收來(lái)自其它圖表里的圖形對(duì)象事件。 在一個(gè)圖表上發(fā)生的所有事件都會(huì)到達(dá)該特定圖表上工作的 OnChartEvent() 響應(yīng)程序。 這意味著為了判定在沒有程序的圖表上發(fā)生了什么事件,我們需要向啟動(dòng)程序的圖表發(fā)送一個(gè)事件。
改進(jìn)庫(kù)類
在 \MQL5\Include\DoEasy\Data.mqh 里,加入新的消息索引:
? MSG_GRAPH_OBJ_TEXT_ANCHOR_LEFT_UPPER, ? ? ? ? ? ? ?// Anchor point at the upper left corner ? MSG_GRAPH_OBJ_TEXT_ANCHOR_LEFT, ? ? ? ? ? ? ? ? ? ?// Anchor point at the left center ? MSG_GRAPH_OBJ_TEXT_ANCHOR_LEFT_LOWER, ? ? ? ? ? ? ?// Anchor point at the lower left corner ? MSG_GRAPH_OBJ_TEXT_ANCHOR_LOWER, ? ? ? ? ? ? ? ? ? // Anchor point at the bottom center ? MSG_GRAPH_OBJ_TEXT_ANCHOR_RIGHT_LOWER, ? ? ? ? ? ? // Anchor point at the lower right corner ? MSG_GRAPH_OBJ_TEXT_ANCHOR_RIGHT, ? ? ? ? ? ? ? ? ? // Anchor point at the right center ? MSG_GRAPH_OBJ_TEXT_ANCHOR_RIGHT_UPPER, ? ? ? ? ? ? // Anchor point at the upper right corner ? MSG_GRAPH_OBJ_TEXT_ANCHOR_UPPER, ? ? ? ? ? ? ? ? ? // Anchor point at the upper center ? MSG_GRAPH_OBJ_TEXT_ANCHOR_CENTER, ? ? ? ? ? ? ? ? ?// Anchor point at the very center of the object //--- CGraphElementsCollection ? MSG_GRAPH_OBJ_FAILED_GET_ADDED_OBJ_LIST, ? ? ? ? ? // Failed to get the list of newly added objects ? MSG_GRAPH_OBJ_FAILED_DETACH_OBJ_FROM_LIST, ? ? ? ? // Failed to remove a graphical object from the list ? ? MSG_GRAPH_OBJ_CREATE_EVN_CTRL_INDICATOR, ? ? ? ? ? // Indicator for controlling and sending events created ? MSG_GRAPH_OBJ_FAILED_CREATE_EVN_CTRL_INDICATOR, ? ?// Failed to create the indicator for controlling and sending events ? MSG_GRAPH_OBJ_CLOSED_CHARTS, ? ? ? ? ? ? ? ? ? ? ? // Chart window closed: ? MSG_GRAPH_OBJ_OBJECTS_ON_CLOSED_CHARTS, ? ? ? ? ? ?// Objects removed together with charts: ? ?}; //+------------------------------------------------------------------+