タスクトレイに常駐するサンプルです。
一番右のタスクトレイアイコンが本サンプルのアイコン アイコンにマウスを当てたところ アイコンで右クリックしたところ アイコンで左クリックして出力されるフォーム
//---------------------------------------------------------------------------
// Project1.cpp
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm = false; //この行を追加
Application->Run();
}catch (Exception &exception){
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
// Unit1.h
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
#define WM_USERTASKICON WM_USER + 1
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE 管理のコンポーネント
TButton *Button1;
TPopupMenu *PopupMenu;
TMenuItem *pmnuExit;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall Button1Click(TObject *Sender);
void __fastcall pmnuExitClick(TObject *Sender);
private: // ユーザー宣言
NOTIFYICONDATA sdtNotifyIcondata;
void __fastcall onTaskIcon(TMessage & msg); // ユーザー宣言
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
protected: // ユーザー宣言
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_USERTASKICON, TMessage, onTaskIcon)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
// Unit1.cpp
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
sdtNotifyIcondata.cbSize = sizeof(NOTIFYICONDATA);
sdtNotifyIcondata.hWnd = Handle;
sdtNotifyIcondata.uID = 1;
sdtNotifyIcondata.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
sdtNotifyIcondata.uCallbackMessage = WM_USERTASKICON;
sdtNotifyIcondata.hIcon = Application->Icon->Handle;
lstrcpy(sdtNotifyIcondata.szTip, "タスクトレイメッセージ");
Shell_NotifyIcon( NIM_ADD, &sdtNotifyIcondata );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
sdtNotifyIcondata.cbSize = sizeof(NOTIFYICONDATA);
sdtNotifyIcondata.hWnd = Handle;
sdtNotifyIcondata.uID = 1;
sdtNotifyIcondata.uFlags = 0;
Shell_NotifyIcon( NIM_DELETE, &sdtNotifyIcondata );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::onTaskIcon(TMessage & msg)
{
switch (msg.LParam){
/* 左ボタンのクリック */
case WM_LBUTTONDOWN:
Form1->Visible = true;
break;
/* 右ボタンのクリック */
case WM_RBUTTONDOWN:
POINT sdtPOINT;
GetCursorPos(&sdtPOINT);
SetForegroundWindow(Application->Handle);
Application->ProcessMessages();
PopupMenu->Popup(sdtPOINT.x, sdtPOINT.y);
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::pmnuExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
DownLoad bcbtips026.lzh 4KB(BCB5)