你可以:: OnInitDialog中做些什么()Visual Studio 2008的C++

问题描述:

可以或不可以你:: OnInitDialog中() Visual Studio 2008的C++做什么你可以:: OnInitDialog中做些什么()Visual Studio 2008的C++

我想在写出来的对话框上的一些文字对话框启动。如果我将相同的代码放在PUSH-BUTTON OnBnClicked中,它就可以工作。如果我把它放在OnInit中,它不会给我屏幕上的文字。我假设在OnInit上,我的对话框没有完全打开,所以我不能在上面写上它?

CRect drawRect;  
drawRect.left = 00;  // Shifts text to right 
drawRect.right = 300; 
drawRect.top = 00;  // How Far Down 
drawRect.bottom = 300; 

// Clear out any previous name 
CString strBlank = "Book Name"; 
SSTextOut(this->GetDC(), strBlank, &drawRect, DT_LEFT); 

我写的功能,在 http://www.codeproject.com/KB/GDI/SSTextOut.aspx

描述您不能在OnInitDialog()使用功能SSTextOut()OnInitDialog()在之前被称为,因此显示对话框,因此您无法在其中获得有效的CDC(因为对话框尚未绘制)。

从外观上看,SSTextOut()意味着从OnPaint()覆盖中调用。

+0

是否有另一种功能,我可以用它来放置文字在OnInit我可以控制字体大小等? 感谢您的回复,我已经在这里出了好几个小时! – user299391 2010-03-22 23:27:06

+0

@flirishman您可以在OnInitDialog()中设置大多数控件的字体大小,但最好通过资源编辑器来完成。你不能在OnInitDialog()中绘制任何东西,这是SSTextOut()试图做的事情。 – adam 2010-03-23 00:24:54