隐藏窗体
我在主窗体mainfrm上打开一个窗体form1(对话框),然后又在form1上打开form2(对话框),现在我要把整个程序(所有打开的窗体)隐藏起来,通过热键和托盘图标恢复原状,可不可以实现? 问题点数:50、回复次数:3Top
1 楼ccrun(老妖)(www.ccrun.com)回复于 2005-12-15 15:35:52 得分 20
添加热键和托盘图标的代码略过,如何隐藏当前程序的所有窗体:
var
i: integer;
begin
for i := Screen.FormCount-1 downto 0 do
begin
Screen.Forms[i].Hide;
end;
end;
Top
2 楼zxf_feng(阿日)回复于 2005-12-15 18:16:45 得分 30
可以,你搜一下托盘,可以找到相关的例子,
我前段时间写过,给你一部分代码:
function AddTrayIcon : Boolean;
procedure OnIconNotify(var Msg: TMessage); message MY_MESSAGE;
function ModifyTrayIcon(iconName, Tip : string) : Boolean;
function DeleteTrayIcon : Boolean;
var
nid: TNotifyIconData;
function TFrmMain.AddTrayIcon : Boolean;
begin
nid.cbSize := sizeof(nid); // nid变量的字节数
nid.Wnd := Handle; // 主窗口句柄
nid.uID := 1; // 内部标识,可设为任意数
nid.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指?
nid.szTip := '正在运行'; // 提示字符串
nid.uCallbackMessage := MY_MESSAGE; // 回调函数消息
nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有?
Result := Shell_NotifyIcon(NIM_ADD, @nid);
end;
function TFrmMain.DeleteTrayIcon : Boolean;
begin
nid.cbSize := sizeof(nid); // nid变量的字节数
nid.uID := 1; //内部标识,与加入小图标时的数一致
nid.Wnd := Handle; //主窗口句柄
Result := Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
end;
function TFrmMain.ModifyTrayIcon(iconName, Tip : string) : Boolean;
begin
nid.cbSize := sizeof(nid); // nid变量的字节数
nid.uID := 1; //内部标识,与加入小图标时的数一致
nid.Wnd := Handle; //主窗口句柄
nid.hIcon := LoadIcon (HInstance, PChar(iconName));
lstrcpy(nid.szTip, PChar(Tip));
Result := Shell_NotifyIcon (NIM_MODIFY, @nid);
end;
procedure TFrmMain.OnIconNotify(var Msg: TMessage);
var
pt : TPoint;
begin
if Msg.LParam=WM_LBUTTONDOWN then
begin
Self.Visible := true;
end else
if Msg.LParam=WM_RBUTTONDBLCLK then
begin
if Application.MessageBox('真的要退出吗?','结束运行', MB_YESNO)=IDYES then
Application.Terminate;
end;
end;
Top
3 楼GARNETT2183(KingWolves (http://kevin-lu.blogspot.com))回复于 2005-12-15 18:22:35 得分 0
好像隐藏主窗体,其它子窗体也会隐藏的,托盘就直接用组件就OK了..
Top




