导航:首页 > 软件知识 > 如何把程序变小托盘

如何把程序变小托盘

发布时间:2024-04-18 13:08:31

⑴ 怎么设置程序启动后最小化到托盘

要实现将程序最小化到托盘,就要截获WM_SIZE消息,并作出相应的消息响应。(WM_SIZE在窗口大小改变时被抛出)
可以重载OnSize()方法,实现托盘图标。
数据结构NOTIFYICONDATA用来储存托盘图标的信息,结构如下:
typedef struct _NOTIFYICONDATA {
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
WCHAR szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;

首先要在对话框类中加入NOTIFYICONDATA变量:
NOTIFYICONDATA nid;
然后要在OnInitDialog()中对nid进行一些初始化:
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); //数据的大小
nid.hWnd = this->GetSafeHwnd(); //获取当前窗口句柄
nid.uID = 100; //指定该nid的ID
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP ; //定义图标的属性:图标有效|自定义消息有效|鼠标指向显示文字有效
nid.uCallbackMessage = WM_TRAYICON_RESTORE; //定义CALLBACK消息名称,用来响应对托盘图标的操作
nid.hIcon = m_hIcon; //指定显示的图标
wcscpy(nid.szTip, _T("TrayIcon")); //鼠标指向图标时的提示框

当然在头文件中要定义好WM_TRAYICON_RESTORE,
#defined WM_TRAYICON_RESTORE WM_USER+101 //这个值一般要大于100

重载OnSize()方法,假如对话框类是CTrayIconDlg;
void CTrayIconDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);

if (nType==SIZE_MINIMIZED) //如果事件为最小化
{
Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标
ShowWindow(SW_HIDE); //隐藏主窗口
}
}

运行程序,最小化窗口,是不是成功将窗口藏到系统托盘了。
现在还不能让程序窗口还原,无论单击,双击小图标都没反应,那是因为没有对其消息进行处理。
首先在CTrayIconDlg类中加入方法:
afx_msg LRESULT OnRestore(WPARAM wParam, LPARAM lParam);

实现如下:
LRESULT CTrayIconDlg::OnRestore(WPARAM wParam, LPARAM lParam)
{
if( lParam == WM_LBUTTONDOWN ) //如果在图标中单击左键则还原
{
ShowWindow(SW_SHOWNORMAL); //显示主窗口
this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//使窗口总是在最前面
//Shell_NotifyIcon(NIM_DELETE,&nid); //若加入这行,则在窗口还原后删除托盘图标,否则保留托盘图标
}
return 0;
}

把该方法加入消息映射表:
将ON_MESSAGE(WM_TRAYICON_RESTORE, OnRestore)插到映射表中
BEGIN_MESSAGE_MAP(CForexDemoDlg, CDialog)
...
...
ON_MESSAGE(WM_TRAYICON_RESTORE, OnRestore)
END_MESSAGE_MAP()

⑵ 鏄撹瑷镐庝箞璁╃▼搴忔渶灏忓寲鍒版墭鐩桦尯锘燂纻鍗曟満镓樼洏锲炬爣镞跺脊鍑鸿彍鍗曪纴凿滃崟涓链夐夐”鑳芥樉绀虹▼搴忛溃𨱒匡纻

