MFC中的加了this->ShowWindow(SW_HIDE);之前的对话框隐藏不了,是怎么回事?

 我来答
gongxinheng
2012-02-09 · 知道合伙人软件行家
gongxinheng
知道合伙人软件行家
采纳数: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这个对话框的实例对象了
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
weiyinwu
2012-02-09 · TA获得超过1540个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:1135万
展开全部
看了上面的追问和回答。你的程序应该是框架/文档/视图的结构。
你的问题是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,打字打错了。
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞天0407
2012-02-09 · 超过33用户采纳过TA的回答
知道答主
回答量:230
采纳率:0%
帮助的人:82.2万
展开全部
this 指针只是指向当前生成的对象,看你的程序是在view中调用的,所以This指向的是view对象,即view窗口。要想隐藏对话框窗口,那么就要找到需要隐藏的对话框窗口的指针。也可以不用,在对话框关连的类中调用函数就行了;
追问
需要隐藏的对话框窗口的指针在哪找到啊????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MFC问题
2012-02-09 · TA获得超过101个赞
知道答主
回答量:118
采纳率:0%
帮助的人:112万
展开全部
你是在哪里调用的
更多追问追答
追问
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的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式