背景
//在编写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();