Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.038 c
8-1102816081
I m A
2004-12-12 04:48
2005.03.27
Пунктирная линия


3-1109156267
ilias1979
2005-02-23 13:57
2005.03.27
Как считать содержимое файла чтобы загнать его в blob базы


14-1110226586
Fatal
2005-03-07 23:16
2005.03.27
Delphi2005


1-1111045524
Paul___
2005-03-17 10:45
2005.03.27
Завершить сразу все экземпляры приложения


1-1111052328
denis24
2005-03-17 12:38
2005.03.27
Grid+OnMouseDown





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский