Возвращаемое значение содержит ссылку на копию системного меню или его оригинал.
Так, для добавления в системное меню команды о разработчике приложения (About) можно воспользоваться следующим фрагментом:
Туре TMyMainWindow=object(TWindow)
.....
Procedure SysComm(varmsg:TMessage);
virtual wm_Flrst+wm_SysCommand;
End;
Procedure TMyMainWindow.SysComm;
Var
TempDir: Array[0..fsDirectory] of Char;
Begin
Case msg.wParam of
id_about :
Application^. ExecDlalog(New(Paboutdlg,
Init(@Self, 'pmabout')));
id_help:
begin
WinHelp(hWindow, 'MyHelp', HELP_INDEX, 0);
end;
else defwndproc(msg)
end
End;
Procedure TMyMainWindow.SetupWindow;
Var
AsMenu: HMenu;
Begin
TWindow.SetupWindow;
AsMenu := GetSystemMenu(hWindow, false);
AppendMenu(AsMenu, mf_SEPARATOR, 0, NIL);
AppendMenu(AsMenu, mf_BYCOMMAND or
mf_STRING, id_about, '&About ...');
AppendMenu(AsMenu, mf_SEPARATOR, 0, NIL);
AppendMenu(AsMenu, mf_BYCOMMAND or mf_STRING, id_Help, '&Help');
Следует обратить внимание на организацию обработки команд системного меню. Выбор команды системного меню приводит к посылке сообщения wm_SysCommand вместо сообщения wm_Command. Это следует учитывать при организации обработки таких команд. Данный фрагмент ориентирован на обработку сообщений системного меню в программе, использующей библиотеку ObjectWindows. Обратите внимание на обязательное обращение к функции DefWndProc в обработчике сообщения. В противном случае нарушится нормальное функционирование системного меню.
Плавающее меню
Windows позволяет использовать меню, размещаемое в произвольном месте окна. В этом случае возможно использование только одного всплывающего подменю. После создания такого меню с помощью функции CreatePopupMenu и добавления необходимых команд меню размещают в требуемом месте окна с помощью функции TrackPopupMenu.
Function TrackPopupMenu(Menu: HMenu; Flags: Word; X, Y, Reserved: Integer; Wnd: HWnd; Reserved: Pointer): Bool;
Menu - ссылка на созданное подменю;
Flags не используется и должен быть 0;
X и Y - координаты левого верхнего угла меню в экранных координатах;
Reserved устанавливайте в 0;
Wnd - ссылка на окно, использующее меню;
Reserved устанавливайте в Nil.
Функция возвращает истинное значение, если меню успешно ак-тивированно, в противном случае - ложное.
После использования меню его можно уничтожить. Для размещения меню в окне следует воспользоваться функцией ClientToScreen, которая переводит экранные координаты в оконные.
Задания:
1. Создать окно, содержащее заголовок, произвольную иконку, кнопки максимизации, минимизации, закрытия окна.
2. При помощи редактора ресурсов в окне создать строчное и всплывающие меню, при этом придерживаться следующих требований:
Existing Document
FileèOpen
New Document
File |
Edit |
View |
Help |
3. Представить отчет о проделанной работе.
Контрольные вопросы:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.