Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекции 2-3.pptx
Скачиваний:
62
Добавлен:
18.02.2023
Размер:
197.77 Кб
Скачать

Текст программы

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

{

HWND hwnd = FindWindow("ParentWindowClass", "Main window"); if(!hwnd){

MessageBox(0,“Приложение не запущено!", "Сообщение", MB_OK); return 0;

}

if (MessageBox(0,"Приложение найдено! Закрыть его?", "Сообщение", MB_YESNO) == IDYES)

{

PostMessage(hwnd,WM_DESTROY,0,0);

}

return 0;

}

Некоторые функции приема или передачи сообщения

Отправка сообщений нескольким получателям: LONG BroadcastSystemMessage(

DWORD dwFlags,

//Флаги режима оправки сообщения

LPDWORD lpdwRecipients, //Информация об адресатах

UINT uMsg,

//Код сообщения

WPARAM wParam,

//Первый параметр сообщения

LPARAM lParam

//Второй параметр сообщения

);

 

Некоторые значения dwFlag:

BSF_FLUSHDISK – выводить буфера на диск после обработки сообщения каждым получателем,

BSF_IGNORECURRENTTASK – не посылать сообщения окнам, принадлежащим текущей задаче

BSF_POSTMESSAGE – выставить сообщение и не дожидаться ответа,

BSF_QUERY – посылать сообщение одному получателю, отправляя его следующему получателю, только если текущий получатель возвратит TRUE.

Некоторые значения dwRecipients:

BSM_ALLCOMPONENTS – посылать сообщение всем компонентам,

BSM_ALLDESKTOPS – посылать сообщение адресованное всем рабочим столам,

BSM_APPLICATIONS – посылать сообщение всем приложениям.

Функция передачи данных параметра сообщения (wParam и

т.д.) первоначальной процедуре обработки сообщения для

нормальной обработки.

LRESULT CallWindowProc(

WNDPROC wndprcPrev, //Указатель на предыдущую процедуру

HWND hWnd,

//Дескриптор окна, получающего сообщение

UINT uMsg,

//Код сообщения

WPARAM wParam,

//Первый параметр сообщения

LPARAM lParam

 

//Второй параметр сообщения

);

 

 

Используется во время подклассов оконных элементов управления: BUTTON, SCROLLBAR и т.д. Данная функция используется в конце процедуры обработки сообщения, для передачи сообщения на обработку, предусмотренную по умолчанию.

Функция обработки сообщений по умолчанию. LRESULT DefWindowProc(

HWND hWnd,

//Дескриптор окна, получающего

//сообщение

UINT uMsg,

//Код сообщения

WPARAM wParam,

//Первый параметр сообщения

LPARAM lParam

//Второй параметр сообщения

);

 

Используется обработки всех сообщений, которые не обрабатываются основной функцией приложения (WndProc)

Функция завершения сеанса работы пользователя: BOOL ExitWindows(DWORD dwReserved, UINT uReserved);

Функция закрывает все приложения пользователя и завершает сеанс работы. Пользователю отображается окно входа в систему.

Параметры функции не используются и должны быть равны 0.

Функция завершения работы системы:

BOOL ExitWindowsEx(UINT uOptions, DWORD dwReserved);

Значения uOptions:

EWX_FORCE – завершить процессы, которые не отвечают на сообщения,

EWX_FORCEIFHUNG – завершить процессы, которые не отвечают на сообщения WM_QUERYENDSESSIN или WM_ENDSESSIN.

EWX_LOGOFF – остановить все приложения текущего пользователя и завершить сеанс работы,

EWX_POWEROFF – остановить систему и выключить питание,

EWX_REBOOT – остановить, а затем перезапустить систему.

EWX_SHUTDOWN – остановить систему, чтобы можно было безопасно выключить питание.

Для выполнения последних трех действий приложение должно иметь привилегию SE_SHUTDOWN_NAME

Функция получения позиций курсора последнего выбранного сообщения:

DWORD GetMessagePos();

В младшем слове содержится координата x, а в старшем слове – координата y.

Функция получения времени размещения сообщения в очереди сообщений (в миллисекундах с момента начала работы Windows):

LONG GetMessageTime();

Функция проверки наличия сообщения в очереди сообщений: BOOL GetMessage(

LPMSG lpMsg, //Указатель на структуру MSG HWND hWnd, //Дескриптор окна

UINT uMsgFilterMin, //Минимальный номер отслеживаемых сообщений UINT uMsgFilterMax, //Максимальный номер отслеживаемых сообщений

UINT uRemoveMsg //Признак необходимости удаления сообщения из //очереди

);

Значения uRemoveMsg:

PM_NOREMOVE – сообщение остается в очереди сообщений

PM_REMOVE – сообщение удаляется из очереди сообщений

PM_QS_INPUT – обрабатывать только сообщения мыши и клавиатуры

PM_QS_PAINT - обрабатывать только сообщения касающиеся вывода на экран

PM_QS_POSTMESSAGE - обрабатывать все выставляемые сообщения, в том числе от таймеров и вызывающих клавиш

PM_QS_SENDMESSAGE – обрабатывать все отправленные сообщения.

Функция передачи сообщения завершения приложения:

void PostQuitMessage(int iExitCode);

Выставляет сообщение WM_QUIT. В параметре передается код завершения приложения.

Следующая

тема:

Элементы

управления

окна

Соседние файлы в папке Лекции