OCX 控制元件主動傳送訊息給 MFC 視窗訊息
考慮到Ocx控制元件在某些情況下需要主動通知 MFC 視窗訊息,這就需要給Ocx控制元件新增事件訊息,以及在MFC視窗中進行事件訊息的響應。此過程可分兩步走:
1,Ocx 新增事件訊息
2,MFC對Ocx控制元件事件進行相應
1,Ocx 新增事件訊息
新增Ocx事件訊息可以通過,Ocx事件新增嚮導進行新增,也可以手動新增,本文講一下手動新增。
首先新增事件ID,如下圖所示:
這段程式碼在XXXCtrl.h標頭檔案中,本文新增“eventidNoifyMsg”值設定為1.(值可隨機設定)。
而後在需要傳送訊息的地方新增 FireEvent(DISPID dispid, BYTE* pbParams, ...),此函式的功能同SendMessage和PostMessage;
dispid ="本文新增的‘eventidNotifyMsg’" 事件ID
pbParam = EVENT_PARAM(VTS_BSTR) 引數型別 可以有多個
上圖是在AddFun函式中呼叫FireEvent函式,向MFC視窗傳送事件訊息.
訊息ID:eventidNofifyMsg = 1
訊息引數型別:VTS_BSTR
引數值:正在計算請耐心等待
這裡引數個數為一個,到這裡Ocx的事件就新增完了。
2,MFC對Ocx控制元件事件進行相應
本人的程式是基於MFC對話方塊的,需要在XXXDlg.h中新增如下程式碼:
呼叫DECLARE_EVENTSINK_MAP()巨集和申明Ocx事件訊息響應函式,void OnShowOcxMsg()。
而後在XXXDlg.cpp中新增事件對映(本人的是CTestOcxDlg.cpp)。如下圖:
其中ON_EVENT()中的第三個引數就是第一步中新增的事件ID eventidNotifyMsg = 1. OnShwoOcxMsg函式中的引數 lpStr用來接收Ocx控制元件傳遞過來的“正在計算請耐心等待”。此函式引數跟Ocx傳遞過來的訊息引數個數和型別一致
相關文章
- 訊息中介軟體—RocketMQ訊息傳送MQ
- 【RocketMQ】MQ訊息傳送MQ
- RocketMQ(八):訊息傳送MQ
- dotnet 後臺執行緒傳送 X11 視窗訊息執行緒
- MFC訊息對映
- 鴻蒙傳送訊息通知鴻蒙
- TNW-傳送模板訊息TNW
- 6-RocketMQ傳送訊息MQ
- RocketMQ(九):訊息傳送(續)MQ
- 千牛自動傳送訊息怎麼發?來試試UiBot千牛訊息傳送機器人UI機器人
- 排查MQ訊息傳送和接收MQ
- 小程式傳送訂閱訊息
- Kafka -- 訊息傳送儲存流程Kafka
- RocketMQ中Producer訊息的傳送MQ
- Runtime備忘-訊息傳送流程
- 快速向 Google Chat 傳送訊息Go
- RocketMQ -- 訊息傳送儲存流程MQ
- Python呼叫飛書傳送訊息Python
- 傳送不同型別的訊息型別
- 如何在linux中傳送訊息給別的控制檯Linux
- dotnet X11 視窗之間傳送滑鼠訊息 模擬滑鼠輸入
- (原創) odoo17中在訊息主題(mail.thread)中傳送訊息時,是否通知訊息作者進行控制OdooAIthread
- 用程式碼理解 ObjC 中的傳送訊息和訊息轉發OBJ
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- RocketMQ - 生產者訊息傳送流程MQ
- 傳送kafka訊息的shell指令碼Kafka指令碼
- 以事務方式傳送 Kafka 訊息Kafka
- 0x2_訊息的傳送
- WIN32傳送自定義訊息Win32
- django+小程式傳送模板訊息Django
- Android Handler 訊息傳送效能優化Android優化
- 分散式事務:訊息可靠傳送分散式
- e語言自動傳送訊息【win11】
- MFC DLL如何響應PreTranslateMessage訊息
- MFC學習(四) 訊息機制
- Spring Boot 整合 RabbitMQ 傳送延時訊息Spring BootMQ
- Pulsar訊息傳送、消費架構概述架構
- 一張圖進階 RocketMQ - 訊息傳送MQ