全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2961
推到 Plurk!
推到 Facebook!

關於一按下最小化按鈕就馬上縮小在右下角?

尚未結案
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-17 18:01:03 IP:163.28.xxx.xxx 未訂閱
我使用底下程式碼去處理"按下最小化按鈕就馬上縮小在右下角",但是第一次按下時都會同時縮小在下方和右下角兩個地方,再把右下角開啟時,再按一次,就正常只出現在右下角了,請問為何會這樣?是我程式哪裡少寫了嗎?
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-18 01:39:30 IP:210.64.xxx.xxx 未訂閱
引言: 我使用底下程式碼去處理"按下最小化按鈕就馬上縮小在右下角",但是第一次按下時都會同時縮小在下方和右下角兩個地方,再把右下角開啟時,再按一次,就正常只出現在右下角了,請問為何會這樣?是我程式哪裡少寫了嗎?
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你好: 我不太了解,如果你只是要達成〝按下最小化按鈕就馬上縮小在右下角〞這樣的一個目的,這本來就是基本的功能了呀! 因為你已經使用 >?
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-18 11:16:08 IP:219.80.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-18 13:44:46 IP:218.167.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-19 21:43:49 IP:61.59.xxx.xxx 未訂閱
拉一個TrayIcon.. 把TrayIcon 的Visible設成true就好了吧 其他不用設
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-19 22:44:49 IP:219.80.xxx.xxx 未訂閱
引言: 拉一個TrayIcon.. 把TrayIcon 的Visible設成true就好了吧 其他不用設
如果單單使用一個TrayIcon,且把Visible設成true. 那當我一run這個程式時,它會同時出現在右下角和下方. 而我的的需求是:當我一run程式時,他只會出現在下方,但尚未縮小常駐在右下角.而按下最小化按鈕之後,則反過來. 總而言之,我只要有其中的一個存在,不是在下方,就是在右下方.
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-25 15:48:08 IP:61.56.xxx.xxx 未訂閱
插花一下~~ 我以前用過這個功能, 方法是參考本站的黃金文章.. 如下: 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     重點在第二點 ....    
參考看看ㄅ~ ===三人行必有我師焉===
系統時間:2024-05-14 3:51:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!