c++ - 如果我单击按钮,则调用 MFC 中的函数

标签 c++ function mfc call

我在MFC中做了一个函数。

HBRUSH NeuerEintrag::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    m_ErrorBrush = new CBrush(RGB(255, 130, 130));
    if ((CTLCOLOR_EDIT == nCtlColor) && (IDC_EDIT1 == pWnd->GetDlgCtrlID()))
    {
        pDC->SetBkColor(RGB(255, 130, 130));
        return (HBRUSH)(m_ErrorBrush->GetSafeHandle()); 
    }
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

每当我启动程序时,都会调用该函数。但我只想当我单击按钮时,该函数就会被调用。这是在另一个函数中,但在同一个类中:

else
{
    MessageBox (_T("Überprüfen Sie ihre Eingaben"));
    // <-- HERE MUST THE FUNCTION BE CALLED
}   

我是 MFC 新手,我真的不知道如何解决这个问题。有人可以向我解释一下,我必须在哪里以及做什么来解决这个问题吗?

最佳答案

如果您需要有条件地为编辑框着色,请设置一个成员变量并将其 checkin OnCtlColor() 中。 ,例如:

a) 在dialog.h 文件中

BOOL m_bError;

b) 在 NeuerEintrag::NeuerEintrag

m_bError = FALSE;

c) 在 MessageBox 之后:替换 // <-- HERE MUST THE FUNCTION BE CALLED通过

{   m_bError = TRUE;
    GetDlgItem(IDC_EDIT1)->Invalidate();
}

d) 在 OnCtlColor 函数中

HBRUSH NeuerEintrag::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{   m_ErrorBrush = new CBrush(RGB(255, 130, 130));
    if (CTLCOLOR_EDIT == nCtlColor && IDC_EDIT1 == pWnd->GetDlgCtrlID() && m_bError)
    {   pDC->SetBkColor(RGB(255, 130, 130));
        return (HBRUSH)(m_ErrorBrush->GetSafeHandle()); 
    }
    return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}

e) 请记住将 m_bError 重置为 FALSE,如果验证返回 ok,则使编辑控件无效

关于c++ - 如果我单击按钮,则调用 MFC 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19354353/

相关文章:

c++ - std::make_shared 需要默认构造函数是否有原因?

javascript - 使用 JavaScript 转到页面并自动执行该页面上的功能

c++ - inline 或 constexpr 函数的多个定义的含义

c# - COM 接口(interface)从 ROT 中消失

c++ - ATL on CUDA 出现编译错误

c++ - 多线程和 MFC

c++ - C/C++ 套接字编程 - 没有可用的源代码 "ntdll!KiFastSystemCallRet()"

c++ - 创建不带 WinMain 函数的 Win32 窗口

javascript - 等到前一个函数以 Angular 执行

c++ - #include 位于不同目录结构中的头文件