MFC中的加了this->ShowWindow(SW_HIDE);之前的对话框隐藏不了,是怎么回事?
2012-02-09 · 知道合伙人软件行家
gongxinheng
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:55
获赞数:380
6年游戏开发经验。曾在多个MMO PC游戏以及手游项目担任主程。 目前在美国华盛顿州立大学留学并参与研究项目
向TA提问 私信TA
关注
展开全部
要找到之前对话框的那个实例对象或指针,通过那个对象或指针调用ShowWindow(SW_HIDE),this->ShowWindow(SW_HIDE);只是隐藏当前调用函数所属对象
更多追问追答
追问
在哪能找到?具体说明
追答
跟踪代码堆栈,向上一级追溯,找到调用这个函数的变量,再搜索这个变量,找到这个变量定义的位置
例如,自己新建一个MFC工程
InitInstance里面会有
CMFCTestDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
这个dlg就是CMFCTestDlg这个对话框的实例对象了
展开全部
看了上面的追问和回答。你的程序应该是框架/文档/视图的结构。
你的问题是View类中使用this->ShowWindow(SW_HIDE);
你可以改为隐藏整个框架,代码改为:
在该.cpp文件的最上面使用#include "Mainfrm.h"
然后
void CMy4View::OnBnClickedButton1()
{
CMainFrame *pMainfr=(CMainFrame *)::AfxGetMainWnd();
pManfr->ShowWindow(SW_HIDE);
CMyNewDlg Dlg;
Dlg.DoModal();
}
你的问题是View类中使用this->ShowWindow(SW_HIDE);
你可以改为隐藏整个框架,代码改为:
在该.cpp文件的最上面使用#include "Mainfrm.h"
然后
void CMy4View::OnBnClickedButton1()
{
CMainFrame *pMainfr=(CMainFrame *)::AfxGetMainWnd();
pManfr->ShowWindow(SW_HIDE);
CMyNewDlg Dlg;
Dlg.DoModal();
}
追问
有错误
Error 1 error C2065: 'pManfr' : undeclared identifier c:\documents and settings\黎颖\my documents\visual studio 2008\projects\4\4\4view.cpp 89 4
Error 2 error C2227: left of '->ShowWindow' must point to class/struct/union/generic type c:\documents and settings\黎颖\my documents\visual studio 2008\projects\4\4\4view.cpp 89 4
怎么回事
追答
pManfr->ShowWindow(SW_HIDE);
pMainfr中间少了一个i,打字打错了。
来自:求助得到的回答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this 指针只是指向当前生成的对象,看你的程序是在view中调用的,所以This指向的是view对象,即view窗口。要想隐藏对话框窗口,那么就要找到需要隐藏的对话框窗口的指针。也可以不用,在对话框关连的类中调用函数就行了;
追问
需要隐藏的对话框窗口的指针在哪找到啊????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是在哪里调用的
更多追问追答
追问
void CMy4View::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
this->ShowWindow(SW_HIDE);
CMyNewDlg Dlg;
Dlg.DoModal();
}
我想让原来的对话框隐藏,单击后弹出另外一个对话框
追答
我是基于对话框的不知你是不是:
void CMy111Dlg::OnOK()
{
// TODO: Add extra validation here
this->ShowWindow(SW_HIDE);
CA a; //一个对话框对象
a.DoModal();
}
我运行了可以,你应该是CMy4View的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询