關於一按下最小化按鈕就馬上縮小在右下角? |
尚未結案
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
我使用底下程式碼去處理"按下最小化按鈕就馬上縮小在右下角",但是第一次按下時都會同時縮小在下方和右下角兩個地方,再把右下角開啟時,再按一次,就正常只出現在右下角了,請問為何會這樣?是我程式哪裡少寫了嗎?
protected: MESSAGE void __fastcall OnShowWindow(TMessage &Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_SHOWWINDOW, TMessage, OnShowWindow); END_MESSAGE_MAP(TForm); MESSAGE void __fastcall TForm1::OnShowWindow(TMessage &Message) { if (Message.WParam==FALSE && Message.LParam==0) { if (TrayIcon1->Visible==false) { N1->Enabled=true; N2->Enabled=true; N3->Enabled=false; TrayIcon1->Visible=true; TrayIcon1->Minimize(); } } TForm::Dispatch((void*)&Message); }同樣使用一個按鈕去處理就沒有問題,如下: void __fastcall TForm1::N3Click(TObject *Sender) { if (TrayIcon1->Visible==false) { N1->Enabled=true; N2->Enabled=true; N3->Enabled=false; TrayIcon1->Visible=true; TrayIcon1->Minimize(); } } |
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 我使用底下程式碼去處理"按下最小化按鈕就馬上縮小在右下角",但是第一次按下時都會同時縮小在下方和右下角兩個地方,再把右下角開啟時,再按一次,就正常只出現在右下角了,請問為何會這樣?是我程式哪裡少寫了嗎?nlj859你好: 我不太了解,如果你只是要達成〝按下最小化按鈕就馬上縮小在右下角〞這樣的一個目的,這本來就是基本的功能了呀! 因為你已經使用 >?protected: MESSAGE void __fastcall OnShowWindow(TMessage &Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_SHOWWINDOW, TMessage, OnShowWindow); END_MESSAGE_MAP(TForm); MESSAGE void __fastcall TForm1::OnShowWindow(TMessage &Message) { if (Message.WParam==FALSE && Message.LParam==0) { if (TrayIcon1->Visible==false) { N1->Enabled=true; N2->Enabled=true; N3->Enabled=false; TrayIcon1->Visible=true; TrayIcon1->Minimize(); } } TForm::Dispatch((void*)&Message); }同樣使用一個按鈕去處理就沒有問題,如下:void __fastcall TForm1::N3Click(TObject *Sender) { if (TrayIcon1->Visible==false) { N1->Enabled=true; N2->Enabled=true; N3->Enabled=false; TrayIcon1->Visible=true; TrayIcon1->Minimize(); } } |
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
Hello m8815010, 會加上底下那段code的原因是:
MESSAGE void __fastcall TForm1::OnShowWindow(TMessage &Message) { if (Message.WParam==FALSE && Message.LParam==0) { //..... } TForm::Dispatch((void*)&Message); }是因為我要去取得最小化的按鈕被按下. 一般按下最小化按鈕之後,只會縮小在下方而已,而不會縮小在右下角的一個小圖裡,不曉得你知不知道我說的這兩個的差別.(就像是MSN一樣,按下關閉之後,馬上就縮到右下角) 所以我才要攔截當我按下最小化按鈕之後,使用trayicon,馬上縮小"只"在右下角小圖中. 但是我使用上述的程式後,卻是兩者都存在. 引言: 我不太了解,如果你只是要達成〝按下最小化按鈕就馬上縮小在右下角〞這樣的一個目的,這本來就是基本的功能了呀! 因為你已經使用BCB的Trayicon物件了呀,只要TrayIcon的Visible一開始就設true不是就有此能力了嗎? 另外你的程式碼中,因為BCB的Trayicon物件已經是專門處理過了,你使用他的物件又自已去攔訊息,這樣好像有交叉處理到訊息的樣子,所以會有你說的問題! After all,還沒細分析原因,因為我想先確定你是否用了TTrayIcon物件,還要特別寫這些程式碼嗎? >>< face="Verdana, Arial, Helvetica"> 不曉得你說的意思是用trayicon就可以不用去攔"當我按下最小化按鈕"嗎? 是否可指導一下如何正確"按下Form的最小化按鈕之後馬上隱藏在右下角小圖中"? 感激不盡. |
zilch
中階會員 發表:5 回覆:87 積分:78 註冊:2002-09-24 發送簡訊給我 |
TrayIcon元件(SAMPLE頁)的使用 TrayIcon元件常用的屬性: 屬性 說明
Animate 設為true時,順序更改Icons屬性設置的圖標
AnimateInterva 設置更改圖標的時間(單位:毫秒)
Hide 設為true時,最小化時隱藏在任務欄上的標題欄
Hint 設置鼠標移動到Tary圖標上出現的提示信息
IconIndex 設置圖標索引值
Icons 設置圖標源(通常設置一個ImageList組件)
PopupMenu 設置要彈出的菜單(通常設置一個PopupMenu組件)
PopupMenuOn 設置觸發彈出菜單的鼠標操作
RestoreOn 設置恢復最小化到正常狀態的鼠標操作
Visible 設為true時,在任務欄最右邊顯示圖標 Tary程序: 1、新建工程,添加一個TrayIcon組件、一個PopupMenu組件和一個ImageList組件。它們的Name屬性都用默認的名字:TrayIcon1、PopupMenu1、ImageList1。 2、設置TrayIcon1的屬性,如下:
屬性 值
Animate true
AnimateInterva 1000
Hide true
Hint Tary 演示程序
IconIndex 0
Icons ImageList1
Name TrayIcon1
PopupMenu PopupMenu1
PopupMenuOn imRightClickUp
RestoreOn imDoubleClick
Visible true
|
bass15
高階會員 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
|
arnoyu
中階會員 發表:73 回覆:88 積分:67 註冊:2003-03-21 發送簡訊給我 |
插花一下~~
我以前用過這個功能,
方法是參考本站的黃金文章..
如下:
bruce0211 版主 ◎黃金文章◎
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18760
【分享】心得分享系列(BCB) 心得分享 : 如何讓程式執行時,馬上隱藏於桌面右下角 1.在設計程式時,加入一個 TrayIcon 元件(在 C Builder 之 Sample 元件頁中第二個) 於主 Form 中,並將該元件 Visible 屬性設為 true 2.在主 Form 的 OnActive 事件中寫入兩行程式碼: Application->Minimize(); ShowWindow(Application->Handle, SW_HIDE); 3.以後這個程式於執行時,會馬上隱藏於桌面右下角成為 Tray Icon 重點在第二點 ....參考看看ㄅ~ ===三人行必有我師焉=== |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |