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

Значения wMbType

Значение

Возвращаемое значение

1

МB_ABORTRETRYIGNORE

Отображение кнопок Abort, Retry, и Ignore

2

MB_ICONEXCLAMATION

Показ иконки «восклицательный знак»

3

MB_ICONHAND

Отображается иконка «знак Стоп»

4

MB_ICONINFORMATION

Отображается иконка «информация»

5

MB_ICONQUESTION

Показ иконки «вопросительный знак»

6

MB_ICONSTOP

То же, что и MB_ICONHAND

7

MB_OK

Отображается кнопка ОК

8

MB_OKCANCEL

Отображаются кнопки ОК и Cancel

9

MB_RETRYCANCEL

Отображаются кнопки Retry и Cancel

10

MB_YESNO

Отображаются кнопки Yes и No

11

MB_YESNOCANCEL

Отображается кнопка Yes

Пример 4-1. Вот простой пример программы, отображающей окно сообщения при нажатии кнопки мыши:

// Демонстрация окон сообщений

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

LRESULT CALLBACK WindowFunc(HWND, UINT,

WPARAM, LPARAM);

char szWinName[]="МоеОкно"; // Имя класса окна

int WINAPI WinMain(HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

{

HWND hwnd;

MSG msg;

WNDCLASS wcl; // Определить класс окна

wcl.hInstance=hThisInst; // Дескриптор приложения

wcl.lpszClassName=szWinName; // Имя класса окна

wcl.lpfnWndProc=WindowFunc; // Функция окна

wcl.style=0; // Стиль по умолчанию

wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);// Иконка

wcl.hCursor=LoadCursor(NULL,IDC_ARROW); // Курсор

wcl.lpszMenuName=NULL; // Без меню

wcl.cbClsExtra=0; // Без дополнительной информации

wcl.cbWndExtra=0;

wcl.hbrBackground=

(HBRUSH)GetStockObject(WHITE_BRUSH); //Белый фон

if(!RegisterClass(&wcl)) // Регистрируем класс окна

return 0;

hwnd=CreateWindow(szWinName, // Создать окно

"Обработка сообщений мыши",

WS_OVERLAPPEDWINDOW, // Стиль окна

CW_USEDEFAULT, // x-координата

CW_USEDEFAULT, // y-координата

CW_USEDEFAULT, // Ширина

CW_USEDEFAULT, // Высота

HWND_DESKTOP, // Нет родител. окна

NULL, // Нет меню

hThisInst,// Дескриптор приложения

NULL); // Нет дополнит. аргументов

ShowWindow (hwnd, nWinMode); // Показать окно

UpdateWindow (hwnd); // и перерисовать

while(GetMessage(&msg,NULL,0,0)) // Запустить цикл

{ // обработки сообщений

TranslateMessage(&msg); // Разреш. исп. клавиатуры

DispatchMessage (&msg); // Вернуть управл. Windows

}

return msg.wParam;

}

// Следующая функция вызывается операционной

// системой Windows и получает в качестве

// параметров сообщения из очереди сообщений

// данного приложения

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

{

int response;

switch(message)

{

case WM_RBUTTONDOWN: // Нажата правая кнопка мыши

response = MessageBox(hwnd,

"Выберите действие",

"Правая кнопка",

МB_ABORTRETRYIGNORE);

switch(response)

{

case IDABORT:

MessageBox(hwnd, "", "Abort", MB_OK);

break;

case IDRETRY:

MessageBox(hwnd, "", "Retry", MB_OK);

break;

case IDIGNORE:

MessageBox(hwnd, "", "Ignore", MB_OK);

break;

}

break;

case WM_LBUTTONDOWN: // Нажата левая кнопка мыши

response = MessageBox(hwnd,

"Продолжить?",

"Левая кнопка",

MB_ICONHAND | MB_YESNO);

switch(response)

{

case IDYES:

MessageBox(hwnd, "Нажато", "Yes", MB_OK);

break;

case IDNO:

MessageBox(hwnd, "Нажато", "No", MB_OK);

break;

}

break;

case WM_DESTROY: // Завершение программы

PostQuitMessage(0);

break;

default:

// Все сообщения, не обрабатываемые в

// данной функции, направляются на обработку

// по умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

}

return 0;

}

Frame1

Рис. 4.1. Сообщение при нажатой правой кнопке

Каждый раз при нажатии кнопки мыши отображается окно сооб

щения. Например, при нажатии правой кнопки появится окно как на рис. 4.1. Как видите, в окне сообщения присутствуют кнопки Abort (Прервать), Retry (Повтор) и Ignore (Пропустить). При нажатии любой из них появится второе окно сообщения, показывающее, какая из кнопок была нажата. Нажатие левой кнопки мыши приведет к появлению окна сообщения с кнопками Yes, No и иконкой «знак Стоп».

Поэкспериментируйте самостоятельно с окнами сообщений, изменяя их тип.