Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
6-1106561928
Redis
2005-01-24 13:18
2005.03.27
Программно отправить MMS через GPRS модем


14-1109957843
TUser
2005-03-04 20:37
2005.03.27
Ваше мнение


1-1110958296
Aleks
2005-03-16 10:31
2005.03.27
Базы компонент DBGrid1 как узнать номер строки????


14-1109949577
аноним_
2005-03-04 18:19
2005.03.27
Вопрос по javascript


3-1109836998
neat
2005-03-03 11:03
2005.03.27
Отследить изменение поля таблицы в DBGrid