社区
Windows SDK/API
帖子详情
多线程像主窗体postmessage发送消息无响应问题
mengyq_82
2009-11-25 03:23:51
PostMessage(MainForm->edit[i]->Handle , WM_KEYDOWN, VK_RETURN, 0);
如果开启一个线程是成功,开启两个就不行了,请教下多线程如何跟主窗体通信
...全文
488
5
打赏
收藏
多线程像主窗体postmessage发送消息无响应问题
PostMessage(MainForm->edit[i]->Handle , WM_KEYDOWN, VK_RETURN, 0); 如果开启一个线程是成功,开启两个就不行了,请教下多线程如何跟主窗体通信
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
n27741
2010-03-01
打赏
举报
回复
DWORD WINAPI ThreadProc1(
LPVOID lpParameter
);
DWORD WINAPI ThreadProc2(
LPVOID lpParameter
);
DWORD WINAPI ThreadProc1(
LPVOID lpParameter
)
{
int i = 10;
while (i)
{
HWND hwndMain = (HWND)lpParameter ;
SendMessage(hwndMain,WM_CHAR,(WPARAM)'C' ,0);
i--;
}
return 0;
}
DWORD WINAPI ThreadProc2(
LPVOID lpParameter
)
{
int i = 10;
while (i)
{
HWND hwndMain = (HWND)lpParameter ;
SendMessage(hwndMain,WM_CHAR,(WPARAM)'1' ,0);
i--;
}
return 0;
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
this->WindowProc = SubClassWndProc;
hthread1 = CreateThread(NULL,0,ThreadProc1,LPVOID(this->Handle),0,NULL );
CloseHandle(hthread1);
hthread2 = CreateThread(NULL,0,ThreadProc2,LPVOID(this->Handle),0,NULL );
CloseHandle(hthread2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SubClassWndProc(Messages::TMessage &Message)
{
switch(Message.Msg)
{
case WM_CHAR:
this->mmo1->Lines->Add(Message.WParam);
break;
}
this->WndProc(Message);
}
bcb 6 下测试通过,2个线程向一个Form1 SendMessage
yize.link
2009-12-15
打赏
举报
回复
这个很简单,你建立线程的时候没有把主窗口的句柄传入线程。
LPVOID handle;
handle = m_hWnd;
例如启动线程的时候,把handle传入线程
thader(LPVOID handle)
线程接收到后。
template engin = (myengin*)handle;
这个时候,线程里面的 engin 就会变成你主窗口的句柄。
这时候你要干什么都可以了。
如果要关闭程序,最好是发送信息给出窗口,让主窗口来关闭。
例如 ::postmessage(engin->m_hWnd,WM_EXIT);
mengyq_82
2009-11-26
打赏
举报
回复
试了,SendMessage也不行
小笨象
2009-11-25
打赏
举报
回复
不能用postmessage,容易丢失。
用sendmessage或者共享内存。
VC++常用的共用函数100多页
◆如何使用
postmessage
来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的...
VC++常用功能实例
◆如何使用
postmessage
来异步触发某事件◆ 21 ◆如何使用Sendmessage来异步触发某事件◆ 22 ◆如何修改父类的相关控件属性◆ 22 ◆如何在程序中得到控件的名◆ 22 ◆如何控制菜单的事件程序◆ 22 ◆如何使用控件中的...
易语言程序免安装版下载
支持“链接后动作(post_link_action)”(参见tools\link.ini中注释) 4. 重新整理所有官方支持库的静态库,有望彻底解决链接时可能出现的符号冲突 5. 全面取消静态编译中的人为功能限制(此前有最多5个支持库同时...
MFC关于自定义
消息
(线程给
主
窗口发
消息
)(
主
窗口给线程发
消息
)实例
老听公司的老哥们说MFC基于
消息
机制什么的巴拉巴拉一大堆,实际上自己并没有真真用过,每次看讲解什么的也是一知半懂,像我这种半路出家的,不遇到实际
问题
根本就搞不懂.由于目前做到公司的项目,按照需求,需要用到
消息
...
MFC线程中向
主
窗口
发送
消息
来操作控件
MFC线程中向
主
窗口
发送
消息
来操作控件 1.在头文件stdafx.h中添加一个自定义
消息
宏: #define WM_USER_MSG_HDL (WM_USER + 100) //100以上最安全 2.在增加新
消息
的窗口或对话框类头文件中增加一个回调函数声明,注意...
Windows SDK/API
1,221
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章