也问个关于Atl事件触发的问题

TomHeJerry TomHeJerry 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我使用ATL制作不带界面的ActiveX dll时,在其中增加了连接点对象。现在的问题是。我需要在自定义的类中触发该事件。请问大虾们,我该怎么做呀。


查了些资料。一般都是使用PostMessage的方法。但因为我是菜鸟。还请大虾们给点代码参看参考哦。比如我怎么使用PostMessage方法。使用后,调用GetMessage该怎么调用。

下面是我的代码,麻烦大家给看看。

//这是在自己定义的类中的处理方法。
void CNumberMethod::Add( long a, long b )
{
long n = a + b;
UserStruct *UserData = new UserStruct();

UserData->nResult = n;
UserData->userType = 1;
::PostMessage( NULL , (UINT)UserData, NULL, NULL );
}

//下面是一个线程中执行的函数。不断查询系统消息。
DWORD CRaiseEvent::FireEvent()
{
LPMSG msg;
UserStruct *UserData;

try
{
while( TRUE )
{
if( ::GetMessage( msg, NULL, NULL, NULL ) )
{
UserData = (UserStruct *)msg->message;
::MessageBox( NULL, _T(""), _T(""), NULL );
Fire_AddResult(UserData->nResult );
}
}
}
catch( ... )
{
return -1;
}
return 0;
}


当执行到if( ::GetMessage( msg, NULL, NULL, NULL ) )这里时,就没有反应了。在客户端调用也没有触发事件。请问为什么呀
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
TomHeJerry
ATL 3,248 成员 48,530 内容