摘自
|
添加系统托盘的时候指定NIF_INFO就可以了:
.h文件中:
-
C/C++ code
-
protected : void __fastcall WndProc(TMessage & Message); private : // User declarations UINT CRN_TRAYICON_MESSAGE; // 托盘区响应消息 void __fastcall CrnAddTrayIcon(); void __fastcall CrnRemoveTrayIcon();
.cpp文件中:
-
C/C++ code
-
#include < tchar.h > #include < stdio.h > // --------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent * Owner) : TForm(Owner) { CRN_TRAYICON_MESSAGE = ::RegisterWindowMessage(TEXT( " IconNotify " )); } // --------------------------------------------------------------------------- // 重载WndProc void __fastcall TForm1::WndProc(TMessage & Message) { if (Message.Msg == WM_SYSCOMMAND) { if (Message.WParam == SC_MINIMIZE) { CrnAddTrayIcon(); ::ShowWindow(Handle, SW_HIDE); } } else if (Message.Msg == CRN_TRAYICON_MESSAGE && Message.LParam == WM_LBUTTONUP) { // 如果单击鼠标左键则显示窗体 ::ShowWindow(Handle, SW_SHOW); // 使程序出现在任务栏 ::ShowWindow(Application -> Handle, SW_SHOW); CrnRemoveTrayIcon(); } TForm::WndProc(Message); } // --------------------------------------------------------------------------- // 添加图标到托盘区 void __fastcall TForm1::CrnAddTrayIcon() { NOTIFYICONDATA nid; ::ZeroMemory( & nid, sizeof (nid)); nid.cbSize = sizeof (nid); nid.hWnd = Handle; nid.uID = NULL; nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_INFO; nid.hIcon = Application -> Icon -> Handle; nid.uCallbackMessage = CRN_TRAYICON_MESSAGE; nid.dwInfoFlags = NIIF_INFO; nid.uTimeout = 1000 ; _tcsncpy(nid.szInfo, TEXT( " 最小化窗体时程序将隐藏到这里./r/n " ) TEXT( " 欢迎光临 www.ccrun.com " ), sizeof (nid.szInfo)); _tcsncpy(nid.szInfoTitle, TEXT( " 我的应用程序 " ), sizeof (nid.szInfoTitle)); ::Shell_NotifyIcon(NIM_ADD, & nid); } // --------------------------------------------------------------------------- // 删掉托盘区的图标 void __fastcall TForm1::CrnRemoveTrayIcon() { NOTIFYICONDATA nid; ::ZeroMemory( & nid, sizeof (nid)); nid.cbSize = sizeof (nid); nid.hWnd = Handle; ::Shell_NotifyIcon(NIM_DELETE, & nid); }
上述代码在Windows7 + CBuilder6中编译通过,当最小化窗体时就可以看到效果了。
效果图: