很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,
因此很多人往往找到很多其它的控件对对话框进行美化修饰,
例如给静态控件设置字体,设置背景颜色等等, 其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成!
一个对话框 假设叫A。 我们可以在他的 WM_CTLCOLOR 里面做一些事情 来达到 ,美化节目的效果。
下面代码就是调整 静态文本的颜色。
//对话框 WM_CTLCOLOR 消息的响应函数 //OnCtlColor 这个函数的名字 猜测是 控件 颜色的消息响应函数 HBRUSH CTestGszDlg::OnCtlColor(CDC* pDC,//那个日本浪人 ,用的时候你需要把他手里原本的工具换掉 CWnd* pWnd,//是控件的指针 UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//这句代码VS2010向导自己生成的 // TODO: 在此更改 DC 的任何特性 //GetDlgItem 获得它的子控件 COLORREF tCl=RGB(255,0,0);//这个是我自己些 就是定义个颜色变量 typedef DWORD COLORREF; if (pWnd->GetDlgCtrlID() == IDC_STATIC)//这句代码有些诡异啊。 pWnd->GetDlgCtrlID() 是获取pWnd 自身ID的意思。 //pWnd 是一个控件, 不是对话框 { pDC->SetTextColor(tCl);//只是对ID为IDC_STATIC 的设备上下进行调整。 } // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; }
效果图
时间: 2024-12-25 23:51:23