gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:13:38 24 4
gpt4 key购买 nike

我在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 的新手,我真的不知道如何解决这个问题。有人可以向我解释我必须在哪里做些什么来解决这个问题吗?

最佳答案

如果您需要有条件地为您的编辑框着色,请设置一个成员变量并在您的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) 如果验证返回 ok,记得将 m_bError 重置为 FALSE 并使编辑控件无效

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com