限定条件:所有控制代码,必须在基类完成。
constructor TBoxForm.Create(AOwner: TComponent);
var
lpData:PNotifyIconData;
begin
inherited;
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
//定义托盘图标结构。
lpData := new(PNotifyIconDataA);
//lpData变量字节数。
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := self.Handle;
//要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。
lpData.hIcon := Application.Icon.Handle;
//回调函数消息 。
lpData.uCallbackMessage := WM_BARICON;
//内部标识,可设为任意数。
lpData.uID :=0;
//托盘信息。
lpData.szTip := 'FWS版本升级程序';
//指明那些消息有效。
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
//将程序的窗口样式设为TOOL窗口,可避免在任务条上出现. SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); Shell_NotifyIcon(NIM_ADD,lpData);
//释放。
dispose(lpData);
ShowWindow(Application.Handle,SW_HIDE);
//Application.ShowMainForm := false;
end;
问题就出在最后一行代码上,当我继承这个基类,创建一个子类时,子类窗体上原先的可视化控件,都没有了,变成了光秃秃的窗体我怀疑最后一句代码使控件没有创建出来,到现在也没有找到合适的方法。
constructor TBoxForm.Create(AOwner: TComponent);
var
lpData:PNotifyIconData;
begin
inherited;
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
//定义托盘图标结构。
lpData := new(PNotifyIconDataA);
//lpData变量字节数。
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := self.Handle;
//要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。
lpData.hIcon := Application.Icon.Handle;
//回调函数消息 。
lpData.uCallbackMessage := WM_BARICON;
//内部标识,可设为任意数。
lpData.uID :=0;
//托盘信息。
lpData.szTip := 'FWS版本升级程序';
//指明那些消息有效。
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
//将程序的窗口样式设为TOOL窗口,可避免在任务条上出现. SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); Shell_NotifyIcon(NIM_ADD,lpData);
//释放。
dispose(lpData);
ShowWindow(Application.Handle,SW_HIDE);
//Application.ShowMainForm := false;
end;
问题就出在最后一行代码上,当我继承这个基类,创建一个子类时,子类窗体上原先的可视化控件,都没有了,变成了光秃秃的窗体我怀疑最后一句代码使控件没有创建出来,到现在也没有找到合适的方法。
解决方案 »
- 各位delphi前辈们进来看看
- 动态创建窗体的问题
- 请教:DBGridEh在编辑状态时,光标自动置为自动选中状态,有什么办法可以取消吗?
- 请问如何使用enumchildwindows函数中的lparam参数?
- 急!哪里有局域网即时通讯的源码下载,在线等待!(高分相送)
- MCSE+MCDBA+MCP+CCNA+Delphi程序员中级证书能找到好工作吗?
- 我没有钱买光驱又不能拆硬盘,请问各位大虾那里有免费的Delphi下载(序列号是多少)谢谢!
- 菜问题一个,move函数如何使用?
- 向高手扣手了,我是作不出来了.
- 初学者的问题之二(50分酬谢)请朋友们说的详尽些
- 怎么实现打印预览功能?
- 请问DELPHI中的相对路径怎么表示?
必须加Application.ShowMainForm := false;主窗体才在创建以后隐藏!
to: lion_lh(xmanx) 不行啊!
在项目开始时就隐藏
begin
Application.Initialize;
Application.CreateForm(TServerForm, ServerForm);
Application.ShowMainForm := False;//这句话隐藏主窗口
Application.Run;
end.
请看:
限定条件:所有控制代码,必须在基类完成。
这样将违背了独立的原则!
procedure TBoxForm.WMBarIcon(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
// WM_LBUTTONDOWN
if (Message.LParam = WM_LBUTTONDBLCLK ) then
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := Self.Handle;
lpData.hIcon := Self.Icon.Handle;
//ÍÐÅÌ·µ»ØÏûÏ¢¡£
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'FWS°æ±¾Éý¼¶³ÌÐò';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
ShowWindow(self.Handle, SW_Show);
Application.ShowMainForm := true;
self.Show;//关键是这句。
end;
ShowMainForm := true;不管用。只有使用了self.SHow才能显示出来,
不明白。
请教高手讲???
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
application.ShowMainForm :=false;
这样应该可以了