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

Вниз

проблемка с Popupmenu   Найти похожие ветки 

 
fixer   (2005-07-28 12:39) [0]

Значит дело вот в чём,
вешаю в таскбар notify иконку (Shell_NotifyIcon)
и соответственно по правой кнопке вызываю там PopupMenu
оно есесно выскакивает, НО если теперь кликнуть какое-нибудь
левое окно, то оно(PopupMenu) НЕ ЗАКРЫВАЕТСЯ, а так и висит, пока
его или форму(которой оно принадлежит) не кликнуть.
Чё за фигня?
Помогите пожалуйста


 
chili   (2005-07-28 12:44) [1]

Код покажи


 
chili   (2005-07-28 12:53) [2]


type
TMainForm = class(TForm)
   SetupItem: TMenuItem;

private
   procedure WMTrayNotify(var Msg: TMessage); message
WM_TRAYNOTIFY;
.........


procedure TMainForm.WMTrayNotify(var Msg: TMessage);
var
 pt: TPoint;
begin
 case Msg.LParam of
   WM_LBUTTONDBLCLK:
     begin
       if SetupItem.Enabled then
         SetupItem.Click;
     end;
   WM_RBUTTONUP:
     begin
       GetCursorPos(pt);
       SetForegroundWindow(WindowHandle);
       Application.ProcessMessages;
       TrayPopupMenu.Popup(pt.X, pt.Y);
     end;
 end;
end;


 
fixer   (2005-07-28 13:01) [3]

Ну показываю код...

unit FMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus;

type
 TMainWnd = class(TForm)
   NotifyPopup: TPopupMenu;
   miExit: TMenuItem;
   miRestore: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure miExitClick(Sender: TObject);
 protected
   procedure WndProc(var msg: TMessage); override;
 private
 public
 end;

var
 MainWnd: TMainWnd;

implementation
{$R *.dfm}

uses Math, ShellApi;

const NotifyIconMessage = WM_USER + 1;

function SetNotifyIcon(const tip: string; var nid: TNotifyIconData): boolean;
begin
 nid.cbSize:=SizeOf(TNotifyIconData);
 nid.Wnd:=MainWnd.Handle;
 nid.uID:=1;
 nid.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
 nid.uCallbackMessage:=NotifyIconMessage;
 nid.hIcon:=Application.Icon.Handle;
 FillChar(nid.szTip,SizeOf(nid.szTip),0);
 CopyMemory(@nid.szTip,pointer(tip),min(length(tip),length(nid.szTip)));
 result:=Shell_NotifyIcon(NIM_ADD,@nid);
end;

procedure RmvNotifyIcon();
var nid: TNotifyIconData;
begin
 nid.cbSize:=SizeOf(TNotifyIconData);
 nid.Wnd:=MainWnd.Handle;
 nid.uID:=1;
 nid.uFlags:=0;
 Shell_NotifyIcon(NIM_DELETE,@nid);
end;

procedure TMainWnd.WndProc(var msg: TMessage);
var nid: TNotifyIconData;
   p: TPoint;
begin
 inherited;
 case msg.Msg of
   CM_WININICHANGE: begin
     SetNotifyIcon("",nid);
   end;
   NotifyIconMessage: begin
     p:=Mouse.CursorPos;
     case msg.LParam of
       WM_RBUTTONUP: begin
         NotifyPopup.Popup(p.X,p.Y);
       end;
     end;
   end;
 end;
end;

procedure TMainWnd.FormCreate(Sender: TObject);
var nid: TNotifyIconData;
begin
 SetNotifyIcon("",nid);
end;

procedure TMainWnd.FormDestroy(Sender: TObject);
begin
 RmvNotifyIcon();
end;

procedure TMainWnd.miExitClick(Sender: TObject);
begin
 Self.Close;
end;

end.


 
Экспериментатор   (2005-07-28 13:04) [4]

Дело не в коде
Где то в факах кладовках есть решение. Поищи
или посмотри в исходниках RX - как они сделали


 
fixer   (2005-07-28 13:06) [5]

Ой, не успел код подослать уже ответ есть !
Спасибки за оперативность!
ЗЫ: щас отобедаю буду дальше думать...



Страницы: 1 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.01 c
14-1124394968
TG
2005-08-18 23:56
2005.09.18
Windows Vista


6-1117186897
Ильичев С.А.
2005-05-27 13:41
2005.09.18
Status Bar Internet Explorer


1-1124925531
Kisha
2005-08-25 03:18
2005.09.18
Синтаксический анализатор


14-1125085155
Progamer
2005-08-26 23:39
2005.09.18
Кони vs Ливерпуль


3-1122989575
Hose
2005-08-02 17:32
2005.09.18
QR 3.6 Prof и композитный отчет. Как печатать с новой страницы?





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