Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual1.doc
Скачиваний:
8
Добавлен:
07.03.2016
Размер:
4.35 Mб
Скачать

3.2. Клас головного вікна

Коли шаблон документа готовий, створюється динамічний об'єкт класу головного вікна програми CMainFrame. Об'єкт класу, похідний від CFrameWnd, створюється у два етапи. Спочатку викликається конструктор, який створює об'єкт класу CFrameWnd, а потім викликається функція CFrameWnd::LoadFrame, завантажується головне вікно програми та пов'язані з ним ресурси, а також пов'язує завантажене вікно з об'єктом класу, похідного від класу CMainFrame.

У ресурсі, ідентифікатор якого передається функції як параметр, визначені меню, таблиця призначення клавіш, значки і рядковий ресурс заголовка вікна. Для самостійного завдання всіх параметрів створення вікна замість функції LoadFrame слід використовувати функцію CFrameWnd::Create. Додаток викликає функцію LoadFrame при створенні головного вікна програми з використанням об'єкта класу шаблону документа.

Отримана вказівка на об'єкт головного вікна програми привласнюється ідентифікатору m_pMainWnd, є членом класу програми. Значення цієї змінної може бути використано для безпосереднього доступу до об'єкта головного вікна програми.

Наступним кроком з ініціалізації програми є створення об'єкта класу CCommandLineInfo, використовуваного для виділення параметрів ініціалізації програми з командного рядка. Створений об'єкт передається в якості аргументу функції ParseCommandLine. Для кожного елемента командного рядка функція ParseCommandLine викликає функцію CCommandLineInfo::ParseParam, яка зберігає його значення в об'єкті CCommandLineInfo. Цей об'єкт потім передається функції ProcessShellcommand, що виробляє дії, зумовлені значеннями аргументів і прапорів командного рядка. Функція ProcessShellcommand повертає нульове значення, якщо процес завершився нормально, і нуль - в іншому випадку.

На виклику цієї функції слід зупинитися окремо. Розробники з Microsoft не припускали, що за допомогою Visual C++ будуть розроблятися будь-які інші програми, крім текстових редакторів, тому передбачили при запуску багатовіконної програми виведення на екран порожнього вікна. Доцільність такого підходу сумнівна навіть у текстовому редакторі, оскільки в більшості випадків користувач не розпочинає створення нового документа, а займається редагуванням старого. Проте в даному випадку ще можна зрозуміти, навіщо на екрані з'явилося порожнє вікно. Але, уявіть собі, що порожнє вікно з'являється у додатку, створеному для обробки й аналізу різних типів сигналів, кожен з яких представлений своїм типом документа. Вікно якого типу документа має виводитися при запуску програми? І що повинен робити користувач з порожнім вікном? Не малювати ж у ньому вручну спектр сигналу. Тому гарним тоном в серйозних додатках вважається відсутність будь-яких вікон під час запуску програми на виконання.

Але майстер створення додатків MFC створює додаток, виводить пусте вікно на екран. Що ж робити? Найбільш простим рішенням є знищення умовного оператора, що містить виклик функції ProcessShellcommand, або закоментуйте його, якщо вам не хочеться видаляти оператори із заготівки додатку. При цьому не слід забувати, що умовний оператор включає в себе не тільки сам оператор, а й оператор return, виконання якого залежить від величини, що повертається функцією ProcessShellcommand. У цьому випадку програма не буде обробляти командний рядок, але більшість додатків Windows його не використовують.

Функція CWnd::Showwindow встановлює режим відображення вікна, наприклад, стандартний розмір відображуваного вікна, вікно, розгорнуте на весь екран або відображуване як піктограма. При виклику цієї функції в процедурі InitInstance її аргументом є CWinApp::m_nCmdShow. При наступних її виклики в якості аргументу необхідно безпосередньо вказувати режими відображення вікна, для позначення яких існують зумовлені величини.

Останнім виконавчим оператором процедури InitInstance є виклик функції CWnd::UpdateWindow, що робить перемальовування робочої області вікна шляхом посилки повідомлення WM_PAINT в тому випадку, якщо ця ділянка не порожня. Дана функція здійснює безпосередню посилку повідомлення WM_PAINT, не поміщаючи його в чергу додатків.

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

Крім опису класу додатка даний файл містить також опис класу діалогового вікна довідки про програму.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]