ocx手动添加自定义消息
接上篇介绍的ocx手动添加事件,下面介绍添加自定义消息的方式
添加自定义消息:
.h:
1,增加自定义消息ID
.cpp:
1, 在消息映射节点增加消息映射的宏
BEGIN_MESSAGE_MAP(CocxCtrl, COleControl)
//{{AFX_MSG_MAP(CocxCtrl)
// NOTE - ClassWizard will add and remove message map entries
// DO NOT EDIT what you see in these blocks of generated code !
ON_MESSAGE(WM_ON_YBINIT, OnSyybInit)
//}}AFX_MSG_MAP
2, 对消息处理函数进行实现
void CocxCtrl::OnSyybInit(WPARAM wParam, LPARAM lParam)
{
string* pStr = (string*)lParam;
if (pStr != NULL)
{
this->FireOnYbInit((*pStr).c_str());
delete pStr;
}
}
unsigned int WINAPI CocxCtrl::YbInitThread(LPVOID lpParam)
{
CocxCtrl* pOnwer = (CocxCtrl*)lpParam;
char szErrMsg[1536], szRet[50];
memset(szErrMsg,0,sizeof(szErrMsg));
memset(szRet,0,sizeof(szRet));
sprintf(szRet,"%d", YB::instance()->Init(szErrMsg));
map<string, string> result;
result.insert(map<string, string>::value_type("FunRet", szRet));
result.insert(map<string, string>::value_type("FunMsg", szErrMsg));
string* pStr = new string(PackJsonStr(result));
pOnwer->PostMessage(WM_ON_YBINIT, 0, (LPARAM)pStr);
{
Lock g(pOnwer->m_asny_shyb);
pOnwer->m_asny_shyb_invoked = false;
}
_endthreadex(0);
return 0;
}
short CocxCtrl::YbInit(LPCTSTR pInitInfo)
{
Lock g(m_asny_shyb);
if(m_asny_shyb_invoked)
{
return -2;
}