MFC或OCX添加自定义消息映射

背景

//在编写OCX控件时,在线程中直接调用FireEvent相关的函数,js页面无法正常响应,
//只能通过自定义消息映射,通过PostMessage发送消息,界面才能正常收到响应.
FireEvent(eventidTakepicEvent, EVENT_PARAM(VTS_I4), lResult);
PostMessage(WM_YOUR_EVENT, WPARAM, LPARAM);

实现

xxxxxCtrl.h

protected:	
//添加响应函数声明
afx_msg LRESULT onResult(WPARAM wParam, LPARAM lParam);

xxxxxxCtrl.cpp

#define WM_YOUR_EVENT  (WM_USER + 0x301)
// 消息映射
BEGIN_MESSAGE_MAP(CXXXXXCtrl, COleControl)
	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
	ON_MESSAGE(WM_YOUR_EVENT  , &CXXXXXCtrl::onResult)
END_MESSAGE_MAP()

//通过PostMessage发送消息
PostMessage(WM_YOUR_EVENT  , (WPARAM)result1, (LPARAM)result2 );

//响应函数实现
LRESULT CXXXXXCtrl::onResult(WPARAM wParam, LPARAM lParam)
{
    
    
	LONG lResult = (LONG)wParam;
	FireEvent(eventidTakepicEvent, EVENT_PARAM(VTS_I4), lResult);
	return S_OK;
}

//通过调用InvalidateControl()触发OnDraw函数
this->InvalidateControl();

猜你喜欢

转载自blog.csdn.net/idream68/article/details/118994069