帮我看看这段程序------面条(100分)

  • 主题发起人 主题发起人 面条
  • 开始时间 开始时间

面条

Unregistered / Unconfirmed
GUEST, unregistred user!
又一位大虾退隐了,真是让人伤感。
我发现这一段大富翁上的问题,越来越没有深度了,不知这样
下去,会.........
有一段程序,哪位有空给看看:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,shellapi;
const
WM_BARICON=WM_USER+200;

type
TForm1 = class(TForm)
private
procedure WMSysCommand(var Message: TMessage);
message WM_SYSCOMMAND;
procedure WMBarIcon(var Message:TMessage);message WM_BARICON;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMSysCommand(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_MINIMIZE then
begin
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'Samples';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_ADD,lpData);
dispose(lpData);
Form1.Visible := False;
end
else
begin
//如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。

DefWindowProc(Form1.Handle,Message.Msg,Message.WParam,Message.LParam);
end;
//
end;
procedure TForm1.WMBarIcon(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if (Message.LParam = WM_LBUTTONDOWN) then
begin
//如果用户点击任务栏图标则将图标删除并回复窗口。
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'Samples';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
end;

end.

问题是最小化后不出任务栏图标
 

lpData:PNotifyIconData;
作为全局变量。
 
李維delphi4實戰1的CD中有個控件可看一下
 
呵呵, 那是因为你form1.icon=nil的缘故:-)
lpData.hIcon := LoadIcon(hInstance, 'MAINICON');
//Form1.Icon.Handle;
另外
DefWindowProc(Form1.Handle,Message.Msg,Message.WParam,Message.LParam);
改成
inherited;
不是省事:-)
 
收到SC_MINIMIZE消息了吗?
 
amo、cytown:
我按你们说的分别改了,毛病还是存在。
我的代码可以运行,建议你们试一试。
cAkk:
收到了,其他都正常,就是任务栏上没图标。
 
面条: 我把你的代码拷到我的程序里面,一切正常,一点毛病没有!
我唯一改动的地方就是给form加了一个图标.
 
cAkk:
我的也有图标啊!
是不是我的Delphi出问题了?
加图标不就是:
project->options->application->load icon
 
form的图标
form.icon
 
不!给你的form加上图标!!! form.icon! not application.icon!
 
!@@$@%%^$^$^&$#&
 
多人接受答案了。
 
后退
顶部