最近在帮一个朋友写个小程序,我是用VC写的。主要是基于对话框的编程。其中有些是经常要用到的,故特记录一些在编写过程中遇到的问题。
1.是采用模态还是非模态的方式创建对话框。 这个问题要弄清楚这两种方式的创建方法和对话框结束是消息的处理过程了。模态方式创建是通过Domodel()函数创建,而且结束也是调用OnCancel()自动回收资源。模态的话会垄断用户的操作,也就是在当前对话框没有结束前不能对其他窗口进行操作,而且它采用的消息流是循环的。相当于级联调用的意思。非模态必须通过new和Create()来创建窗口。而非模态方式的话可以在多个窗口之间切换操作。而且其结束后必须调用DistroyWindow()来结束对话框资源。
2.如何设置静态文本的背景颜色和字体颜色问题
可以给对话框添加WM_CTLCOLOR的映射函数,在函数
HBRUSH CPart2_1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;
}
中添加 if(pWnd->GetDlgCtrlID()==这里写你要改变的控件ID) { pDC->SetTextColor(RGB(255,0,0)); }
RGB(255,0,0)表示红色。可以改变其RGB设置其他颜色了。当然这种方法也可以改变按钮,输入框等控件的字体颜色和背景色了。
3.设置文本的内容。
可以通过指向对话框的指针变量来调用如下函数
testDlg->SetDlgItemText(IDC_STATIC_1,"Test set item's text");