VC++中,mfc 按下按钮 文本框变色 怎么搞?详细点进来
MFC下有编辑框A,按钮B,按钮C,怎么写程序可以按下B后使A的背景变白色,按下C后变成红色?最好能写一个MFC程序给我,谢谢!...
MFC下有编辑框A,按钮B,按钮C,怎么写程序可以按下B后使A的背景变白色,按下C后变成红色?
最好能写一个MFC程序给我,谢谢! 展开
最好能写一个MFC程序给我,谢谢! 展开
1个回答
展开全部
一。首先,利用Class Wizard为WM_CTLCOLOR 消息构造相应的消息映射,将得到以下的消息处理函数:
//说明,WM_CTLCOLOR 是从CWnd就有的,所以直接从CWnd或是CDialogue类(其实也是从CWnd中继承来的)继承的都可以
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
二。在MyDlg.h头文件中增加如下的函数说明:
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
....
DECLARE_MESSAGE_MAP()
protected:
static HBRUSH m_BrushBack;
三。在MyDlg.cpp文件中初始化静态变量:
HBRUSH CMyDlg::m_BrushBack = HBRUSH(RGB(235,235,235));
四。在MyDlg.cpp文件中增加如下的消息映射:
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_WM_CTLCOLOR() //增加此条目
....
再增加如下的消息处理函数:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
//获得控件
CEdit * pEdit = (CEdit *)GetDlgItem(IDC_MYEDIT); //此处的IDC_MYEDIT即为CMyDlg窗口中要设置的CEdit控件的ID
if(pEdit->GetSafeHwnd() == pWnd->GetSafeHwnd())
{
// 返回设置好的刷子
return m_BrushgRA;
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询