【问题标题】:How to suspend a close button functionality for a while?如何暂停关闭按钮功能一段时间?
【发布时间】: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


【解决方案1】:

您不能更改 OnBnClickedOK 函数的签名。调用它的 MFC 库代码没有添加额外参数的规定。

您还应该查看 if 语句中 = 和 == 之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多