|
很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成!
< >WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下:</P>
< >1.首先在自己需要设置界面的对话框上点击右键-->建立类向导-->加入WM_CTLCOLOR消息-->自动生成OnCtlColor()函数,此函数可以对本对话框的控件的界面外观做修饰,用法如下:<BR>将类向导产生的函数做如下修改:<BR></P>
<DIV class=quote>HBRUSH CDialogColor::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR> HBRUSH hbr = CDialog::OnCtlColor(pDC,pWnd, nCtlColor);<BR> // TODO: Change any attributes of theDC here<BR> //设置显示字体<BR> CFont * cFont=new CFont;<BR> cFont->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0, <BR> ANSI_CHARSET,OUT_DEFAULT_PRECIS,<BR> CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,<BR> DEFAULT_PITCH&FF_SWISS,"Arial");<BR> //对特定的控件做修改<BR> switch()<BR> {<BR> case CTLCOLOR_STATIC: //对所有静态文本控件的设置<BR> {<BR> pDC->SetBkMode(TRANSPARENT); <BR> //设置背景为透明<BR> pDC->SetTextColor(RGB(255,255,0)); //设置字体颜色<BR> pWnd->SetFont(cFont); //设置字体<BR> HBRUSH B = CreateSolidBrush(RGB(125,125,255)); <BR> //创建画刷<BR> return (HBRUSH) B; //返回画刷句柄<BR> }<BR> case CTLCOLOR_EDIT: //对所有编辑框的设置<BR> {<BR> pDC->SetBkMode(TRANSPARENT); <BR> pDC->SetTextColor(RGB(255,255,0)); <BR> pWnd->SetFont(cFont); <BR> HBRUSH B = CreateSolidBrush(RGB(125,125,255)); <BR> return (HBRUSH) B; <BR> }<BR> default:<BR> return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);<BR> }<BR>}<BR></DIV>
<p><BR>注:case的类别有以下几种:<BR>CTLCOLOR_BTN 按钮控件<BR>CTLCOLOR_DLG 对话框<BR>CTLCOLOR_EDIT 编辑框<BR>CTLCOLOR_LISTBOX 列表框<BR>CTLCOLOR_MSGBOX 消息框<BR>CTLCOLOR_SCROLLBAR 滚动条<BR>CTLCOLOR_STATIC 静态文本 <BR><BR>2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的控件进行设置,方法如下:
<p>
<DIV class=quote>switch (pWnd->GetDlgCtrlID()) <BR> { <BR> //针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置<BR> case IDC_CTL1:<BR> case IDC_CTL2:<BR> case IDC_CTL3: <BR> {<BR> pDC->SetBkMode(TRANSPARENT);<BR> pDC->SetTextColor(RGB(255,255, 0));<BR> pWnd->SetFont(cFont);<BR> HBRUSH B = CreateSolidBrush(RGB(125,125,255));<BR> return (HBRUSH) B;<BR> }<BR> default:<BR> return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR> } </DIV> |
|