Лекция: Проект Hello(You-Comp).

Создайте проект MFC Applicationв Visual C++ и назовите его Hello.

Запустите Visual Studio 2010. Перейдите в окно шаблонов Visual C++. Выполните команду Создать проектÞПриложение MFC. Укажите имя проекта Hello и разместите проект в своей папке (например, в папке D\_2_g). Щелкните по кнопке Ok.

В окне MFC Application Wizard-Hello (Мастер приложений MFC-Hello) установите следующие параметры:

1. На вкладке Application Type (Тип приложения) — укажите тип приложения Dialog based(На основе диалоговых окон) и Resource language (язык ресурсов) – Русский (Россия).

2. Перейдите на вкладку User Interface (Свойства интерфейса пользователя). Уберите флажок About Box (О программе).

Щелкните по кнопке Finish (Готово). Установите свойство проекта:

1. Выберите в меню Project(Проект)ÞHello Properties (Свойства: Hello…).

2. Раскройте папку Configuration Properties(Свойства конфигурации) и перейдите на узел General(Общие).

3. Щелкните по строке Character Set (Набор символов) укажите Use multi-Byte Character Set (Использовать много байтовую кодировку).

4. Щелкните по кнопке OK.

С помощью вкладки Панель элементов создайте такое окно приложения:

       
   
 

Static Text
Button
Edit Control  

 

       
 
ИД: IDC_YOU  
 
ИД: IDC_COMP  

Данный проект реализуется двумя способами. В каждом варианте реализации проекта используются разные классы библиотеки MFC для одних и тех же элементов управления.

1-ый вариант. Измените имена для окон редактирования пользователя и компьютера на IDC_EDYOU и IDC_EDCOMP соответственно. Для этого выполните команду Свойстваиз контекстного меню для элемента управления окна редактирования. В появившемся окне Свойства измените стандартные свойства, созданные Мастером разработки данного проекта, на следующие:

ИД:IDC_EDYOU, Авто HScroll: False, Многострочный: True.

Аналогично выполняем для окна редактирования компьютера IDC_EDCOMP:

ИД:IDC_EDCOMP, Авто HScroll: False, Многострочный: True.

Свяжите идентификатор окна редактирования IDC_EDYOU с переменной m_You(Доступ: private, Тип переменной: CEdit, Имя переменной: m_You,Категория: Control). Для этого выполняем команду Добавить переменную… из контекстного меню для окна редактирования IDC_EDYOU и в окне Мастер добавления переменной-члена вводим имя переменной и ее свойства. Аналогично, связываем IDC_EDCOMP с переменной m_Comp (Доступ: private, Тип переменной: CEdit, Имя переменной: m_Comp,Категория: Control). Переименуйте стандартные имена для кнопок пользователя и компьютера, как показано на рисунке.

В класс CHelloDlg добавьте описание переменных со статусом protected:

BOOL InviteDone; UINT Count;

Для этого нужно выполнить команду Добавить ÞДобавить переменную… из контекстного меню для класса CHelloDlg.И в окне Мастер добавления переменной-члена вводим имя переменной и ее свойства.

В конструкторе класса CHelloDlg, переменные Count, InviteDone будут инициализацированы:

Count=0; InviteDone = FALSE;

Если переменные были добавлены вручную в класс CHelloDlg, то необходимо тогда инициализировать переменные.

Создайте обработчик сообщения BN_CLICKED для кнопки IDC_YOU. Для этого выполните команду Добавить обработчик событий … для кнопки IDC_YOU.Выберите сообщение BN_CLICKEDи добавьте в класс CHelloDlg обработчик OnBnClickedYou() код. Добавьте данный код в обработчик:

void CHelloDlg::OnBnClickedYou()

{

switch( ++Count )

{

case 1: m_You.SetWindowText(«Привет, компьютер!»); break;

case 2: m_You.SetWindowText(«Компьютер, проснись!»); break;

case 3: m_You.SetWindowText(«Поздоровайтесь, наконец!»); break;

}

}

