:-----------CWnd->SendMessage(WM_COMMAND,ID**,(long)num);为何会出现指向内存错 第三个参数的类型应该为WPARAM。可采用如下:pWnd->SendMessage(WM_COMMAND,IDX,(WPARAM)num); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参数是没有问题的,和msdn上写的一个样,所以也是我的纳闷的地方啊。 你看看CWnd *pWnd=AfxGetMainWnd();ASSERT(pWnd);//看看这一行会不会通过 看看处理消息的地方,因为SendMessage()一定要返回后才能往下执行.或者改用PostMessage()试试, debug在SendMessage这里就打住了而且ASSERT(pWnd)可以通过 更正:ASSERT(pWnd)不能通过,这是什么原因?小弟才疏学浅,唉~~~ 是基于对话框的程序吗?是在线程里SENDMESSAGE吗? 大概结构是CTreeView::OnSelChanged(~~~){ CWnd* pWnd=AfxGetMainWnd(); pWnd->SendMessage(WM_COMMAND,IDX,(long)num); . . . if( ...){ pWnd->SendMessage(...); return;}; if(...){ pWnd->SendMessage(...); return;};总之有很多if语句,不过前面几个SendMessage()都可以成功。到了其中一个就不可以了。 你的num原来是什么类型的,为什么要强制转换成long呢?我的意见是你强制转换成WPARAM。 哈哈,我知道了。希望大家给与评论。SendMessage必须要等处理结束后才能返回,如果处理不正确就可能导致错误,看起来象消息发送失败。而且带两个参数的WM_COMMAND必须通过重载CWnd::OnCommand()才能实现影射。否则最后一个参数必须是0(默认)才不会出错。不知道我的理解对否,希望大家给予评论 如何获取指针知向的值呢? 求GIF图片的生成方法 关于C++ 求助,窗口拉动时界面产闪烁~~~ 如何判断treeview中,某个节点是否处展开状态。 关于内存泄露的问题,高手帮忙看看! 如何获得一个进程的所有子进程ID? 如何使ListCtrl的滚动条始终在最下面 Microsoft Visual Studio 2005 能在linux下运行么? 一个workspace里面两个project的问题? 如何获得汉字的区位码?急!急!急! 帮帮我!多谢了!
CWnd *pWnd=AfxGetMainWnd();
ASSERT(pWnd);//看看这一行会不会通过
或者改用PostMessage()试试,
而且ASSERT(pWnd)可以通过
ASSERT(pWnd)不能通过,这是什么原因?
小弟才疏学浅,唉~~~
CTreeView::OnSelChanged(~~~)
{
CWnd* pWnd=AfxGetMainWnd();
pWnd->SendMessage(WM_COMMAND,IDX,(long)num);
.
.
.
if( ...)
{
pWnd->SendMessage(...);
return;
};
if(...)
{
pWnd->SendMessage(...);
return;
};总之有很多if语句,不过前面几个SendMessage()都可以成功。
到了其中一个就不可以了。
SendMessage必须要等处理结束后才能返回,如果处理不正确就可能导致错误,看起来象消息发送失败。
而且带两个参数的WM_COMMAND必须通过重载CWnd::OnCommand()才能实现影射。否则最后一个参数必须是0(默认)才不会出错。
不知道我的理解对否,希望大家给予评论