www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 72 - Тренировка - приложение Pr1

	Это будет очень простое приложение. Но оно будет уметь
 	выводить строку на экран :-).
	Это и есть американская метордика :-) 
        Когда об одном и том же 100 раз :-) но по разному !!!!

Генерируем приложение

Запускайте VC. Выбирайте MFC AppWizard и дайте приложению имя Pr1. Шаг 1 мы выберем Single document - документ с одним окном. Теперь можете смело жать Finish всё остальное оставим по умолчанию. Полюбуйтеть на диалоговое окно с информацией и закройте его. Выберите пункт меню Build - Build Pr1.exe. После генерации приложения давайте его запустим. Build, а далее Execute Pr1.exe. У Вас должно быть примерно такое окно.

step72_1.gif (2220 b)

Кодируем

Что-ж окно есть. А теперь нам надо выводить строку в окно. Для этого нам нужно завести переменную типа CString, в которой будет храниться строка. Вопрос где её заводить? Для этого есть класс документа. Там должны храниться все данные. Перейдите в окно ClassView, там вы увидите класс CPr1Doc именно в нем и должна храниться наша переменная.

Щелкните правой кнопкой мыши на классе CPr1Doc и выбирите Add Member Variable. Этот пункт меню позволяет добавлять перенные к классу. В поле Variable Type введите CString, а в поле Variable Name - m_string. Для простоты в поле Access, то есть доступ, оставим Public. Теперь всё готово, жмем OK. Ваша переменная появится в списке методов и данных класса.

step72_2.gif (1813 b)

А что произошло в коде ? Щелкните 2 раза на имени m_string и Вы попадете на её описание в классе в файле Pr1Doc.h

....
// Implementation
public:
     CString m_string;
	virtual ~CPr1Doc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif
....
Теперь нам необходимо инициализировать её содержание. Лучше сделать это в методе OnNewDocument. Этот метод будет всегда вызываться, когда создаётся новый документ. Щелкните на этом методе два раза. Здесь будет код.
BOOL CPr1Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}
Замените коментарии Todo: на команду заполнения строки m_string = " Первые шаги лучший сайт !"; Вот так.
BOOL CPr1Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	m_string = " Первые шаги лучший сайт!";

	return TRUE;
}
Следующая задача вывести эту строку на экран. Отображения класса документа (CPr1Doc) производится классом CPr1View и методом этого класса OnDraw. Переключитесь на класс VPr1View и шелкните два раза на методе OnDraw. Вот код.
void CPr1View::OnDraw(CDC* pDC)
{
	CPr1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}
Здесь для отрисовки передается контекст устройства через переменную pDC и получается класс документа в переменную pDoc, используя функцию GetDocument().

Поменяйте код.

void CPr1View::OnDraw(CDC* pDC)
{
	CPr1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	
	pDC->DrawText(pDoc->m_string,CRect(10,10,300,100),DT_CENTER);  
}
Компилируйте и запускайте.

Выводы

Попробуем сделать выводы. Ну первое, AppWizard многое делает за Вас. Данные храняться в классе документа (CPr1Doc) и для их наличия необходимо к этому классу добавить переменный. Переменный надо инициализировать. Для этого инициализацию нужно сделать в методе OnNewDocument класса документа. Отображаются данные в классе вида (CPr1View). Для их отображения используется метод OnDraw.


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

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz