我现在工程里有多个对话框,对话框上又有好多EDIT控件,我想改变EDIT控件的默认显示风格,比如背景,文本颜色,字体大小等,怎样实现比较简单?
首先我自己写了一个类CMyEdit,基类是CEdit,比如改变颜色在类中响应了=WM_CTLCOLOR消息。这样每一个Edit控件都要利用ClassWizard关联一个CMyEdit对象变量,有好几百个Edit控件,工作量太大。我是想能不能使控件不关联变量就能够改变它的默认显示呢?
请高手帮忙,万分感谢!
首先我自己写了一个类CMyEdit,基类是CEdit,比如改变颜色在类中响应了=WM_CTLCOLOR消息。这样每一个Edit控件都要利用ClassWizard关联一个CMyEdit对象变量,有好几百个Edit控件,工作量太大。我是想能不能使控件不关联变量就能够改变它的默认显示呢?
请高手帮忙,万分感谢!
{
case CTLCOLOR_STATIC: //对所有静态文本控件的设置
break;
case CTLCOLOR_EDIT: //对所有编辑框的设置
break;
default:;
}
还是在外面设置字体吧 GetDlgItem(IDC_EDIT)->SetFont(), 将ID设成连续的,for循环//最好还是继承CEdit
2、您说的“最好还是继承CEdit”,我不是还要为每一个edit控件关联变量吗?
请问lfchen大师还有别的方法吗?
{
LOGFONT lf;
if(pWnd->GetFont()->GetLogFont(&lf))
{
if(lf.lfHeight != -32 || lf.lfWeight != FW_NORMAL)
{
pWnd->SetFont(&font);
}
}
pDC->SelectObject(&font);
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,0,0));
return CreateSolidBrush(RGB(0,0,0));
}
//勉强能用
//lfheight 正值和负值的转换,参考http://msdn.microsoft.com/en-us/library/ms901140.aspx
//里面提到lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
//不过我没试过。