![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Значения wMBType
Пример 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 и иконкой «знак Стоп». Поэкспериментируйте самостоятельно с окнами сообщений, изменяя их тип.
|