你在对话框的OnCtlColor中处理就行了。下面是具体的过程。 1、在对话框中定义一个私有变量CBrush brush; 2、在对话框的构造函数中加入 brush.CreateSolidBrush(RGB(255, 0, 0)); 3、在对话框的OnCtlColor中做如下处理 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here if (nCtlColor == CTLCOLOR_BTN ) if (pWnd = this->GetDlgItem(IDC_BUTTON)) return (HBRUSH)brush;
// TODO: Return a different brush if the default is not desired return hbr; 然后一切就OK了,其中IDC_BUTTON是一个按钮的ID。记得将Button的Owner Drawer style选上。
你在对话框的OnCtlColor中处理就行了。下面是具体的过程。
1、在对话框中定义一个私有变量CBrush brush;
2、在对话框的构造函数中加入
brush.CreateSolidBrush(RGB(255, 0, 0));
3、在对话框的OnCtlColor中做如下处理 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here
if (nCtlColor == CTLCOLOR_BTN )
if (pWnd = this->GetDlgItem(IDC_BUTTON))
return (HBRUSH)brush;
// TODO: Return a different brush if the default is not desired
return hbr;
然后一切就OK了,其中IDC_BUTTON是一个按钮的ID。记得将Button的Owner Drawer style选上。
我需要在这些参量更新的时候根据这些参量的值改变按钮的颜色。
我的程序在发现这些参量改变的时候会发送一条WM_PAINT消息给这个按钮,但这个按钮的颜色不会自动改变,要怎么办呢?