Главная страница
    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.046 c
1-1110950725
SergP
2005-03-16 08:25
2005.03.27
Поиск подстроки в контенте принятом TClientSocket


4-1108383439
whitepower
2005-02-14 15:17
2005.03.27
Сообщения у области tray


1-1110815904
mordush
2005-03-14 18:58
2005.03.27
Поисковик


14-1110173906
begin...end
2005-03-07 08:38
2005.03.27
С Днём рождения! 7 марта


3-1109232078
Топпер
2005-02-24 11:01
2005.03.27
Log FireBird1.5 SS под Linux





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