读书人

MFC按钮隐藏有关问题

发布时间: 2013-09-06 10:17:17 作者: rapoo

MFC按钮隐藏问题。
我在一个对话框中设置了两个按钮(增加信息/修改信息),两个按钮通过domodal()调用同一个对话框,新对话框有两个按钮分别实现增加和修改信息功能,我想在增加信息按钮调用对话框时在新对话框只显示增加功能按钮,隐藏修改信息按钮。
部分代码如下:
void CCrimeDlg::OnAddButton()
{
// TODO: Add your control notification handler code here
CAddCrimeDlg AddCrimeDlg;
AddCrimeDlg.DoModal();
}
问题1.在CrimeDlg对话框调用AddCrimeDlg对话框,想隐藏IDC_MODIFY_BUTTON。
我在代码中添加AddCrimeDlg.GetDlgItem(IDC_BUTTON_UPDATE)->ShowWindow(SW_HIDE);
出现MFC按钮隐藏有关问题
问题2:怎么在调用模态对话框AddCrimeDlg后把CrimeDlg对话框消失或销毁。
[解决办法]
这个问题我之前也遇到过,好像是
AddCrimeDlg.GetDlgItem(IDC_BUTTON_UPDATE)->ShowWindow(SW_HIDE);
写的位置的问题,不记得是写在初始化里还是在调用
AddCrimeDlg.DoModal();
之前了,LZ可以自己试下。
调用模态对话框AddCrimeDlg后把CrimeDlg对话框消失或销毁的问题,如果之后还要返回CrimeDlg对话框的话,不建议吧CrimeDlg窗口销毁,在AddCrimeDlg窗口的初始化中获取CrimeDlg的窗口句柄,之后调用MFC的函数将其隐藏就可以了,在AddCrimeDlg销毁函数中再将其显示。
具体的函数LZ自己去查下MFC函数库吧
[解决办法]
DoModal()调用完后对话框已经销毁了,此时再访问可能就报异常了,可以在定义对话框变量后,改变其成员(比如定义一个bool,来表示add还是modify(true:add;false:modify)),在弹出对话框的初始化中根据这个bool的值来隐藏对应的按钮。
问题二:从程序设计上来说,建议此时不要隐藏主对话框,否则效果有点怪。
[解决办法]
1、在CAddCrimeDlg的OnInitDialog中调用GetDlgItem(IDC_BUTTON_UPDATE)->ShowWindow(SW_HIDE),或者就是给CAddCrimeDlg添加一个标记的变量,然后在CAddCrimeDlg的OnInitDialog中判断是否要隐藏控件
2、调用模态对话框AddCrimeDlg后调用EndDialog()方法

读书人网 >C++

热点推荐