Получение сообщений быстрых клавиш 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Получение сообщений быстрых клавиш



 

 

Если быстрая клавиша связана с пунктом системного меню, функция TranslateAccelerator посылает оконной процедуре сообщение WM_SYSCOMMAND. В противном случае функция TranslateAccelerator посылает оконной процедуре сообщение WM_COMMAND. В следующей таблице показаны типы сообщений WM_COMMAND, которые можно получить для быстрых клавиш, команд меню и дочерних окон управления:

 

 

Младшее Старшее IParam

 

слово (LOWORD)слово (HIWORD) (wParam) (wParam)


Быстрая

 

клавиша:


Идентификат 1 0

 

ор быстрой


 


 

 

Меню:

 

Элемент


клавиши

 

Идентификат 0 ор меню

Идентификат Код


 

 

 

Описатель


 

управления: ор элементауведомления дочернего окна управления

 

 

Кроме этого, если быстрая клавиша соответствует пункту меню, оконная процедура получает сообщения WM _ NITMENU, WM _ NITMENUPOPUP и WM _ MENUSELECT точно также, как при выборе опции меню. Обычно, в программах при обработке сообщений WM _ INITMENUPOPUP делают разрешенными и запрещенными пункты всплывающих меню. При работе с быстрыми клавишами эта возможность по-прежнему имеется. Однако если быстрая клавиша соответствует запрещенному или недоступному пункту меню,


– 71 –

 

 

то функция TranslateAccelerator не посылает оконной процедуре сообщение WM

 

_ COMMAND или WM _ SYSCOMMAND.

 

 

При сворачивании активного окна для быстрых клавиш, соответствующих разрешенным пунктам системного меню, функция TranslateAccelerator посылает оконной процедуре сообщения WM _ SYSCOMMAND, а не сообщения WM _ COMMAND. Кроме того, функция TranslateAccelerator посылает оконной процедуре сообщения WM _ COMMAND для быстрых клавиш, которые не соответствуют ни одному из пунктов меню.


 

 

ЛЕКЦИЯ 7. МНОГОЗАДАЧНОСТЬ И МНОГОПОТОЧНОСТЬ

 

Общие сведения

 

 

Многозадачность (multitasking) – это способность операционной системы выполнять несколько программ одновременно. В основе реализации этого принципа на персональных ЭВМ лежит использование операционной системой аппаратного таймера для выделения отрезков времени (time sliced) для каждого из одновременно выполняемых процессов. Если эти отрезки времени достаточно малы, и машина не перегружена слишком большим числом программ, то пользователю кажется, что все эти программы выполняются параллельно.

 

 

Многопоточность (multithreading) – режим, при котором машинная программа содержит в себе параллельно исполняемые участки или процедуры (threads). Таким образом, механизм многопоточности дает возможность программе самой быть многозадачной.

 

 

Идея многозадачности не нова. Многозадачность реализуется на больших многопользовательских компьютерах типа мэйнфрэйм (mainframe), к которым подключены десятки, сотни терминалов. У каждого пользователя, сидящего за экраном такого терминала, создается впечатление, что он имеет эксклюзивный доступ ко всей машине. Кроме того, операционные системы таких компьютеров часто дают возможность пользователям перевести задачу в фоновый режим, где они выполняются в то время, как пользователь может работать с другой программой.

 

 

Персональные компьютеры на заре своей юности аппаратно не поддерживали многозадачность. Это было вполне оправдано. С одной стороны, стремление к дешевизне приводило к упрощенным аппаратным решениям. С другой стороны, пользователь и так получал в свое распоряжение все ресурсы компьютера, а работать с несколькими программами одновременно невозможно для обычного пользователя. Для решения другой задачи, пользователь мог выйти из текущей программы и загрузить новую.

 

 

Однако, со временем, работа на персональном компьютере стала просто требовать многозадачности. Например, представьте, что вам необходимо распечатать страниц 100 текста, да еще на матричном принтере. На это занятие уходит несколько часов. И если, при этом, компьютер не может делать ничего большего, как посылать информацию принтеру, то насколько утомительным будет этот процесс. А ведь еще совсем недавно именно так и печатались курсовые, дипломные и другие работы.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 329; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.192.3 (0.007 с.)