以CDialogBar为基类的对话框,我做了多个对话框,分别用多个菜单消息函数打开,问题是:

csdnftm 2003-08-21 08:41:39
以CDialogBar为基类的对话框,我做了多个对话框,分别用多个菜单消息函数打开,问题是
点击一个菜单命令后,并没有按关闭对话框按钮,而是再次点击另外一个菜单命令,这时有两个对话框框被打开。
我想让第二次点击菜单命令后能使先前打开的对话框关闭,问应该怎么做?
...全文
42 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqinggao 2003-08-24
  • 打赏
  • 举报
回复
汗颜!楼主,打扰了,不好意思
csdnftm 2003-08-24
  • 打赏
  • 举报
回复
请高手进来帮忙
fengqinggao 2003-08-23
  • 打赏
  • 举报
回复
呵呵,忘了,上面的语句赋值时估计要加上强制转换,即:
m_pDialogBar = (CDialogBar*)pDlgBar1;
fengqinggao 2003-08-23
  • 打赏
  • 举报
回复
我想啊,干脆用一个指针算了,即生成一个对话框后,用一个CDialogBar的指针(在头文件中定义,如m_pDialogBar)指向那个对话框的指针,如:
m_pDialogBar = pDlgBar1;

然后单击第二个菜单时,用m_pDialogBar->GetSafeHwnd()判断该窗口是否存在,如果存在,则m_pDialogBar->DestroyWindow(),然后又生成第二个窗口,并且重新对m_pDialogBar赋值,这样应该就没有问题了
xghost 2003-08-23
  • 打赏
  • 举报
回复
up
csdnftm 2003-08-23
  • 打赏
  • 举报
回复
按楼上的方法也没用,我在MSDN里没找到关闭CDialogBar的对话框,麻烦各位兄弟帮帮忙
wangweintk 2003-08-22
  • 打赏
  • 举报
回复
m_bar1.DestroyWindow();会出问题。

最好在每个对话框内定义一个自关闭函数public的

在其中加入
...::Close()
{
OnCancer();
}

然后在需是关闭时,调用它就可以了。
if(index==1)
m_bar1.Close();
else if(index==2)
m_bar2.Close();
...
csdnftm 2003-08-22
  • 打赏
  • 举报
回复
我按楼上的方法做了,但会有错误,会不会是关闭函数DestroyWindow()的问题
gzshd 2003-08-21
  • 打赏
  • 举报
回复
如楼上所说,定义一个来记录现在打开的是哪一个对话框,当打开下一个对话框时,先将前一个对话框关闭,代码如下;
先定义:int index=0;
在打开第n个对话框的代码里写:
if(index==1)
m_bar1.DestroyWindow();
else if(index==2)
m_bar2.DestroyWindow();
...
再创建第n个CDialogBar
再改变index的值:index=n;
zhouyong0371 2003-08-21
  • 打赏
  • 举报
回复
制作一个CDialogBar数组,保存对话框变量。
另外,有一个int变量iIndex,记录当前显示的对话框的数组下标。
点击了菜单以后,关闭iIndex对应的对话框,然后再打开新的对话框。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