很奇怪呀,应该release下的是最完善的版本呀,怎么反过来了?
解决方案 »
- 对话框里Picture控件显示的图片被弹出的对话框挡住后不能恢复
- 请教高手:关于对话框
- 如何让Acitvex控件可以读写本地文件系统?
- 改变树控件节点之间的距离?
- CAsyncSocket::OnReceive()函数的阻塞问题,请高手指点.
- 我想靠微软的VC++,只有c没有c++基础,不知该如何学习,上海地区的好培训机构(正规)介绍一下
- VC2003中 MFC的属性窗口中属性栏不见了
- #include <fstream.h>问题求解?
- 用vc实现创建VBA宏指定快捷键间接实现屏蔽word快捷键功能
- 锁住你的键盘和鼠标!!
- 怎么把无标题栏对话框最小化到任务栏
- 【100分】关于MENU菜单的消息映射问题。请指点
xx(WPARAM, LPARAM);如果自定义消息函数中这两个参数不加的话,在debug版中没问题,可到了release版中就会出错
最终在高手的指点下找出来了,
原程序大意:
CString str="this is test";
GetActiveView()->SendMessage(WM_MYINFO,(WPARAM )&str);
......
MyView.cpp
用函数test响应WM_MYINFO消息
void MyView::Test(WPARAM wParam)
{
CString *pStr=(CString *)wParam;
MessageBox(*pStr);
}
.....
程序在98下无任何问题,在2000下Release下出错,因为WPARAM是一个WORD,而指针是一个LONG,所以就为越界访问错误(不知这种说法是否准确),正确的做法是用LPARAM传递指针参数,如:
CString str="this is test";
GetActiveView()->SendMessage(WM_MYINFO,NULL,(LPARAM )&str);
......
MyView.cpp
用函数test响应WM_MYINFO消息
void MyView::Test(WPARAM /*wParam*/,LPARAM lParam)
{
CString *pStr=(CString *)lParam;
MessageBox(*pStr);
}