我设计一个非模式对话框,使用视图——文档结构。我在视图CMyView里设一成员变量CMyDialog *pDlg 并让它在没有对话框时为NULL。在显示对话框时,动态分配一个对话框。如果pDlg不为NULL,则直接把焦点给这个对话框。
if(m_pDlg != NULL)
m_pDlg->SetFocus();
else
{
m_pDlg = new CMyDialog;
m_pDlg->Create(IDD_OPERATE);
m_pDlg->ShowWindow(SW_SHOW);
}
取消对话框时,我让对话框自己删除自己的资源,并送一个自定义消息WM_USER_DIALOG_DESTROY给CMyFrameWnd类,然后让 CMyFrameWnd类中这个消息的处理函数把这个消息发给CMyView类,再由CMyView类的OnDialogDestroy给m_pDlg赋成NULL。
LRESULT CMyFrameWnd::OnDialogDestroy(WPARAM wParam, LPARAM lParam)
{
GetActiveView()->SendMessage(wParam, lParam);
return 0;}可问题是这个消息传到CMyFrameWnd类后,CMyView无法接受到转发的消息。m_pDlg无法变回NULL。但同时,对话框上有几个另外的按键,他们的功能也是像上面那样实现的(CMyDialog->CMyFrameWnd->CMyView)且都很正常。请问为什么?如要完整的源代码,请写下你的邮箱地址。
if(m_pDlg != NULL)
m_pDlg->SetFocus();
else
{
m_pDlg = new CMyDialog;
m_pDlg->Create(IDD_OPERATE);
m_pDlg->ShowWindow(SW_SHOW);
}
取消对话框时,我让对话框自己删除自己的资源,并送一个自定义消息WM_USER_DIALOG_DESTROY给CMyFrameWnd类,然后让 CMyFrameWnd类中这个消息的处理函数把这个消息发给CMyView类,再由CMyView类的OnDialogDestroy给m_pDlg赋成NULL。
LRESULT CMyFrameWnd::OnDialogDestroy(WPARAM wParam, LPARAM lParam)
{
GetActiveView()->SendMessage(wParam, lParam);
return 0;}可问题是这个消息传到CMyFrameWnd类后,CMyView无法接受到转发的消息。m_pDlg无法变回NULL。但同时,对话框上有几个另外的按键,他们的功能也是像上面那样实现的(CMyDialog->CMyFrameWnd->CMyView)且都很正常。请问为什么?如要完整的源代码,请写下你的邮箱地址。
解决方案 »
- 用这最后的两分在问个问题吧
- 如何中止一次中止该进行以及该进程的所有子进程
- odbc + access 用管理员权限打不开数据库?
- 请求DLL编译错误的援助!感谢各位兄弟姐妹的光临!
- 关于做语音网关,有没有人知道这样一块内容,有哪些东西要准备!
- 请问:关于对话框里的图片控件的问题
- 急需:EXECL的格式读写源代码,送高分
- 求推荐个操作excel的项目
- 100分求教!怎么让我的程序登陆后其他控件才开始响应呢?
- 连接SQL Server 数据库 问题
- 300分:我开发的控件打成一个cab包放在网页上但每次当服务器端更新版本后客护端没有更新还是老的版本是否我的inf文件写错还是网页上写错了
- 已经得到了HBITMAP,如果才能把HBITMAP指向的位图转换成COPY到缓冲区里?
{
GetActiveView()->SendMessage(wParam, lParam);
//这里怎么没有要发送的消息名? 没写应该编译不过去啊 return 0;}
需要三个参数 消息ID;wParam;lParam;上贴我说编译不过去其实能过去 忘了它后两个参数默认为0了 你这样写 等于没传消息ID 只传了消息的wparam和lparam .wParam被当作消息ID 而lParam被当作wParam了
不知道你要向view发送什么消息 如果还是那个自定义的消息 改成
(CMyView*) GetActiveView->SendMessasge(WM_USER_DIALOG_DESTROY,wParam,lParam);