Главная страница
    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.46 MB
Время: 0.085 c
14-1110053626
Vasya.ru
2005-03-05 23:13
2005.03.27
Помогите найти алгоритм


1-1110389726
John
2005-03-09 20:35
2005.03.27
Поиск файлов


14-1110220844
SergSerSh
2005-03-07 21:40
2005.03.27
Клиент для форума


14-1109941590
olookin
2005-03-04 16:06
2005.03.27
Как тестируют сайты?


3-1109666951
Топпер
2005-03-01 11:49
2005.03.27
IBExpert глюк или фича





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский