MFC中使用PostMessage和SendMessage函数

MFC中,我在使用PostMessage和SendMessage函数时,如果是在Win7下运行的话是正常的,在XP下就出错了,是什么原因啊??求高手啊,5月13号今天下午... MFC中,我在使用PostMessage和SendMessage函数时,如果是在Win7下运行的话是正常的,在XP下就出错了,是什么原因啊??
求高手啊,5月13号今天下午毕设要实物检查了,问题是机房里电脑全是XP的,喵喵的,只能带笔记本去糊弄一下了

糊弄过去了,嘿嘿,不过还是想知道解决的办法,求高手啊~~
展开
 我来答
夏天出其不意b5
推荐于2016-02-07 · TA获得超过96.6万个赞
知道顶级答主
回答量:3.1万
采纳率:0%
帮助的人:1.9亿
展开全部
在MFC中使用PostMessage和SendMessage函数:

BOOL PostThreadMessage( UINT message , WPARAM wParam, LPARAM lParam );
Called to post a user-defined message to another CWinThread object
使用这个函数可以向一个CwinThread类型的类发送消息(即包括从CWindThrea中继承而来的类),使用方法如下:
CWinThread *pUIThread = AfxBeginThread(RUNTIME_CLASS(CProgress));//CProgress是从CWindThead中继承而来的类
CProgress *pUIThrd = (CProgress *)(pView->pUIThread); //pView是一个视类的实例,pUIThread是它的一个成员
pUIThrd->PostThreadMessage(WM_PROS,NULL,NULL); //向CProgress类发送WM_PROS消息,由该类中对应的消息响应函数进行处理

BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
Places a message in the window's message queue and then returns without waiting for the corresponding window to process the message
使用这个函数可以向一个CWnd类型的类发送你消息(即包括从CWnd类中继承而来的类),CView也是从中继承而来的,使用方法如下:
CWinThread *pThread = AfxBeginThread(Calculate,this); //this代表的是一个从CView类中继承而来的Demo4View类,Caculate是该线程的
//线程处理函数,把this传递给Caculate进行处理
CDemo4View *pView = (CDemo4View *)pParam;
pView->PostMessage(WM_RESULT,NULL,duration); //向这个CDemo4View类发送WM_RESULT消息,由该类对应的消息响应函数进行处理

LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
它与PostMessage的用法相同个,不同支持是它只有在对应的类处理完发送的消息后才返回,这样后面的代码可能要过一段时间才能执行;
而PostMessge是发送完消息就立即返回,不管消息处理完没有,这样后面的代码就可以立即执行。
百度网友e81bb48
2011-05-13 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:119万
展开全部
WIN7的API版本进行了优化,比xp更智能,我原来也遇到过类似的在win7下没问题在xp下就有问题的。不过要是有问题的话还是代码哪里有毛病,调试下看看吧。
更多追问追答
追问
调试的时候,PostMessage和SendMessage函数对应的消息函数正常运行了,但运行结束后,会连续提醒三次"内存不能为"read"",这是怎么回事啊
追答
应该是指针越界的问题,你仔细检查一下指针的使用情况。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司寇恨枫
2011-05-14 · TA获得超过392个赞
知道答主
回答量:653
采纳率:0%
帮助的人:0
展开全部
如果你只想向TextBox里写点东西的话WM_CHAR消息或直接SendKeys.Send就行了
private const int WM_CHAR = 0x0102;
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
SendMessage(this.textBox1.Handle, WM_CHAR, 65, 0);
SendKeys.Send("A");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chaidanna120
2011-05-12 · 超过19用户采纳过TA的回答
知道答主
回答量:169
采纳率:0%
帮助的人:60.2万
展开全部
Win7不兼容MFC
追问
我是编好的程序分别在XP 和Win7下运行的
追答
那不知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式