OnCtrlColor不工作?

Isu*_*uru 1 mfc release-mode dialogbasedapp visual-c++ debug-mode

我使用以下重载方法在基于Visual C++ MFC对话框的应用程序中将列表框中的文本颜色更改为红色.当我在DEBUG模式下构建程序时,它完美地运行.但是当我使用RELEASE模式时,文本颜色不会改变.为什么这样,我怎么能克服这个问题?

谢谢!!

HBRUSH MyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  if(nCtlColor == CTLCOLOR_LISTBOX)
  {
     if(bChangeTextColor)
     {
       pDC->SetTextColor(RGB(255, 0, 0));
       return m_hRedBrush;
     }
  } 
  return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您必须在MESSAGE_MAP中声明

例如:

BEGIN_MESSAGE_MAP(CTrainMFCDlg, CDialog)
    ON_WM_SYSCOMMAND()    
    ON_WM_PAINT()    
    ON_WM_QUERYDRAGICON()    
    //}}AFX_MSG_MAP

    ON_WM_CTLCOLOR()  // your handle    
END_MESSAGE_MAP()
Run Code Online (Sandbox Code Playgroud)