Аналогично создайте обработчик сообщения BN_CLICKED для кнопки IDC_COMP. Обработчик OnBnClickedComp() будет содержать код:

void CHelloDlg::OnBnClickedComp()

{

CString s1 = «Совет дня: Никогда не разговариваыте с неизвестными! Ваше имя, пожалуйста.», s2= " ";

if ( Count >= 3 )

if ( !InviteDone )

{

m_Comp.SetWindowText(s1);

m_You.SetWindowText(" ");

InviteDone = TRUE;

}

else

{

m_You.GetWindowText(s2);

if( s2 == " " ) s2 = «люди»;

m_Comp.SetWindowText(«Здравствуйте, » + s2 + "! Всегда рад с вами работать!");

m_You.SetWindowText(" ");

}

}

 

2-ой вариант. В 1-ом варианте для переменных m_You и m_Comp Вы выбирали категорию Control и тип CEdit. В 2-ом варианте выберите категорию Value и тип CString.

Для Ваших переменных появится дополнительная возможность установить максимально допустимое число символов. Задайте, например, 50 для m_You и 80 для m_Comp.

Теперь связанные с окнами переменные m_You и m_Comp стали обычными строковыми переменными. Мастер ClassWizard, понимая это, создаст остов класса с другим механизмом ввода/вывода. Прежде чем его обсуждать, закончим модификацию проекта.

Добавьте дополнительно в определение метода OnInitDialog() инициализацию переменных:

m_Уou = " ";

m_Соmр = " ";

Измените текст функции обработки OnBnClickedYou на:

switch (++Count)

{// Первый щелчок

case 1: m_You = «Привет, компьютер!»; UpdateData( FALSE ); break;

// Второй щелчок

case 2: m_You = «Компьютер, проснись!»; UpdateData(FALSE); break;

// Третий щелчок

case 3: m_You = «Поздоровайся, наконец!”; UpdateData(FALSE); break;

default: UpdateData(TRUE);

}

Текст определения функции OnBnClickedComp заменим на такой:

CString s1 = „Совет дня: Никогда не разговаривайте с неизвестными! Ваше имя, пожалуйста.”, s2;

if (Count >= 3)

if(! InviteDone)

{ m_Comp = s1;

m_You =” ”;

InviteDone = TRUE;

UpdateData(FALSE);

}

else

{ UpdateData(TRUE);

if ( m_You == “ ” ) m_You = “люди”;

m_Comp = “ Здравствуйте, ” + m_You +“! Всегда рад с Вами работать!”;

m_You = “ ”;

UpdateData(FALSE);

}

Как же теперь работает ввод/вывод? Напомним: с помощью окна Add Member Variable Wizard(Мастер добавления переменной-члена) Вы установили соответствие между элементами управления и переменными класса. Таким образом, Вы фиксируете, что между окнами редактирования и переменными установлены связи:

окно IDC_EDYOU Û переменная m_You,

окно IDC_EDCOMP Û переменная m_Comp.

Вызов функции UpdateData включает одновременную передачу данных для всех пар “окно — переменная». Направление передачи задается булевым параметром функции UpdateData. Если задан аргумент FALSE, то это означает передачу из переменной в окно, a TRUE — из окна в переменную.

Заметьте: в момент передачи данные преобразуются в нужный тип автоматически, поскольку известен тип переменной, связанной с окном. Более того, при вводе данных пользователем проверяется их корректность. Строковые данные проверяются на максимально допустимое число символов, целочисленные — на возможный диапазон значений, определяемый при связывании переменной с окном.

Самостоятельно. Продлите диалог следующим образом. На последнее сообщение в окне Компьютера “ Всегда рад с Вами работать!” необходимо продолжить при нажатии клавиши Вы появляется сообщение “Взаимно! “ в окне Пользователя.

еще рефераты
Еще работы по информатике