要在窗口中输出文本,可以先创建一个基于对话框的工程,然后在对话框类的OnPaint函数中添加代码:
void CTestDlg::OnPaint()
{
if (IsIconic())
{
... }
else
{
CDC *pDc=GetDC(); //added
pDc->TextOut(50,60,"Hello world"); //added
CDialog::OnPaint();
}
}
书上说:之所以在对话框的OnPaint函数中输出文本,是因为在对话框每次需要重绘时会产生WM_PAINT窗口消息,进而执行消息处理函数OnPaint,也就会在每次窗口重绘时执行代码,在窗口中输出文本...
我的疑问是:
(1)OnInitDialog()与OnPaint()在工程运行时的执行顺序是怎样的,它们分别负责什么工作(越具体越好)?当我把代码CDC *pDc=GetDC(); pDc->TextOut(50,60,"Hello world");加到OnInitDialog()而不是OnPaint()中时,为什么不能显示Hello world?
(2)“在对话框每次需要重绘时会产生WM_PAINT窗口消息”这里的“每次需要重绘时”指的是什么,也就是说OnPaint函数在什么情况下会被调用?
说到底就是函数OnInitDialog()与OnPaint()在工程运行时起的作用问题以及OnPaint()何时调用的问题,希望高手帮忙解答,谢了!