Шаг 133 - Рисуем по диалоговому окну

	Ваш проект VC++ first steps просто восхетительный!
	Но учитывая что я полный чайник в  VC++ ,без вопросов необошлось.
	Вчем у меня дело ,нерисует  ,хотя ошибок ненаходит?
 	Мне нужно ,шоб он рисовал при нажатии на Button1
 	void CMytestprogDlg::OnButton1() 
	{
		CPaintDC dc(this);
		dc.TextOut( 20, 20,"TextOut Samples");
 	}
        Help me please ...                 
        ostrongi@takas.lt
Значит так, я предложу свой вариант, как это сделать и если у Вас будут предложения или мысли как сделать по другому пишите. Может быть мой вариант совершенно не правильный.

Итак, создаем приложение на базе AppWizard как диалоговое окно. В окно вставляем кнопку. Кнопке нужен код. Вот он.

void CTestPaintDlg::OnButton1() 
{
  CDC* dc;
  dc=GetDC();
  dc->TextOut(20,20,"dwgweeeeeeeeeeeeeeeee");  
}
А вот результат работы.

133.gif (1812 b)

У этого метода куча недостатков. Например, при передвижении окна или перерисовке эта надпись будет пропадать. Ну и ладно. Если этот код поместить в OnPaint, то ничего пропадать не будет.

void CTestPaintDlg::OnPaint() 
{
	...........
	}
	else
	{
		CDialog::OnPaint();
	}
	CDC* dc;
        dc=GetDC();
        dc->TextOut(20,20,"dwgweeeeeeeeeeeeeeeee"); 
}

Основа этих действий функция GetDC():

CDC* GetDC( );

Эта функция получает контекст окна и находится она в CWnd, но этот класс есть в предках диалогового окна и поэтому мы им можем пользоваться. Получаем контекст устройства, который мы можем использовать для функций GDI. Эту функцию можно использовать если определены в структуре класса окна следующие стили.

CS_CLASSDC
CS_OWNDC
CS_PARENTDC 

Есть и похожие фунции, например, GetWindowDC

CDC* dc;
dc=GetWindowDC();
dc->TextOut(20,20,"dwgweeeeeeeeeeeeeeeee"); 

Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.