Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Створення консольного додатка




Щоб створити заготівлю консольного додатка з використанням майстра:

1. Закрийте всі відкриті проекти та файли і виберіть команду File, New (Файл, Створити). З'явиться діалогове вікно New (Створити), розкрите на вкладці Projects (Проекти).

2. Виділіть пункт Win32 Console Application (консольний додаток для 32-розрядного Windows) і введіть в текстове вікно Project name (Ім'я проекту) ім'я проекту Console. В результаті цих дій діалогове вікно New прийме вигляд, зображений на рис. 1.1.

 

Рис.1.1 – Окно New

 

3. Натисніть кнопку ОК. З'явиться діалогове вікно Win32 Console Application - Step 1 of 1 (Консольний додаток для 32-розрядного Windows. - Крок 1 з 1), зображений на рис. 1.2.

Група перемикачів What kind of Console Application do you want to create? (Яке консольний додаток слід створити?) Містить наступні позиції:

• An empty project (Порожній проект) - майстер створює додаток, в якому відсутні файл реалізації, файл заголовка і файл ресурсів. Можливість створення всіх цих файлів повністю надається вам

• A simple application (Простий додаток) - майстер створює додаток, що складається з файлу реалізації та файлу заголовка. У файлі реалізації відсутні виконавчі оператори

• А "Hello World!" application (Додаток "Hello World!") - майстер створює додаток, аналогічне попередньому, але в ньому файл реалізації містить оператор виводу на екран рядка "Hello World!"

• An application that supports MFC (Додаток, що використовує функції з бібліотеки MFC) - майстер створює додаток, що виводить на екран рядок, оформлений, як строковий ресурс.

Рис 1.2 - Діалогове вікно Win32 Console Application - Step 1 of 1

 

4. Після установки перемикача у відповідне положення натисніть кнопку Finish (Завершення роботи). З'явиться діалогове вікно New Project Information (Інформація про створюваний проекті), зображене на рис. 1.3.

Рис. 1.3 - Діалогове вікно New Project Information

 

5. Натисніть кнопку ОК. Майстер створить новий додаток.

Якщо ви встановите перемикач вибору генерується додатки в положення An empty project, то вам доведеться писати всі файли програм проекту вручну, що не можна назвати вдалим вибором при генерації заготовки програми.

При установці перемикача вибору генерується додатки в положе ня A simple application в результаті роботи майстра буде створена найпростіша заготівля файлу реалізації і файл заголовка StdAfx.h, що відноситься до генеруємому майстром файлу StdAfx.cpp, відповідальному за створення перекомпілювати заголовків. Текст заготовки файлу реалізації, одержуваний при даних установках елементів управління, приведений в лістингу 1.1.

Лістінг1.1 Заготівля файлу реалізації консольного застосування// Console.cpp : Defines the entry point for the console application.

#include "stdafx.h"

int main(int arge, char* argv[])

{

return 0;

}

 

Оскільки в даному проекті в функції main відсутнє виконання оператора, то результатом запуску даного проекту на виконання з'явиться поява порожнього вікна MS-DOS, яке необхідно тут же закрити. Як випливає з тексту даного лістингу, ця установка є оптимальною для користувача, не має намір користуватися класами з бібліотеки MFC.

Положення перемикача вибору генерованого додатку "Hello World!" application і An application that supports MFC є чисто демонстраційними і різними способами реалізують одну і ту ж дію - виведення на екран рядків символів.

Як випливає з лістингу 1.2, перше демонстраційне прикладення здійснює висновок стандартним способом з використанням функції printf.

 

Лістинг 1.2. Консольний додаток "Hello World!"

// Console.cpp : Defines the entry point for the console application.

 

#include "stdafx.h"

int main(int arge, char* argv[])

{

printf("Hello World!\n");

return 0;

}

Щоб запустити даний проект на виконання:

1. Виберіть команду меню Build, Execute Console.exe (Компіляція, Запустити файл Console.exe на виконання) або натисніть кнопку Execute Program (Запустити програму на виконання) в панелі інструментів Build (Компіляція) або в панелі інструментів Build MоnоBar (Зменшена панель інструментів компіляція). З'явиться вікно повідомлення Microsoft Visual С + +, в якому повідомляється, що виконуваний файл даного додатка відсутній, і питає про необхідність його створення.

2. Натисніть на кнопку Так, підтверджуючи необхідність створення файлу. Почнеться компіляція програми, по закінченні якої отриманий виконавчий файл буде запущений, і з'явиться вікно MS-DOS, в якому будуть відображені результати роботи програми. Це вікно наведено на рис. 1.4.

 

Рис 1.4 - Вікно повідомлення Microsoft Visual С + +

 

Рядок "Press any key to continue" (Натисніть будь-яку клавішу, щоб продовжити роботу), розташована після рядка "Hello World!", повідомляє користувачеві про те, що програма завершила роботу, і вікно залишається на екрані тільки для того, щоб користувач міг прочитати результати її роботи. Після того як користувач переконається, що програма коректно завершила свою роботу, йому досить натиснути на будь-яку клавішу, щоб закрити вікно MS-DOS і перейти до виконання інших завдань.

Останнє, четверте положення перемикача вибору генерується додатком - An application that supports MFC - служить для демонстрації того, що консольні додатки можуть використовувати функції з бібліотеки MFC, однак, оскільки дана бібліотека орієнтована, в основному, на роботу з вікнами і документами, велика її частина залишається незатребуваною консольним додатком. Для того щоб продемонструвати можливості цієї бібліотеки в даному типі додатка, рядок що виводиться на екран оформлений у вигляді строкового ресурсу. Таким чином, у цьому додатку генеруються файли реалізації, файли заголовків та файл опису ресурсів. Текст файлу реалізації даного додатка приведений в лістингу 1.3.

 

Лістинг 1.3. Консольний додаток, що використовує бібліотеку MFC

// Console.срр : Defines the entry point for the console application.

#include "stdafx.h" #include "Console.h"

#ifdef _DEBUG #define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = _FILE_;

#endif

////////////////////////////////////////////////////////////////////////

// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

{

int nRetCode = 0;

// initialize MFC and print and error on failure

if (!AfxWinlnit (: :GetModuleHandle(NULL), NULL, : :GetCommandLine (), 0))

{

// TODO: change error code to suit your needs

cerr << _T("Fatal Error: MFC initialization failed") << endl;

nRetCode = 1;

}

else

{

// TODO: code your application's behavior here. CString strHello; strHello.LoadString(IDS HELLO); cout << (LPCTSTR)strHello << endl;

}

return nRetCode;

}

Порівнюючи листинги 1.2 і 1.3, слід звернути увагу, що в них обробка починається з виклику функції Afxwininit і перевірки повертаючої нею величини. Зазвичай ця функція викликається функцією winMain, яка є частиною бібліотеки MFC, і цей виклик відбувається в процесі ініціалізації об'єкту класу cwinApp. Оскільки консольні додатки не використовують функцію winMain, то в них необхідно безпосередньо викликати функцію Afxwininit для ініціалізації бібліотеки MFC.

При безпосередньому виклику користувачем функції Afxwininit в якості першого її параметра необхідно вказати дескриптор поточного модуля, в якому зберігається об'єкт класу cwinApp. У разі консольного додатку користувач може вибрати в якості поточного модуля об'єкт, похідний від класу cwinApp, або безпосередньо використовувати об'єкт класу cwinApp. Остання стратегія застосовується у тому випадку, коли вся обробка інформації зосереджена в функції main даного додатка.

Функція GetModuieHandie, використовувана в якості першого аргументу функції Afxwininit, повертає дескриптор модуля по імені файлу (.Ехе або .Dll), в якому міститься виконуваний код даного модуля. Якщо, як в даному випадку, параметром даної функції є null, то функція GetModuieHandie повертає дескриптор файлу, використаного для створення даного процесу.

Функція GetcommandLine, використовувана в якості третьої аргументу функції AfxWininit, повертає покажчик на командний рядок поточного процесу. Цей покажчик може бути використаний консольним процесом, оформленим у відповідності зі стандартом ANSI мови програмування С, для доступу до аргументів командного рядка за допомогою параметрів arge І argv, переданих функції main.

Якщо функція AfxWininit повертає значення false, то програма видає повідомлення про помилку з використанням стандартного потоку для виведення помилок і припиняє свою роботу. В іншому випадку формується об'єкт класу estring, описаного в бібліотеці MFC. В цей об'єкт, що має ім'я strHello, завантажується строковий ресурс ids_hello, а потім об'єкт виводиться на екран з використанням стандартного потоку виводу cout.

Процедура запуску програми на виконання і результати її роботи в основному аналогічні процедурі запуску і результатами роботи описаної до цього програми, не використовує класи MFC, тому немає ніякого сенсу описувати цю процедуру ще раз.

Дана програма може бути використана в якості заготовки консоль-ного додатку, що використовує бібліотеку MFC. Для цього замість фрагмента програми, що здійснює висновок рядка на екран, повинен розміщуватися текст користувацької програми.

 


Поделиться:

Дата добавления: 2014-12-03; просмотров: 163; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты