求助!为什么双击系统托盘不显示主窗体?

hellward 2007-11-08 12:53:42
代码如下
unit Fapp;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure WndProc(var Msg:TMessage);
procedure MyMinimize(Sender:TObject);
public
{ Public declarations }
IconData:TNotifyIconData;

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
IconData.cbSize:=sizeof(IconData);
IconData.Wnd:=Handle;
IconData.uID:=100;
IconData.uFlags:=NIF_MESSAGE+NIF_Icon+NIF_TIP;
IconData.uCallbackMessage:=WM_USER+1;
IconData.hIcon:=Application.Icon.Handle;

StrPCopy(IconData.szTip,Application.Title);

Shell_NotifyIcon(NIM_ADD,@IconData);

Application.OnMinimize:=MyMinimize;
MyMinimize(nil);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_Delete,@IconData);
Application.ProcessMessages;
Application.Terminate;
end;

procedure TForm1.WndProc(var Msg:TMessage);
begin
case Msg.Msg of
WM_USER+1:
case Msg.LParam of
WM_LBUTTONDOWN:
begin
Form1.Show;
ShowWindow(Application.Handle,SW_SHOWNORMAL);
end;
end;
end;
inherited;
end;

procedure TForm1.MyMinimize(Sender:TObject);
begin
Form1.Hide;
ShowWindow(Application.Handle,SW_Hide);
end;


end.
双击不显示主窗体,根本没有反应,怎么回事?请高手解答
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qi_jianzhou 2007-11-21
  • 打赏
  • 举报
回复
好像这两天有一个"托盘"标题的贴子,和你的差不多
qi_jianzhou 2007-11-21
  • 打赏
  • 举报
回复
你不应该这样用自定义的消息
GetError 2007-11-21
  • 打赏
  • 举报
回复
WndProc函数错了吧?
caijing28 2007-11-08
  • 打赏
  • 举报
回复
因为你在声明你的WndProc函数时,没有注明为重载或者覆盖
看下面
procedure WndProc(var Msg: TMessage); override;
有个override;
jwpl190 2007-11-08
  • 打赏
  • 举报
回复
在我这个已经可以运行了。
你把我的代码考过去试试。
要不你手工设置
FormStyle := fsStayOnTop;
hellward 2007-11-08
  • 打赏
  • 举报
回复
好象还不行
frankie_24 2007-11-08
  • 打赏
  • 举报
回复
SetForegroundWindow(MainFrm.Handle);
hellward 2007-11-08
  • 打赏
  • 举报
回复
能说一下原因吗?谢谢!
jwpl190 2007-11-08
  • 打赏
  • 举报
回复
现在可以了,自己对照一下看看有什么不一样。
unit Fapp;

interface

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

type
TfrmApp = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure WndProc(var Msg: TMessage); override;
procedure MyMinimize(Sender: TObject);
public
{ Public declarations }
IconData: TNotifyIconData;

end;

var
frmApp: TfrmApp;

implementation

{$R *.dfm}

procedure TfrmApp.FormCreate(Sender: TObject);
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.uID := 100;
IconData.uFlags := NIF_MESSAGE + NIF_Icon + NIF_TIP;
IconData.uCallbackMessage := WM_USER + 1;
IconData.hIcon := Application.Icon.Handle;

StrPCopy(IconData.szTip, Application.Title);


FormStyle := fsStayOnTop;
Application.OnMinimize := MyMinimize;
end;

procedure TfrmApp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_Delete, @IconData);
end;

procedure TfrmApp.WndProc(var Msg: TMessage);
begin
case Msg.Msg of
WM_USER + 1:
case Msg.LParam of
WM_LBUTTONDOWN:
begin
ShowWindow(Handle, SW_SHOWNORMAL);
end;
end;
end;
inherited;
end;

procedure TfrmApp.MyMinimize(Sender: TObject);
begin
Shell_NotifyIcon(NIM_ADD, @IconData);

end;


end.

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