2010-03-22 5 views
0

Что может или вы не можете сделать в :: 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

ответ

1

Вы не можете использовать функцию SSTextOut() в OnInitDialog(). OnInitDialog() называется до отображается ваше диалоговое окно, поэтому вы не можете получить в нем CDC (потому что диалог еще не нарисован).

От внешнего вида, SSTextOut() предназначен для вызова с переопределения OnPaint().

+0

Есть ли другая функция, которую я могу использовать для размещения текста в OnInit, где я могу контролировать размер шрифта и т. Д.? Спасибо за ответ, я потел много часов над этим! – user299391

+0

@flirishman Вы можете установить размер шрифта большинства элементов управления в OnInitDialog(), однако лучше было бы сделать это через редактор ресурсов. Вы не можете нарисовать что-либо в OnInitDialog(), что пытается сделать SSTextOut(). – adam

Смежные вопросы