Скачать презентацию Лекция 2 Скелет оконной программы Перейти на первую Скачать презентацию Лекция 2 Скелет оконной программы Перейти на первую

Лекция 002 Скелет оконной программы.ppt

  • Количество слайдов: 13

Лекция 2 Скелет оконной программы Перейти на первую страницу Лекция 2 Скелет оконной программы Перейти на первую страницу

Основные элементы любой оконной программы Любое оконное приложение, написанное под Windows должно содержать в Основные элементы любой оконной программы Любое оконное приложение, написанное под Windows должно содержать в себе следующие элементы: FФункцию регистрации класса окна. FФункцию создания окна. FОконную процедуру. FЦикл обработки сообщений Перейти на первую страницу

Структура оконного приложения и взаимодействие программы с операционной системой Программа Основная функция программы (функция Структура оконного приложения и взаимодействие программы с операционной системой Программа Основная функция программы (функция Win. Main) Операционная система Ядро ОС Сообщения для окна -регистрация класса окна -создание окна -цикл обработки сообщений Информация о программе и окнах Источники событий Оконная процедура (функция Wnd. Proc) Другие программы Внешние устройства Перейти на первую страницу

Регистрация класса окна Перейти на первую страницу Регистрация класса окна Перейти на первую страницу

Создание окна приложения Перейти на первую страницу Создание окна приложения Перейти на первую страницу

Стили окна n n n n WS_BORDER WS_CAPTION WS_CHILDWINDOW WS_CLIPCHILDREN WS_CLIPSIBLINGS WS_DISABLED WS_DLGFRAME WS_GROUP Стили окна n n n n WS_BORDER WS_CAPTION WS_CHILDWINDOW WS_CLIPCHILDREN WS_CLIPSIBLINGS WS_DISABLED WS_DLGFRAME WS_GROUP WS_HSCROLL WS_ICONIC WS_MAXIMIZEBOX n n n n n WS_SYSMENU WS_MINIMIZEBOX WS_OVERLAPPED WS_SIZEBOX WS_THICKFRAME WS_TILEDWINDOW WS_VISIBLE WS_VSCROLL Перейти на первую страницу

Механизм посылки сообщений М 1 М 2 Перейти на первую страницу Механизм посылки сообщений М 1 М 2 Перейти на первую страницу

Цикл обработки сообщений Перейти на первую страницу Цикл обработки сообщений Перейти на первую страницу

Структура сообщения typedef struct tag. MSG { HWND hwnd; // окно - адресат UINT Структура сообщения typedef struct tag. MSG { HWND hwnd; // окно - адресат UINT message; // тип сообщения // параметры сообщения WPARAM w. Param; LPARAM l. Param; DWORD time; // время возникновения POINT pt; // координаты } MSG; Перейти на первую страницу

Оконная процедура Перейти на первую страницу Оконная процедура Перейти на первую страницу

Функция Win. Main int APIENTRY Win. Main(HINSTANCE h. Instance, HINSTANCE h. Prev. Instance, LPSTR Функция Win. Main int APIENTRY Win. Main(HINSTANCE h. Instance, HINSTANCE h. Prev. Instance, LPSTR lp. Cmd. Line, int n. Cmd. Show) { HWND h. Wnd; h. Wnd=Create. Window("myclass", "title", WS_OVERLAPPEDWINDOW, 30, 300, 200, NULL, h. Instance, NULL); // Initialize global strings WNDCLASSEX wcex; wcex. cb. Size = sizeof(wcex); wcex. style = CS_HREDRAW | CS_VREDRAW; wcex. hbr. Background = (HBRUSH)Create. Solid. Brush(0 xff 00 ff); wcex. h. Cursor = Load. Cursor(NULL, IDC_ARROW); wcex. h. Icon = NULL; wcex. h. Icon. Sm = NULL; wcex. h. Instance = h. Instance; wcex. lpfn. Wnd. Proc = (WNDPROC) Wnd. Proc; } wcex. lpsz. Class. Name = "myclass"; wcex. lpsz. Menu. Name = NULL; wcex. cb. Cls. Extra = 0; wcex. cb. Wnd. Extra = 0; Show. Window(h. Wnd, n. Cmd. Show); Update. Window(h. Wnd); MSG msg; while (Get. Message(&msg, NULL, 0, 0)) { Translate. Message(&msg); Dispatch. Message(&msg); } return msg. w. Param; Register. Class. Ex(&wcex); Перейти на первую страницу

Пример оконной процедуры int Wnd. Proc(HWND h. Wnd, UINT message, WPARAM w. Param, LPARAM Пример оконной процедуры int Wnd. Proc(HWND h. Wnd, UINT message, WPARAM w. Param, LPARAM l. Param) { PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_PAINT: hdc = Begin. Paint(h. Wnd, &ps); Text. Out(hdc, 100, "Привет!", 6); End. Paint(h. Wnd, &ps); break; case WM_DESTROY: Post. Quit. Message(0); break; default: return Def. Window. Proc(h. Wnd, message, w. Param, l. Param); } return 0; } Перейти на первую страницу

Результат работы программы Перейти на первую страницу Результат работы программы Перейти на первую страницу