Презентация слайды лекция 7 2с

Скачать презентацию  слайды лекция 7 2с Скачать презентацию слайды лекция 7 2с

slaydy_lekciya_7_2s.ppt

  • Размер: 1015.5 Кб
  • Количество слайдов: 22

Описание презентации Презентация слайды лекция 7 2с по слайдам

Для регистрации класса окна используется функция: int Register. Class(LPWNDCLASS wc); Для создания окна вызывается функция: HWNDДля регистрации класса окна используется функция: int Register. Class(LPWNDCLASS wc); Для создания окна вызывается функция: HWND Create. Window(. . . ); Для отображения окна приложения используется функция: BOOL Show. Window(HWND hwnd, int n. Cmd. Show);

Для выборки сообщений вызывается функция: BOOL Get. Message ( LPMSG lp. Msg, // ссылка на структуруДля выборки сообщений вызывается функция: BOOL Get. Message ( LPMSG lp. Msg, // ссылка на структуру для получения сообщения HWND hwnd, // дескриптор окна, которому адресуется сообщение UINT w. Msg. Min, // первое сообщение (код) UINT w. Msg. Max); // последнее сообщение (код)

typedef struct { HWND hwnd; // дескриптор окна адресата UINT message; // код сообщения WPARAM w.typedef struct { HWND hwnd; // дескриптор окна адресата UINT message; // код сообщения WPARAM w. Param; // содержимое сообщения LPARAM l. Param; // содержимое сообщения DWORD time; // время отправки POINT pt; // координаты места отправки } MSG; Цикл обработки сообщений окна: while(Get. Message(. . . ) ) { Dispatch. Message(. . . ); }

Передача сообщения оконной процедуре: LRESULT Dispatch. Message(CONST MSG *lp. Msg); Оконная процедура: LRESULT CALLBACK  имяПередача сообщения оконной процедуре: LRESULT Dispatch. Message(CONST MSG *lp. Msg); Оконная процедура: LRESULT CALLBACK ( HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param);

В ОС Window описаны несколько сот кодов сообщений.  Например, 1.  WM_CREATE 2. WM_SIZE 3.В ОС Window описаны несколько сот кодов сообщений. Например, 1. WM_CREATE 2. WM_SIZE 3. WM_MOVE 4. WM_COMMAND 5. WM_DESTROY

#include windows. h LRESULT CALLBACK Wnd. Proc (HWND, UINT, WPARAM, LPARAM); HINSTANCE h. Ins; char Name.#include LRESULT CALLBACK Wnd. Proc (HWND, UINT, WPARAM, LPARAM); HINSTANCE h. Ins; char Name. Class[] = “Window. Class”; int WINAPI Win. Main(HINSTANCE h. Inst, HINSTANCE hpev, LPSTR lpsz. Cmd. Line, int n. Cmd. Show) { MSG msg; HWND hwnd; h. Ins = h. Inst; WNDCLASS wc; wc. style=wc. cb. Cls. Extra=wc. cb. Wnd. Extra=0; wc. lpfn. Wnd. Proc=Wnd. Proc; wc. h. Instance=h. Ins; wc. h. Icon=Load. Icon(NULL, IDI_APPLICATION); wc. h. Cursor=Load. Cursor(NULL, IDC_ARROW); wc. hbr. Background=(HBRUSH)(COLOR_WINDOW+1); wc. lpsz. Menu. Name=NULL; wc. lpsz. Class. Name=Name. Class;

if (!Register. Class(&wc)) return FALSE; hwnd = Create. Window(Name. Class, “My Appication”,  WS_OVERLAPPEDWINDOW,  CW_USEDEFAULT,if (!Register. Class(&wc)) return FALSE; hwnd = Create. Window(Name. Class, “My Appication”, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 300, 0, 0, h. Inst, NULL); if (!hwnd) return FALSE; Show. Window(hwnd, SW_SHOW); while(Get. Message(&msg, 0, 0, 0)) Dispatch. Message(&msg); return msg. w. Param; }

LRESULT CALLBACK Wnd. Proc (HWND hwnd,  UINT msg, WPARAM w. Param, LPARAM l. Param) {LRESULT CALLBACK Wnd. Proc (HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param) { switch(msg) { case WM_DESTROY: { Post. Quit. Message(0); return 0; } } return Def. Window. Proc(hwnd, msg, w. Param, l. Param); }

Элемент управления – это компонент окна приложения, который используются для управления работой этого приложения. Отличительные особенностиЭлемент управления – это компонент окна приложения, который используются для управления работой этого приложения. Отличительные особенности элементов управления : 1. для них описаны классы окон; 2. все они являются дочерними окнами; 3. для всегда необходимо описывать идентификаторы; 4. для них описаны дополнительные стили и набор сообщений.

Классы для создания элементов управления 1.  “button” - для реализации любых типов кнопок; 2. “edit”Классы для создания элементов управления 1. “button” — для реализации любых типов кнопок; 2. “edit” — для реализации поля ввода (редактирования); 3. “listbox” — для реализации списка; 4. “combobox” — для реализации комбинированного списка (поле вода со списком); 5. “scrollbar” — для реализации полосы прокрутки; 6. “static” — для реализации статического поля.

Алгоритм создания элемента управления : 1.  Описание идентификатора (например,  #define  ID_BUTTON  200Алгоритм создания элемента управления : 1. Описание идентификатора (например, #define ID_BUTTON 200 ) ; 2. Описание дескриптора элемента (например, в теле оконной процедуры родительского окна: static HWND h. Button ) ; 3. Создание элемента (с помощью функции Create. Window() со стилем WS_CHILD. Например, h. Button= Create. Window(“button”, “OK”, WS_CHILD|WS_VISIBLE, 0, 0, 40, 20, hwnd, (HMENU)ID_BUTTON, h. Ins, NULL) )

#include windows. h #define ID_BUTTON 1 101 #define ID_BUTTON 2 102 // аналогично предыдущему примеру LRESULT#include #define ID_BUTTON 1 101 #define ID_BUTTON 2 102 // аналогично предыдущему примеру LRESULT CALLBACK Wnd. Proc (HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param) { static HWND h. But 1, h. But 2; switch(msg) { case WM_CREATE: { Create. Window(“button”, “K 1”, WS_CHILD|WS_VISIBLE, 50, 40, 20, hwnd, (HMENU)ID_BUTTON 1, h. Ins, NULL); Create. Window(“button”, “K 2”, WS_CHILD|WS_VISIBLE, 130, 50, 40, 20, hwnd, (HMENU)ID_BUTTON 2, h. Ins, NULL); return 0; }

case WM_COMMAND: { switch (LOWORD(w. Param)) { case ID_BUTTON 1: { Message. Box(hwnd, “Press K 1”,case WM_COMMAND: { switch (LOWORD(w. Param)) { case ID_BUTTON 1: { Message. Box(hwnd, “Press K 1”, “Mes”, MB_OK); return 0; } case ID_BUTTON 2: { Message. Box(hwnd, “Press K 2”, “Mes”, MB_OK); return 0; } } return 0; }

case WM_DESTROY: { Post. Quit. Message(0); return 0; } } return Def. Window. Proc(hwnd, msg, w.case WM_DESTROY: { Post. Quit. Message(0); return 0; } } return Def. Window. Proc(hwnd, msg, w. Param, l. Param); }

18Работа с меню 18Работа с меню

Меню используются для изменения режимов работы приложения. Состоит меню из пунктов, команд и сепараторов. 19 Меню используются для изменения режимов работы приложения. Состоит меню из пунктов, команд и сепараторов.

Виды меню : - Системное; - Главное; - Контекстное (всплывающее). 20 Виды меню : — Системное; — Главное; — Контекстное (всплывающее).

Элемент меню может быть представлен: - строкой символов; - графическим объектом (растровое изображение). Пункт меню, какЭлемент меню может быть представлен: — строкой символов; — графическим объектом (растровое изображение). Пункт меню, как и контекстное меню, создается в виде временного меню.

Существует два способа создания меню:  Динамический  (в период выполнения приложения: либо в главной функции,Существует два способа создания меню: Динамический (в период выполнения приложения: либо в главной функции, либо в оконной процедуре обработки сообщений); Статический (до запуска приложения на выполнение: использование файла ресурсов).