如何讓新產生的Form可以在工作列上多一個項目? |
尚未結案
|
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
Dear All, 請問一下, 我在程式裏產生一個Form時,當MainForm最小化或隱藏到TrayIcon時,所產生的Form也會跟著不見,有沒有什麼辦法,可以讓這種情形不會發生呢?
ex:就像在ICQ or MSN Messanger產生一個新的Message Form後,就算主程式隱藏到TrayIcon去,Message Form 依可以在工作列看到,也不會跟著隱藏. 請大家幫個忙吧,謝謝!!
Blowfish
=== Study, Study and Study ===
------
=== Study, Study and Study === |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
引言: Dear All, 請問一下, 我在程式裏產生一個Form時,當MainForm最小化或隱藏到TrayIcon時,所產生的Form也會跟著不見,有沒有什麼辦法,可以讓這種情形不會發生呢? ex:就像在ICQ or MSN Messanger產生一個新的Message Form後,就算主程式隱藏到TrayIcon去,Message Form 依可以在工作列看到,也不會跟著隱藏. 請大家幫個忙吧,謝謝!! Blowfish === Study, Study and Study ===F:=TForm.Create(nil); F.Sohow;
------
︿︿ |
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
引言: F:=TForm.Create(nil); F.Sohow;謝謝cmf的回答,但試過你的方式還是不行哦.. 因為我是用BCB寫的,所以把它換成這樣寫: TMyForm *myFrm = new TMyForm(NULL); muFrm->Show();出來的結果還是一樣,MainForm最小化的話,這個Form也會跟著最小化. 還有沒有其他方法呢? === Study, Study and Study ===
------
=== Study, Study and Study === |
Cooky Kid
初階會員 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
引言: 我在程式裏產生一個Form時,當MainForm最小化或隱藏到TrayIcon時,所產生的Form也會跟著不見,有沒有什麼辦法,可以讓這種情形不會發生呢? ex:就像在ICQ or MSN Messanger產生一個新的Message Form後,就算主程式隱藏到TrayIcon去,Message Form 依可以在工作列看到,也不會跟著隱藏.假設你已經搞定TrayIcon, 就以動態新增了一個Form,Name is "MyForm"; 這是一個簡單的code...看看可否解決你的困擾.... < class="code"> //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TForm *newForm = new TForm(this); newForm->Name = "MyForm"; newForm->Width = 200; newForm->Height = 200; newForm->Top = 50; newForm->Show(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) {[red] ::ShowWindow(Handle, SW_HIDE); ::ShowWindow(Application->Handle, SW_HIDE); for(int i=0; i<Form1->ComponentCount; i ) if(Components[i]->Name == "MyForm") { TForm *tmpForm = (TForm *)Components[i]; [red]::ShowWindow(tmpForm->Handle, SW_SHOW); } } //--------------------------------------------------------------------------- |
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
引言: 假設你已經搞定TrayIcon, 就以動態新增了一個Form,Name is "MyForm"; 這是一個簡單的code...看看可否解決你的困擾.... < class="code"> //--------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TForm *newForm = new TForm(this); newForm->Name = [red]"MyForm"; newForm->Width = 200; newForm->Height = 200; newForm->Top = 50; newForm->Show(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) {[red] ::ShowWindow(Handle, SW_HIDE); ::ShowWindow(Application->Handle, SW_HIDE); for(int i=0; i<Form1->ComponentCount; i ) if(Components[i]->Name == "MyForm") { TForm *tmpForm = (TForm *)Components[i]; ::ShowWindow(tmpForm->Handle, SW_SHOW); } } //--------------------------------------------------------------------謝謝Cooky Kid這麼熱心提供這一段code. 但是這樣跟我的要求還是有點差距,因為你的code到最後會變成在工作作上都沒有item,只會在在system tray上有item而已,這樣看起來還是怪怪的. 我的希望是,如果程式都縮到system tray上去了,當收到某個訊息時,會pop-up一個視窗出來,而不用顯示MainForm. 這樣有辦法嗎? === Study, Study and Study ===
------
=== Study, Study and Study === |
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
Cooky Kid
初階會員 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
引言: 謝謝Cooky Kid這麼熱心提供這一段code. 但是這樣跟我的要求還是有點差距,因為你的code到最後會變成在工作作上都沒有item,只會在在system tray上有item而已,這樣看起來還是怪怪的. 我的希望是,如果程式都縮到system tray上去了,當收到某個訊息時,會pop-up一個視窗出來,而不用顯示MainForm. 這樣有辦法嗎?dear blowfish, 何不將你手上已經完成部分post出來? 這樣也省了他人重新撰寫的力氣,而可專注你的問題上.... |
blowfish
一般會員 發表:8 回覆:35 積分:18 註冊:2002-12-02 發送簡訊給我 |
經過一段時間的摸索和試驗,並且還有RaynorPao的指導,
終讓我找到這問題的答案了.
只要override CreateParam(),並做些設定,則以後這個
Form產生出來都會在Taskbar上產生一個新項目.
請參考下面的code.
class TForm2 : public TForm { __published: // IDE-managed Components TLabel *Label1; private: // User declarations protected: //Override this method void __fastcall CreateParams(TCreateParams &Params); public: // User declarations __fastcall TForm2(TComponent* Owner); }; //----------------------------------------------------------- void __fastcall TForm2::CreateParams(TCreateParams &Params) { TCustomForm::CreateParams(Params); //這是關鍵,設成WS_EX_APPWINDOW,才會在Taskbar多一個項目. Params.ExStyle |= WS_EX_APPWINDOW; //如果沒有加這一行的話,當MainForm最小化時, //也所產生的視窗也會跟著最小化. Params.WndParent = GetDesktopWindow(); }=== Study, Study and Study ===
------
=== Study, Study and Study === |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |