社区
ATL
帖子详情
如何在组件中使用自定义消息?
0313700000
2003-12-12 11:31:50
如何在组件中使用自定义消息?
...全文
125
10
打赏
收藏
如何在组件中使用自定义消息?
如何在组件中使用自定义消息?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
0313700000
2003-12-12
打赏
举报
回复
我的问题描述如下
我在我的atl复合控件中添加了一个处理socket接受数据的线程,当解析了消息之后,我要去刷新ie上相应的编辑框,但我发现在线程中使用这样的代码
CComPtr<IOleContainer> spIE;
m_spClientSite->GetContainer(&spIE);
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> spDoc(spIE);
CComPtr<IHTMLElement> sp;
HRESULT hr;
if(!spDoc)
{
return S_FALSE;
}
取得spDoc始终失败,在线程外没有问题,就想到了自定义消息,如下添加
#define WM_MSG WM_USER+100
BEGIN_MSG_MAP(CSocketCtrl)
MESSAGE_HANDLER(WM_MSG, OnMyMessage)
END_MSG_MAP()
LRESULT OnMyMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
MessageBox("123","",1);
return 0;
}
这样编译通过,可是我不知道如何在线程中发送消息。使用sendmessage报错
另外:是不是再线程中无法得到IHTMLDocument2指针,如果可以,要如何写,很急,谢谢
0313700000
2003-12-12
打赏
举报
回复
??/???/???
0313700000
2003-12-12
打赏
举报
回复
使用sendmessage不可以,后来我试了postmessage就没了问题还是感谢您的帮助,谢谢
0313700000
2003-12-12
打赏
举报
回复
CComPtr<IOleContainer> spIE;我定义为了组件类的一个变量,
在初始化代码中
HRESULT hr=m_spClientSite->GetContainer(&spIE);
if(FAILED(hr))
{
::MessageBox(NULL,"spIE faild","",1);
}
else
::MessageBox(NULL,"spIE succ","",1);
}
然后定义赋值函数
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> spDoc(spIE);
if(spDoc)
{
::MessageBox(NULL,"spDoc succ","",1);
CComPtr<IHTMLElement> sp;
HRESULT hr=GetHTMLElement(OLESTR("Log1"),&sp);
if(SUCCEEDED(hr))
{
::MessageBox(NULL,"get log1 element succ","",1);
}
else
{
::MessageBox(NULL,"get log1 element faild","",1);
return ;
}
CComVariant a("111");
hr=sp->put_innerText(a.bstrVal);
if(SUCCEEDED(hr))
{
::MessageBox(NULL,"put_innerText succ","",1);
}
else
{
::MessageBox(NULL,"put_innerText faild","",1);
}
reutrn;
}
else
{::MessageBox(NULL,"spDoc faild","",1);}
然后在线程中调用该函数,直到hr=sp->put_innerText(a.bstrVal);所有的操作都成功,但是到了这里就失败了,真是想不到方法了
0313700000
2003-12-12
打赏
举报
回复
但是问题就在于,我使用了SendMessage发送消息,可是主线程的消息接受函数并没有被触发
SendMessage需要一个窗口句柄,可是我怎么得到呢?如果可以,我到愿意把我的代码发给您让您给看下
蒋晟
2003-12-12
打赏
举报
回复
你需要用CoInitializeEx初始化COM才可以跨线程使用COM对象。另外,在线程中可以用SendMessage发送消息到主线程执行代码。
0313700000
2003-12-12
打赏
举报
回复
m_spClientSite->GetContainer(&spIE);我实在线程中取得IE指针出错的
0313700000
2003-12-12
打赏
举报
回复
to Developerljm(飞车) (
您说的参数太多是什么含义?
0313700000
2003-12-12
打赏
举报
回复
::SendMessage(pCtrl->m_hWnd,WM_MSG,0,0);
我再线程中使用上面代码。执行时候没有问题,可并没有触发我的消息,
Developerljm
2003-12-12
打赏
举报
回复
参数太多了,BOOL& bHandled
qml
自定义
消息
框_Qml
自定义
组件
的
使用
Component是可重用的、封装的、具有定义良好的接口的QML类型。
组件
通常由
组件
文件定义,即.qml文件。
组件
类型本质上允许在QML文件
中
内联定义QML
组件
,而不是作为单独的QML文件。这对于在QML文件
中
重用小
组件
或定义逻辑上属于文件
中
其它QML
组件
的
组件
可能很有用。1. 在单独文件
中
定义Component,文件名即是
组件
名称,且首字母必须为大写,例如创建BusyIndicator.qml文...
扩展
自定义
mq
组件
,
使用
rabbitmq_delayed_message_exchange延迟
组件
,完善
消息
延迟
消息
精度问题
最近在项目
中
发现
消息
的延迟消费是通过redis的过期
消息
监听,存在很大的安全问题,由于服务的宕机或其他问题会导致
消息
的丢失,本想系采用延迟队列和死信队列完成
消息
的延迟消费,但这种方案存在一定的局限性,rabbitmq官方给我提供了用于解决
消息
阻塞问题,本文重点介绍基于
自定义
springboot
组件
扩展mq实现延迟
消息
的消费问题.
自定义
mq
组件
扩展可以参考笔者的这篇文章。
基于EventListener
自定义
消息
组件
-Android与UniApp互发
消息
,不
使用
UniJSCallback回调
Android与UniApp互发
消息
通信
vue入门学习知识要点总结(七),Vue在脚手架的
使用
,
组件
自定义
事件、全局事件总线、
消息
订阅与发布、nextTick
Vue学习总结第七篇博文,主要关于在脚手架开发时的
使用
与基本理解,主要有
组件
的
自定义
事件、全局事件总线、
消息
订阅与发布、nextTick
组件
、创建Vue脚手架、render函数、ref配置、mixin混入、scope样式、TodoList案例、
组件
的
自定义
事件、全局事件总线、
消息
订阅与发布、过度与动画——
使用
Vue 脚手架
组件
、创建Vue脚手架、render函数、ref配置、mixin混入、scope样式、TodoList案例、
组件
的
自定义
事件、全局事件总线、
消息
订阅与发布、nextTick、过度与动画——
使用
Vue 脚手架
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章