本线程或线程间传递消息出错,求解!
时间:2011-12-19
来源:互联网
int CSmsDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
BOOL bRet = PostMessage(WM_COMMSGRX, 1, 2);
LPMSG lpMsg;
HWND hWnd = AfxGetMainWnd()->m_hWnd;
BOOL ibt = GetMessage(lpMsg, hWnd, 0, WM_COMMSGRX+1);
.....
}
我想先测试下消息发送的情况,但程序会出现“指令引用的内存不能为“read””的错误。debug发现是由GetMessage引起的。
注释掉前面出错的语句,然后在另一个线程中,我写了以下的语句:
pWnd = AfxGetApp()->GetMainWnd();
hWnd = pWnd->m_hWnd;
BOOL bRet = PostMessage(hWnd,WM_COMMSGRX, (unsigned int)str, wCount);
bRet的值为TRUE,但主线程却收不到;
若将上面的那句话改为
idThreadMain = GetWindowThreadProcessId(hWnd,lpdwsProcessId);
PostThreadMessage(idThreadMain, WM_COMMSGRX, (unsigned int)str, wCount);
则GetWindowThreadProcessId()函数将导致出现unhandled exception ...USER32.dll...,程序运行出错中止。
在网上搜了下,别人的想法是指针访问出错了,是不是这还是在窗口创建阶段导致的,但是获得主窗口的句柄不为NULL啊。求解!
作者: jamiedame 发布时间: 2011-12-19
作者: VisualEleven 发布时间: 2011-12-19
作者: jamiedame 发布时间: 2011-12-19
应该是没有问题的。
你下面的BOOL ibt = GetMessage(lpMsg, hWnd, 0, WM_COMMSGRX+1);
这句是干嘛????
作者: VisualEleven 发布时间: 2011-12-19
作者: jamiedame 发布时间: 2011-12-19
MSG msg;
BOOL bRet = GetMessage(&msg, NULL, 0, 0);
if(bRet)
{
AfxMessageBox(_T("OLL"));
}
作者: VisualEleven 发布时间: 2011-12-19
作者: jamiedame 发布时间: 2011-12-19
pWnd = AfxGetApp()->GetMainWnd();
hWnd = pWnd->m_hWnd;
BOOL bRet = PostMessage(hWnd,WM_COMMSGRX, (unsigned int)str, wCount);
bRet的值为TRUE,但主线程却收不到;
若将上面的那句话改为
idThreadMain = GetWindowThreadProcessId(hWnd,lpdwsProcessId);
PostThreadMessage(idThreadMain, WM_COMMSGRX, (unsigned int)str, wCount);
则GetWindowThreadProcessId()函数将导致出现unhandled exception ...USER32.dll...,程序运行出错中止。
这又是什么原因呢?
作者: jamiedame 发布时间: 2011-12-19
作者: feizhuangxuan 发布时间: 2011-12-20
LPMSG lpMsg, // address of structure with message
HWND hWnd, // handle of window
UINT wMsgFilterMin, // first message
UINT wMsgFilterMax // last message
);
Parameters
lpMsg
Pointer to an MSG structure that receives message information from the thread's message queue.
我是照着MSDN里的解释打的,难道官方文档也有错?
作者: jamiedame 发布时间: 2011-12-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28