【发布时间】:2015-07-06 14:29:10
【问题描述】:
我正在尝试找到一种方法来禁用我想要的关闭按钮的功能。通过使用 MFC 库,我首先定义了一个对话框窗口和一个考虑关闭对话框的按钮,代码如下:
void CMyDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
}
我尝试使用 TRUE 和 FALSE 两个统计信息定义一个布尔标志,如下所示:
void CMyDlg::OnBnClickedOk(bool Flag)
{
If(Flage == TRUE){
// TODO: Add your control notification handler code here
CDialog::OnOK();
}
}
在 Flage= TRUE 调用之后,该按钮工作,当这个 Flage= FALSE 时,该按钮被禁用直到某个时间值。由于参数不兼容,编译器给出语法错误;
ON_BN_CLICKED(IDOK, &MyDlg::OnBnClickedOk(bool Flag))
对于启用和禁用此按钮,首先包含以下代码:
GetDlgItem(IDOK)->EnableWindow(TRUE);
效果很好,但是这种方法的问题是在按钮上绘制的位图图像消失了
编辑:
在 .rc 文件中,按钮的代码行如下:
PUSHBUTTON "",IDOK,634,1,25,22,BS_BITMAP | BS_CENTER | BS_VCENTER
IDB_BITMAP1 BITMAP "D:\\Project\\Close.bmp"
【问题讨论】:
-
您不需要在 button clicked 处理程序中实现逻辑。禁用控件时,它不会生成任何输入。调用
EnableWindow就足够了。 -
是的,
EnableWindow就足够了,但问题是删除了分配给此按钮的位图图像,这对于设计专业界面是不可接受的。 -
@Jessica 请同时显示已启用按钮的快照以及包含按钮定义的 .rc 文件的帖子和摘录。
-
@Jessica 除了
bool Flag之外,我看不出你的代码有什么问题。我建议从头开始一个虚拟项目(这就是我所做的)。这个虚拟项目应该可以在这里工作。然后你看看你的项目和虚拟项目之间可能有什么不同。 -
可能是位图,尝试在实际项目中使用虚拟项目中的位图,反之,看看会发生什么。这可能会给你一些进一步的想法。
标签: c++ visual-c++ mfc