如果要改变对话框内的编辑框的颜色,则可以按如下步骤进行。
1、在对话框的消息处理函数里响应WM_CTLCOLOREDIT消息:
case WM_CTLCOLOREDIT:
SetTextColor ((HDC)wParam, iTextColor);//改变前景色
SetBkColor((HDC)wParam, iBackColor);//改变字符背景色
return (int)CreateSolidBrush(iBackColor);
该消息的参数wParam是编辑框的ID(如果有多个编辑框则要判断一下),lParam是编辑框的句柄(这里用不上)。注意这里的返回值必须你要设置背景颜色的刷子的句柄,然后系统使用该刷子重画编辑框的背景,达到改变背景颜色的目的。
2、每当要改变编辑框颜色时,首先将前景色和背景色分别存放到静态变量iTextColor和iBackColor内,然后调用
InvalidateRect (GetDlgItem (hDlg, IDC_EDIT1), NULL, TRUE);
这里IDC_EDIT1是编辑框的ID,要求编辑框更新自己的前景和背景。如果缺少这一步则编辑框不会重画背景。比如:
case IDC_RED1:
iTextColor = RGB(255,0,0);
CheckRadioButton (hDlg, IDC_RED1, IDC_BLACK1, IDC_RED1);
InvalidateRect (GetDlgItem (hDlg, IDC_EDIT1), NULL, TRUE);
return TRUE;
其中IDC_RED1是供用户选择前景色的单选按钮的ID。
以上方法由本人试验总结,已在VC6中通过。