TrayIcon與最小化問題 |
答題得分者是:m8815010
|
miguo
一般會員 發表:5 回覆:3 積分:1 註冊:2004-02-05 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 我是剛開始嘗試BCB的新手,請多包涵 我有兩個表單,第一個表單讓使用者登入,第二個表單等待接收網路訊息 我希望使用者按最小化時桌面是乾淨的,只剩系統列的小圖示,當收到訊息時視窗才跑出來(有沒有那位大大能提供範例程式供我參考) 我放了一個>>< face="Verdana, Arial, Helvetica"> miguo你好< >: 不太確定抓準你的意思< >! 可能一開始你是有一個MainForm(可能是使用者登入用),然後你可能有新增另一個Form(做收訊息用),那新增的方式可能:void __fastcall TForm1::Button1Click(TObject *Sender) { Form2=new TForm2(Application); Form2->Show(); }嗯,那如果你是用BCB的TrayIcon物件的話,並且你按的是MainForm的最小化這顆鍵,那麼不管其它還有幾個新增的Form,都會一起被縮到icon內。因為MainForm的這顆縮小鍵按下,將代表整個Application要被minizine,所以所有的Form都將被minizine至工具列成為一個item,之後就是TrayIcon物件的功能,將工具列的這個item縮到右下角。 但是如果你按的是其它非MainForm的Form的最下化鍵時,則只有這個Form本身會被最小化,而最小化本來就是做縮到左下角這樣的動作而已,所以一切應都還在定義下正常運作。 那我想miguo你是要按一個非MainForm的最小鍵,而全部的Form也都能縮到右小角成icon吧! 試試這段,在>(假設> < class="code"> void __fastcall TForm1::FormActivate(TObject *Sender) { if (Form2->WindowState==wsMinimized) { SendMessage(Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); } } 其實這是迂迴的作法,比較正統,直覺的作法(我覺得啦)目前我卡到了,所以不介意的話先試這樣吧! |
miguo
一般會員 發表:5 回覆:3 積分:1 註冊:2004-02-05 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 感謝m8815010大大: 您回答的正是我的意思,依據您的方法真的可讓全部的Form不留在桌面上。 可是按兩下icon,回來的卻是登入後不再用到的登入視窗(MainForm), 有沒有辦法讓回來的視窗是工作中的Form而非MainForm? 或者能達到相同目的: 登入視窗確定使用者後就不用了,工作視窗平常縮到右小角成icon,收到訊息時跳出來供使用者在上面作業以達到即時處理。 這樣的程式一般會怎麼寫呢? 不好意思,容我多問一些再結案,真多謝!miguo兄你好: 承之前的意義,在右下角的>首先> < class="code"> void __fastcall TForm1::FormCreate(TObject *Sender) { Form2=new TForm2(Application); Form2->Show(); Application->ShowMainForm=false; } 在Longin確定後,再關掉登入視窗,show出MainForm 在副Form中用下列程式碼實現 DestroyWindow(Handle); Form1->Show(); 嗯,可能不滿足你的需求,再說吧! |
miguo
一般會員 發表:5 回覆:3 積分:1 註冊:2004-02-05 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |