здается всплывающее меню, а затем отображается в координатах курсора мыши. На рис. 6.7 показано, как выглядит незакрепленное всплывающее меню.
TrackPopupMenuEx • Windows 98 • Windows 2000 |
||||||||||
Описание |
Функция TrackPopupMenuEx аналогична функции TrackPopupMenu, за исключением того, что в приложении можно указать прямоугольную область экрана, которая не должна перекрываться этим меню. Эта функция удобна, если в приложении желательно не закрывать какую-то важную область. |
|||||||||
Синтаксис |
BOOL TrackPopupMenuEx( HMENU hMenu, UINT uFlags, int x, int y, HWND kwnd, LPTPMPARAMS Ipipm ) |
|||||||||
Параметры |
||||||||||
hMenu |
HMENU. Дескриптор всплывающего меню, которое должно быть отображено. Всплывающее меню можно создать, применив функцию CreatePopupMenu или вызвав функцию GetSubMenu для выборки дескриптора всплывающего меню, связанного с существующим пунктом меню. |
|||||||||
и Flags |
UINT. Указывает опции позиционирования и другие опции. Этот параметр может состоять из нуля или более флажков, перечисленных в табл. 6.18, которая приведена в описании функции TrackPopupMenu, и может также включать одно из значений, перечисленных в табл. 6.19. |
|||||||||
Таблица 6.19. РасширенныйнаборзначенийпараметраuFlags функцииTrackPopupMenuEx |
||||||||||
Значение |
Описание |
|||||||||
TPM_HORIZONTAL |
Если меню нельзя показать в указанном месте без наложения на исключенный прямоугольник, затребованное выравнивание по горизонтали имеет приоритет над затребованным выравниванием по вертикали. |
|||||||||
TPM_VERTICAL |
Если меню нельзя показать в указанном месте без наложения на исключенный прямоугольник, затребованное выравнивание по вертикали имеет приоритет над затребованным выравниванием по горизонтали. |
|||||||||
д: |
int. Горизонтальное расположение всплывающего меню, заданное в экранных координатах. |
|||||||||
У |
int. Вертикальное расположение всплывающего меню, заданное в экранных координатах. |
|||||||||
kwnd |
HWND. Дескриптор окна, которому принадлежит всплывающее меню. Это окно принимает все сообщения от меню. Сообщение \VM_COMMAND не отправляется до тех пор, пока функция не выполнит возврат. |
|||||||||
Iptpm |
LPTPMPARAMS. Указатель на структуру TPMPARAMS. Эта структура указывает область экрана, на которую не должно накладываться меню. |
|||||||||
Параметр Iptpm может принимать значение NULL. См. приведенное ниже определение структуры TPMPARAMS. |
||||||||||
Возвращаемое значение |
BOOL. Если указан флажок TPM_RETURNCMD, возвращаемое значение — пункт меню, который выбрал пользователь. Если пользователь отменил выбор пункта меню или произошла ошибка, возвращаемое значение — нуль. Если флажок TPM_RETURNCMD не указан и функция была выполнена успешно, возвращаемое значение отлично от нуля; в ином случае возвращаемое значение — нуль. |
|||||||||
Включаемый файл |
winuser.h |
|||||||||
См. также |
TrackPopupMenu, GetMenu, GetSubMenu, CreatePopupMenu |
|||||||||
Соответствующие сообщения |
||||||||||
WM_COMMAND |
||||||||||
Определение TPMPARAMS |
||||||||||
typedef struct tagTPMPARAMS { UINT cbSize; RECT rcExclude ; } TPMPARAMS , *LPTPMPARAMS ; |
||||||||||
Члены |
||||||||||
cbSize |
UINT. Размер структуры в байтах. |
|||||||||
rcExdude |
RECT. Прямоугольник, который должен быть исключен при позиционировании окна, в экранных координатах. |
|||||||||
Пример |
Следующий пример аналогичен предыдущему, за исключением того, что всплывающее меню не перекрывает дочернее окно. Координаты дочернего окна выбираются и передаются функции TrackPopupMenuEx. |
|||||||||
Са. \local-sources\cbap06\06-27.txt |
||||||||||
TranslateAccelerator • Windows 98 • Windows 2000 |
||||||||||
Описание |
Комбинации оперативных клавиш определены в части ACCELERATOR файла ресурса (RC). Перед использованием таблицы оперативных клавиш необходимо выбрать дескриптор этой таблицы с помощью функции LoadAccelerators. Для преобразования в цикле обработки сообщений программы введенных комбинаций в команды, указанные в таблице оперативных клавиш, применяется функция TranslateAccelerator, Оперативные клавиши могут применяться в качестве клавиатурных сокращений вместо команд меню. Их можно также использовать для отправки системе командных сообщений, не имеющих эквивалентов в меню. Если функция TranslateAccelerator возвращает ненулевое значение, это значит, что она успешно преобразовала комбинацию клавиш и отправила команду в функцию обработки сообщений программы. Приложение не должно позволять обычным функциям TranslateMessage и DispatchMessage повторно обрабатывать эти комбинации клавиш. Для предотвращения такой ситуации в цикле обработки сообщений программы в функции WinMain применяется следующая структура. |
|||||||||
while ( GetMessage( Smsg, NULL, 0, 0 ) ) { if ( !hAccel I I ! TranslateAccelerator ( hWnd,hAccel, Smsg ) ) < TranslateMessage ( Smsg ) ; DispatchMessage ( Smsg ) ; > } После преобразования оперативной клавиши сообщение отправляется непосредственно в функцию обработки сообщений программы, минуя очередь сообщений. Идентификационное значение оперативной клавиши отправляется в качестве параметра wParam сообщения WM_COMMAND (обычный случай) или сообщения \VM_SYSCOMMAND (если идентификационным значением является одно из идентификационных значений системного меню, перечисленных в табл. 6.10). |
||||||||||
Синтаксис |
int TranslateAccelerator( HWND hWnd, HACCEL haccl, LPMSG Ipmsg ) |
|||||||||
Параметры |
||||||||||
hWnd |
HWND. Дескриптор окна с функцией обработки сообщений (WndProc), которая должна принимать преобразованные сообщения. Обычно это — главное окно приложения. |
|||||||||
haccl |
HACCEL. Дескриптор таблицы оперативных клавиш, выбранный с применением функции LoadAccelerators или CreateAcceleratorTable. |
|||||||||
Ipmsg |
LPMSG. Указатель на структуру MSG. Эта структура содержит данные сообщения, полученные при вызове функции GetMessage. |
|||||||||
Возвращаемое значение |
int. TRUE, если значение комбинации клавиш было преобразовано в команду оперативной клавиши; в ином случае возвращаемое значение — FALSE. |
|||||||||
Включаемый файл |
winuser.h |
|||||||||
См. также |
CreateAcceleratorTable , LoadAccelerators |
|||||||||
Соответствующие сообщения |
||||||||||
WM_COMMAND, WM_SYSCOMMAND |
||||||||||
Пример |
См. пример для функции LoadAccelerators. |
|||||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.