Форум: "WinAPI";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизMenu средствами Windows API Найти похожие ветки
← →
oleg_SYS © (2005-02-16 16:21) [0]Уважаемые мастера, мне очень нужен пример создания Menu (как TPopupMenu в VCL) средствами Windows API, разумеется, с подменю и с определением выбранного элемента. Того, кто мне поможет, ждёт символическое вознаграждение: 8-значный XY номер от ICQ 52552552 с пм.
Связаться со мной можно по асе 446467 или мылу oleg_SYS@mail.ru
Спасибо!
← →
dimaxx © (2005-02-16 20:23) [1]Могу предложить только набор функций для создания меню, а реализация - эт за тобой.
← →
oleg_SYS © (2005-02-16 20:55) [2]dimaxx, информация о меню с помощью апи в интернете есть, но когда начинаю реализовывать, меню то не создаётся вовсе, то становится толшиной 5 пикселов, а мне нужно срочно заканчивать программу.
← →
Kerk © (2005-02-16 21:01) [3]выдрано из моего исходника (поэтому немного лишнего тут :))
procedure ShowMenu;
var
P: TPoint;
Mnu: HMENU;
begin
Mnu := CreatePopupMenu;
AppendMenu(Mnu,0,100,"О программе...");
AppendMenu(Mnu,MF_SEPARATOR,0,nil);
AppendMenu(Mnu,0,101,"Очистить статистику");
AppendMenu(Mnu,0,102,"Закрыть");
GetCursorPos(P);
SetForegroundWindow(handleWnd);
TrackPopupMenu(Mnu,TPM_RIGHTALIGN,P.X,P.Y,0,handleWnd,nil);
PostMessage(handleWnd,WM_NULL,0,0);
DestroyMenu(Mnu);
end;
procedure ProcessMenu(const ID: Word);
begin
case ID of
100: MessageBox(0,sMouseMonitor + " " + sVer +#13#10#13#10+
"Dedicated to P.A.V."#13#10"c2004 Roman Jankovski aka Kerk",
"О программе...",MB_ICONINFORMATION+MB_SETFOREGROUND);
101: if MessageBox(0,"Очистить статистику?",
sMouseMonitor,MB_YESNO+MB_ICONQUESTION+MB_SETFOREGROUND) = IDYES then
begin
SetFilePointer(F,0,nil,FILE_BEGIN);
SetEndOfFile(F);
end;
102: if MessageBox(0,"Вы действительно хотите закрыть "+sMouseMonitor+"?",
sMouseMonitor,MB_YESNO+MB_ICONQUESTION+MB_SETFOREGROUND) = IDYES then
DestroyWindow(handleWnd);
end;
end;
function WindowProc(Window: HWND; aMessage, wParam,
lParam: LongInt): LongInt; stdcall;
begin
Result := DefWindowProc(Window,aMessage,wParam,lParam);
case AMessage of
CAT_WRITE: WriteToFile(wParam,lParam);
CAT_TRAYICON:
if (lParam = WM_LBUTTONDOWN) or (lParam = WM_RBUTTONDOWN) then ShowMenu;
WM_DESTROY: DestroyWnd;
WM_COMMAND: ProcessMenu(wParam);
end;
end;
давай восьмизнак раз обещал :))))
← →
oleg_SYS © (2005-02-16 22:01) [4]Всё работает, асю дал :)
← →
oleg_SYS © (2005-02-16 23:22) [5]Всё работает, асю дал :)
← →
Grief © (2005-02-17 07:15) [6]Хотется спросить, а как присобачить у ентого самого попапа слева битмап? как в меню пуск 98 окон
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.131 c