Главная страница
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.48 MB
Время: 0.046 c
9-1116873712
iosif
2005-05-23 22:41
2005.09.18
Нужен пример OpenGL


1-1124909348
Ji
2005-08-24 22:49
2005.09.18
Не получается работать с UTF-8


2-1123673314
Xmen
2005-08-10 15:28
2005.09.18
QuickReport


1-1125308454
_makSim
2005-08-29 13:40
2005.09.18
Фоновый рисунок в Memo.


2-1123753919
Praktikant
2005-08-11 13:51
2005.09.18
Четвертая кнопка в правом верхнем углу