镓樼洏鍏跺疄寰堢亩鍗曪纴灏辨槸鍙瑙嗙殑闂棰樸傗拡瀵煎叆浣犵殑镓樼洏锲炬爣鍒板浘鐗囨垨锲剧墖缁勮祫婧愰噷锛屽懡钖崭负锲剧墖1骞跺姞鍏ヤ互涓嬩唬镰侊细
======================================================================
.鐗堟湰 2.瀛愮▼搴 __钖锷ㄧ獥鍙_鍒涘缓瀹屾瘯缃镓樼洏锲炬爣 (#锲剧墖1, )
======================================================================
钴夌劧钖庝负钖锷ㄧ獥鍙e垱寤轰竴涓凿滃崟锛岃彍鍗曢噷鍒涘缓涓や釜瀛愰”涓烘樉绀虹晫闱㈠拰闅愯棌鐣岄溃锛屽苟涓旀妸浠栦滑鍙瑙嗗睘镐х殑鍕惧幓鎺夛绂钴婂姞鍏ヤ互涓嬩唬镰侊细
=======================================================================
.鐗堟湰 2.瀛愮▼搴 __钖锷ㄧ獥鍙_镓樼洏浜嬩欢
.鍙傛暟 镎崭綔绫诲瀷, 鏁存暟鍨.鍒ゆ柇寮濮 (_钖锷ㄧ獥鍙.鍙瑙 锛 鐪)
闅愯棌鐣岄溃.鍙瑙 锛 鐪
鏄剧ず鐣岄溃.鍙瑙 锛 锅
.榛樿
_钖锷ㄧ獥鍙.鍙瑙 锛 锅
鏄剧ず鐣岄溃.鍙瑙 锛 鐪
闅愯棌鐣岄溃.鍙瑙 锛 锅
.鍒ゆ柇缁撴潫
寮瑰嚭凿滃崟 (凿滃崟, , )
=======================================================================钴嬩负闅愯棌鐣岄溃鍜屾樉绀虹晫闱㈡坊锷犱互涓嬩唬镰侊细
=======================================================================
.鐗堟湰 2.瀛愮▼搴 _鏄剧ず鐣岄溃_琚阃夋嫨_钖锷ㄧ獥鍙.鍙瑙 锛 鐪.瀛愮▼搴 _闅愯棌鐣岄溃_琚阃夋嫨_钖锷ㄧ獥鍙.鍙瑙 锛 锅
=======================================================================
PS锛氲繖涓鍙鏄涓镐濊矾锛屽彲浠ユ牴鎹闇瑕佽嚜宸辨敼鏀癸纴娌℃湁鎺т欢锛屽浘鎴戝氨涓崭笂浜嗐

⑶ 镐庝箞鎶娄竴涓绋嫔簭闅愯棌鎴栬呭纰鍒版墭鐩橀噷铡伙纻

浣犲傛灉瑕佸交搴曢殣钘忚蒋浠惰繍琛岋纴鍙浠ュ幓缃戜笂涓嬭浇涓涓鍙钬沧棤蹇ч殣钘忊濈殑杞浠讹纴锛堟よ蒋浠舵槸鏀惰垂镄勶纴涓嶈繃缃戜笂宸叉湁镰磋В镄勪简锛夛纴鍏埚惎锷ㄤ綘瑕侀殣钘忕殑杞浠讹纴铹跺悗钖锷ㄢ沧棤蹇ч殣钘忊濓纴鍦ㄥ叾涓荤晫闱浣跨敤榧犳爣鍙抽敭鍗曞嚮浣犺侀殣钘忕殑绋嫔簭锛岄夋嫨钬滃皢链绋嫔簭娣诲姞镊冲揩阃熼殣钘忓垪琛ㄢ濓纴浠ュ悗鍙瑕侀嗗兼潵浜嗭纴鍙瑕佹寜涓嬮紶镙囨粴杞鍗冲彲銆

瑕佹仮澶嶏纴鎸変綇宸﹂敭涓嶆斁锛岀劧钖庡崟链哄彸阌灏辫屼简銆傚傛灉浣犺佹妸绋嫔簭链灏忓寲鍒扮郴缁熸墭鐩桡纴鎺ㄨ崘浣跨敤Alltotray锛屽湪澶氱壒链夌殑涓嬶纴鏄姹夊寲镄勚傚叿浣扑娇鐢ㄦ柟娉曞氨涓嶈翠简锛屽緢鏂逛究镄勶纴濡傛灉镓句笉鍒帮纴鎴戝彲浠ュ彂鍒颁綘闾绠便傛湁闂棰桦啀闂鎴戝惂锛屽笇链涙垜镄勫洖绛斿逛綘链夋墍甯锷┿

⑷ 楂桦痉鍦板浘濡备綍链灏忓寲鍒版墭鐩桡纻

鍦ㄩ珮寰峰湴锲句腑锛岃佽剧疆链灏忓寲灏忕獥鍙o纴鍙浠ユ寜镦т互涓嬫ラよ繘琛屾搷浣滐细

  1. 镓揿紑楂桦痉鍦板浘搴旂敤绋嫔簭锛岃繘鍏ュ湴锲鹃〉闱銆

  2. 鍦ㄥ湴锲鹃〉闱涓婃柟锛屽彲浠ョ湅鍒颁竴涓"链灏忓寲"鎸夐挳锛屽畠浣崭簬宸︿笂瑙掋傜偣鍑昏ユ寜阍钖庯纴鍦板浘绐楀彛浼氲链灏忓寲锛屽苟涓斿湪灞忓箷鍙充笅瑙掍细鍑虹幇涓涓灏忕獥鍙c

  3. 濡傛灉𨱍宠佹仮澶嶅湴锲剧獥鍙o纴鍙浠ョ偣鍑诲皬绐楀彛锛岀劧钖庡湴锲剧獥鍙e氨浼氭仮澶嶅埌铡熸潵镄勫ぇ灏忋

闇瑕佹敞镒忕殑鏄锛屾寜镦т笂杩版ラよ剧疆链灏忓寲灏忕獥鍙g殑鍓嶆彁鏄锛屼綘宸茬粡瀹夎呭苟镓揿紑浜嗛珮寰峰湴锲惧簲鐢ㄧ▼搴忋傚傛灉浣犳槸绗涓娆′娇鐢ㄩ珮寰峰湴锲撅纴闇瑕佸厛鍦ㄥ簲鐢ㄥ晢搴楁垨钥呭畼鏂圭绣绔欎笅杞藉苟瀹夎呰ュ簲鐢ㄧ▼搴忋

阅读全文

与如何把程序变小托盘相关的资料

热点内容
手机百度小程序怎么引流 浏览:228
期货交易中cta是什么 浏览:877
单片机什么处理64位数据 浏览:604
为什么游戏数据没有备份 浏览:496
常州哪里有学信息学的 浏览:181
如何查询帐号交易 浏览:401
警务通能查到什么信息吗 浏览:570
金牛区小规模代理记账需要多少钱 浏览:55
邵阳哪个地方有二手手机市场 浏览:590
西安菜市场都有什么鱼 浏览:980
为什么要拆纺五路综合市场 浏览:470
执行程序后多久列失信 浏览:340
英菲尼迪q50l怎么安装程序 浏览:904
可转债交易有哪些技术含量 浏览:752
信息核查员叫什么 浏览:269
数据机房中机柜到底有哪些作用 浏览:309
沥青交易规则有哪些 浏览:581
如何恢复同城里的购票信息 浏览:702
西宁摩配市场在哪里 浏览:101
蔬菜干代理要多少钱 浏览:357