如何能让程序在最小化时进入状态栏?
如何能让程序在最小化时进入状态栏?(就像一些杀毒软件一样) 问题点数:20、回复次数:8Top
1 楼FengSC(小猪快跑)回复于 2005-07-22 16:44:54 得分 0
使用BCB提供的TTrayIcon,在Samples里,BCB提供演示程序。Top
2 楼sonyfan(门外汉)回复于 2005-07-23 14:42:02 得分 0
请问在哪里看得到BCB提供演示程序?Top
3 楼rouqing(*冰雨&双子座奇缘*)回复于 2005-07-23 14:54:15 得分 20
其他消息处理或者重新再放到托盘处的代码消息自己写写,比如当最小化窗口时,重新
放到托盘等等
///
void __fastcall TfrmMain::SysMin(TWMSysCommand &Msg)
{
if(Msg.CmdType==SC_MINIMIZE)
{
// add your code
}
TForm::Dispatch(&Msg);
}
///
project1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", frmMain);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->ShowMainForm=false;
Application->Run();
...
unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TfrmMain *frmMain;
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::IconTray(TMessage &Msg)
{
if(Msg.LParam==WM_LBUTTONUP || Msg.LParam==WM_RBUTTONUP)
DelIcon();
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::AddIcon()
{
nid.cbSize=sizeof(TNotifyIconData);
nid.hWnd=Handle;
nid.uID=0;
nid.uFlags=NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage=WM_MENUMSG;
nid.hIcon=Application->Icon->Handle;
strcpy(nid.szTip,"My TrayIcon 2005");
Shell_NotifyIcon(NIM_ADD,&nid);
ShowWindow(Application->Handle,SW_HIDE);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::DelIcon()
{
ShowWindow(Application->Handle,SW_SHOW);
Application->Restore();
this->Show();
SetForegroundWindow(Handle);
Shell_NotifyIcon(NIM_DELETE,&nid);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
nid.cbSize=sizeof(TNotifyIconData);
nid.hWnd=Handle;
nid.uID=0;
Shell_NotifyIcon(NIM_DELETE,&nid);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
AddIcon();
this->Hide();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#define WM_MENUMSG WM_USER+100 //自定义的消息,
//---------------------------------------------------------------------------
class TfrmMain : public TForm
{
__published: // IDE-managed Components
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
protected:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MENUMSG,TMessage,IconTray)
END_MESSAGE_MAP(TForm)
public: // User declarations
__fastcall TfrmMain(TComponent* Owner);
TNotifyIconData nid;
MESSAGE void __fastcall IconTray(TMessage &Msg);
void __fastcall AddIcon();
void __fastcall DelIcon();
};
......
Top
4 楼sonyfan(门外汉)回复于 2005-07-25 14:43:51 得分 0
有没有再简单点的办法?
Top
5 楼psc88()回复于 2005-07-26 15:27:46 得分 0
upTop
6 楼rouqing(*冰雨&双子座奇缘*)回复于 2005-07-26 21:01:42 得分 0
使用BCB提供的TTrayIcon,在Samples里,有demo例子的,我的代码也不复杂啊Top
7 楼cdstarnet(星品网)回复于 2005-08-21 01:38:27 得分 0
比盗版还便宜,星品网(http://www.cdstar.net)1000多款最新最热门软件游戏和影视原装光盘4元价,看看有没有您想要的!Top
8 楼cdstarnet(星品网)回复于 2005-08-21 01:38:48 得分 0
比盗版还便宜,星品网(http://www.cdstar.net)1000多款最新最热门软件游戏和影视原装光盘4元价,看看有没有您想要的!Top
相关问题
- 怎样让程序最小化后到状态栏中?************************************************************************
- 如何使程序最小化时不出现在应用程序状态栏中?
- 请问程序最小化到状态栏时,显示指定的文字,而不是程序名啊
- 怎样把程序图标最小化到右下脚状态栏中(显示时间的那个栏)
- 如何在窗体最小化时从状态栏上隐去,使他成为假的后台程序?
- 紧急求救!程序最小化显示到系统状态栏图标的问题?怎么出错?
- 启动程序时如何才可以最小化到托盘区(状态栏不显示)
- 如何将窗体最小化到状态栏
- 怎么样使-----最小化窗体到状态栏
- 如何做到最小化, 在状态栏里显示, 任务栏不显示




