Порядок выполнения работы. Постройте простое приложение с диалоговой панелью типа MessageBox или MessageBeep
Постройте простое приложение с диалоговой панелью типа MessageBox или MessageBeep. Оттранслируйте его, запустите, выполните отладку. Освойте основные приемы работы с отладчиком. Постройте приложение с главным окном. Добавьте реакцию на нажатие кнопки мыши в окне. Предусмотрите возможность изменения размеров окна и перемещения окна. Выполните отладку программы. Покажите преподавателю. Постройте диалог с использованием редактора ресурсов. Добавьте в предыдущее приложение вызов созданной диалоговой панели как модального диалога, а также как немодального диалога. Доведите приложение до рабочего состояния. Вопросы для самопроверки. Опишите структуру простого Windows-приложения. Что такое регистрация класса окна? Для чего она выполняется? Что такое функция окна? Что скрывается за идентификаторами CALLBACK, WINAPI, HWND, LRESULT, HINSTANCE? Почему введены эти идентификаторы? Какие Windows-события Вы знаете? Как отличаются понятия класса окна в Windows и MFC? Как выполняется диспетчеризация событий? Как строятся Windows-приложения с главной диалоговой панелью? Как создать обработчик события? Как построить диалоговую панель? Чем отличаются модальные и немодальные панели? Как вызвать модальную диалоговую панель и немодальную панель? Приложение II Структура Windows-приложения с главным окном: #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_LBUTTONUP: { MessageBox(NULL, "Hello, World","Window",MB_OK); return TRUE; } case WM_DESTROY: PostQuitMessage(0); return TRUE; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); }
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR d3, int nCmdShow) { MSG msg; HWND hwnd; WNDCLASS wndClass;
memset(&wndClass, 0, sizeof(wndClass)); wndClass.style = CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WndProc; wndClass.hInstance = hInstance; wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wndClass.lpszClassName = "Simple"; if (!RegisterClass(&wndClass)) return FALSE;
hwnd = CreateWindow("Simple", "Простое приложение", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);
return msg.wParam; }
Структура Windows-приложения с главным диалоговым окном: #include <windows.h> #include "resource.h"
HINSTANCE hInst;
BOOL CALLBACK DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { UINT wId;
switch(uMsg) { case WM_INITDIALOG: LoadIcon( hInst, IDI_HAND);
return TRUE; case WM_COMMAND: { wId = LOWORD(wParam); switch (wId) { case IDOK: case IDCANCEL: EndDialog(hwnd,0); return TRUE; } } break; } return FALSE; }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE d2, LPSTR d3, int d4) { DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),0,(DLGPROC)DlgProc); return 0; }
Лабораторная работа №2. Программирование для Windows. Использование MFC. Создание простых Windows-приложений. Цель работы. Освоить основные приемы работы с AppWizard; Освоить основные приемы работы с редактором ресурсов; Освоить основные приемы работы с ClassWizard. Теоретические сведения. Создание приложения на Visual C++ в студии разработчика Студия разработчика фирмы Microsoft (Microsoft Developer Studio) - это интегрированная среда для разработки, позволяющая функционировать различным средам разработки, одна из которых Visual C++, другая - Visual J++. В дальнейшем будет идти речь только о среде разработки Visual C++. В студии разработчика можно строить обычные программы на C и С++, создавать статические и динамические библиотеки, но основным режимом работы является создание Windows-приложений с помощью инструмента AppWizard (Application Wizard - мастер приложений) и библиотеки базовых классов MFC (Microsoft Foundation Class Library). Такие приложения называются MFC AppWizard-приложениями. Главная особенность этих Windows-приложений состоит в том, что они работают как совокупность взаимодействующих объектов, классы которых определены библиотекой MFC. Такой подход к использованию идей объектно-ориентированного программирования до последнего времени не был широко распространен. Обычно классы использовали как расширение понятия "тип данных", а библиотеку классов рассматривали как набор таких типов данных. Теперь же объектный подход перенесен на создание самого приложения. Основа такого способа построения приложений - библиотека MFC. Библиотека MFC Главная часть библиотеки MFC состоит из классов, используемых для построения компонентов приложения. С каждым MFC AppWizard-приложением связывается определяющий его на верхнем уровне объект theApp, принадлежащий классу, производному от CWinApp. Как правило, структура приложения определяется архитектурой Document-View (документ-облик). Это означает, что приложение состоит из одного или нескольких документов - объектов, классы которых являются производными от класса CDocument (класс "документ"). С каждым из документов связаны один или несколько видов - объектов классов, производных от CView и определяющих представление документа. Класс CFrameWnd ("окна-рамки") и производные от него определяют окна-рамки на дисплее. Элементы управления, создаваемые при проектировании интерфейса пользователя, принадлежат семейству классов элементов управления. Появляющиеся в процессе работы приложения диалоговые окна - это объекты классов, производных от CDialog. Классы CView, CFrameWnd, CDialog и все классы элементов управления наследуют свойства и поведение своего базового класса CWnd ("окно"), определяющего по существу Windows-окно. Этот класс в свою очередь вместе с классом CDocument является наследником базового класса CObject ("объект"). Одна из трудностей в понимании принципов устройства MFC AppWizard-приложения, заключается в том, что объекты, из которых оно строится, наследуют свойства и поведение всех своих предков, поэтому необходимо знать базовые классы.
Популярное: Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (890)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |