Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Значения wMBType






 

Значение Возвращаемое значение
  МB_ABORTRETRYIGNORE Отображение кнопок Abort, Retry, и Ignore
  MB_ICONEXCLAMATION Показ иконки «восклицательный знак»
  MB_ICONHAND Отображается иконка «знак Стоп»
  MB_ICONINFORMATION Отображается иконка «информация»
  MB_ICONQUESTION Показ иконки «вопросительный знак»
  MB_ICONSTOP То же, что и MB_ICONHAND
  MB_OK Отображается кнопка ОК
  MB_OKCANCEL Отображаются кнопки ОК и Cancel
  MB_RETRYCANCEL Отображаются кнопки Retry и Cancel
  MB_YESNO Отображаются кнопки Yes и No
  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;

}

 

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

 

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

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

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

 



Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал