⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_32487.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:32487 发表者:梦沧海 发表日期:2003-03-12 14:29:33
<br>主题:怎么在对话框标题栏中加入ico和设置对话框背景!谢谢!
<br>内容:问题比较菜鸟!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-03-12 15:34:27
<br>内容:改变对话框的背景色<BR><BR> 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 <BR><BR>---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下: <BR><BR>---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。 <BR><BR>---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码: <BR><BR>BOOL CExampleDlgApp: : InitInstance ( )<BR>{<BR> …<BR>&nbsp;&nbsp;&nbsp;&nbsp;CExampleDlgDlg dlg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pMainWnd = &amp;dlg;<BR><BR>//先于DoModal()调用,将对话框设置为蓝色背景、红色文本<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nResponse = dlg.DoModal();<BR>…<BR>}<BR><BR>---- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对话框。 <BR>---- 方法二:重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准): <BR><BR>void CExampleDlgDlg::OnPaint() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (IsIconic())<BR>…<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CRect rect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPaintDC dc(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect(rect);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc.FillSolidRect(rect,RGB(0,255,0));&nbsp;&nbsp;//设置为绿色背景<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDialog::OnPaint();<BR>&nbsp;&nbsp; }<BR><BR><BR>---- 方法三:重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准): <BR>---- ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: <BR><BR>class CExampleDlgDlg : public CDialog<BR>{<BR>...<BR>protected:<BR> CBrush m_brush; <BR>...<BR>};<BR><BR><BR>---- ②在OnInitDialog()函数中添加如下代码: <BR>BOOL CExampleDlgDlg::OnInitDialog() <BR>{<BR> ...<BR>// TODO: Add extra initialization here<BR> m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子 <BR> ...<BR>} <BR><BR>---- ③利用ClassWizard重载OnCtlColor(…),即WM_CTLCOLOR消息: <BR>HBRUSH CExampleDlgDlg::OnCtlColor<BR>(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR>/*<BR>** 这里不必编写任何代码!<BR>**下行代码要注释掉<BR>** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR>*/<BR><BR>return m_brush;&nbsp;&nbsp; //返加绿色刷子<BR>}<BR><BR><BR>---- 方法四:还是重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。具体步骤如下(以上例工程为准): <BR>---- 步骤①、②同上方法三中的步骤①、②。 <BR><BR>---- 步骤③利用ClassWizard重载OnCtlColor(…)(即WM_CTLCOLOR消息)时则有些不同: <BR><BR>HBRUSH CExampleDlgDlg::OnCtlColor<BR>(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR> HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR><BR>//在这加一条是否为对话框的判断语句<BR> if(nCtlColor ==CTLCOLOR_DLG)<BR>return m_brush;&nbsp;&nbsp; //返加绿色刷子<BR>return hbr;<BR>}<BR><BR>---- 编译并运行即可。 <BR>2003-3-12 15:38:49

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -