程序中有一个TrayIcon,可以最小化到托盘中,现在想在选项中加上一条“启动后最小化到托盘”,然后程序根据用户的设定来选择启动最小化或者正常显示,可是实现起来有很多问题1。在oncreate中加入
if(bOptStartMin) TrayIcon1->Minimize();
这样的话,程序就还是显示主窗口,,点主窗口的最小化按钮不起作用2。在oncreate中加入
if(bOptStartMin)
{
Application->ShowMainForm=false;
TrayIcon1->Minimize();
} 这样的话,程序启动后倒是最小化到托盘了,可是怎么也恢复不了,点图标后就在任务烂显示出来,不能把主窗口显示到桌面上来,加上Application.MainForm.Visible := True;也不行
我用的是 bcb ,我想delphi的方法和bcb 应该是通用的
if(bOptStartMin) TrayIcon1->Minimize();
这样的话,程序就还是显示主窗口,,点主窗口的最小化按钮不起作用2。在oncreate中加入
if(bOptStartMin)
{
Application->ShowMainForm=false;
TrayIcon1->Minimize();
} 这样的话,程序启动后倒是最小化到托盘了,可是怎么也恢复不了,点图标后就在任务烂显示出来,不能把主窗口显示到桌面上来,加上Application.MainForm.Visible := True;也不行
我用的是 bcb ,我想delphi的方法和bcb 应该是通用的
解决方案 »
- 紧急求助谁有delphi4的安装盘
- 答谢帖 ,小虫快来!(1)
- 向edit发送按键事件
- 项目申请怎么写?
- 关于DBComboBox奇怪的问题,怪胎!!!,是高手就请进来分析分析,来者有分
- 在Delphi的代码编辑器中,怎么才能不让光标随意定位?
- 如何把我写的东西加入到别的程序里啊
- 删除windows 的history的内容
- 求助:QuickReport报表如何转换为格式?
- 用ADOQUERY访问空表时出现错误:BOF 或 EOF 中有一个为真....所需操作要求有一个当前记录
- 本人准备了1000分,解决关于网络传输问题,希望高手们给予解答,谢谢!UP有分啊!!!!!!
- 一个拗口的问题,想法也很奇怪,求一个技巧性的代替线程或内核对象等待的方法.
放到托盘等等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();
}
//---------------------------------------------------------------------------unit1.h
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();
};
{
if(Msg.CmdType==SC_MINIMIZE)
{
// add your code,处理最小化窗体的消息
}
TForm::Dispatch(&Msg);
}
BCB没用过,估计只要模拟用户操作在启动时向主窗体发一个消息应该就可以吧
#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();
};
......