请教下,界面上有个按钮,删除自身后,再在主界面点击出错了,好像和消息有关,不知该如何处理方法1
代码:
按钮中的消息
::SendMessage(m_hWnd, WM_CLOSE, 0, 0);
::SendMessage(GetParent(), MSG_DELETEFILE, 0, (LPARAM)&bdData);主界面:MSG_DELETEFILE中的消息响应
因为是new出来的
delete(pData->pbtnDelete);
pData->pbtnDelete = NULL;方法2:
或者把按钮关闭销毁自身的消息放到主界面中效果依旧
if (pData->pbtnDelete->IsWindow())
::SendMessage(pData->pbtnDelete->m_hWnd, WM_CLOSE, 0, 0);
delete(pData->pbtnDelete);
pData->pbtnDelete = NULL;
报错信息提示
报错时停留代码位置:
if(!PreTranslateMessage(&m_msg))
{
::TranslateMessage(&m_msg);
::DispatchMessage(&m_msg);
} if(IsIdleMessage(&m_msg))
{
bDoIdle = TRUE;
nIdleCount = 0;
}
代码:
按钮中的消息
::SendMessage(m_hWnd, WM_CLOSE, 0, 0);
::SendMessage(GetParent(), MSG_DELETEFILE, 0, (LPARAM)&bdData);主界面:MSG_DELETEFILE中的消息响应
因为是new出来的
delete(pData->pbtnDelete);
pData->pbtnDelete = NULL;方法2:
或者把按钮关闭销毁自身的消息放到主界面中效果依旧
if (pData->pbtnDelete->IsWindow())
::SendMessage(pData->pbtnDelete->m_hWnd, WM_CLOSE, 0, 0);
delete(pData->pbtnDelete);
pData->pbtnDelete = NULL;
报错信息提示
报错时停留代码位置:
if(!PreTranslateMessage(&m_msg))
{
::TranslateMessage(&m_msg);
::DispatchMessage(&m_msg);
} if(IsIdleMessage(&m_msg))
{
bDoIdle = TRUE;
nIdleCount = 0;
}
解决方案 »
- vs06放置文件目录相对与vs08是那个文件夹呀????
- VC程序打包问题
- vc++巴特沃斯低通,高通滤波器
- vc6.0同一个工程在另一台机器上运行不了 提示Unhandled exception in *.exe (MFC420.DLL):0XC000005:Access Violation
- 如何在点击文件的右键中添加自己的应用程序,并获取文件的全名?
- 关于自定义线型的问题
- 创建的控件条为什么在文档视图区中看不到它?
- 极具难度的编译错误,Error executing ~vcecho!Creating
- 使用断言有什么用? 该怎么用?
- 如何监控读文件并找出错误所在
- MFC一个运行问题
- CFileDialog打开一个文件,然后将文件路径名称等信息存在数据库access里面。无法连接数据库
hide 为好
即 :pData->pbtnDelete 如果不为 0 // 因为 你已经:
delete(pData->pbtnDelete);
pData->pbtnDelete = NULL;
SendMessage 前 一定要 检测:
pData->pbtnDelete
delete btn;
btn = NULL;
我靠,这也行,换一下的确问题都没有了。那个发送消息不是也调用的这个方法吗?
微软知道,我不知道,他把代码都封起来了,只提供了接口。
只在最坏的情况下使用SendMessage(虽然接口函数内部都是调用的SendMessage)。