線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1010
推到 Plurk!
推到 Facebook!

Form要如何同時存在icon及不存在右上角的system menu

尚未結案
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-07 17:50:45 IP:61.229.xxx.xxx 未訂閱
我想請問一下 當我將Form當中的屬性BorderIcons裡的biSystemMenu設為false之後 我的icon就會不見, 有沒有什麼方法可以讓icon仍然存在,但是biSystemMenu仍然設為false?
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-19 14:29:14 IP:61.63.xxx.xxx 未訂閱
引言: 我想請問一下 當我將Form當中的屬性BorderIcons裡的biSystemMenu設為false之後 我的icon就會不見, 有沒有什麼方法可以讓icon仍然存在,但是biSystemMenu仍然設為false?
markov你好< >: 有種感覺,你的問題都不太好回答< >! 你的意思應該是要icon存在而右邊的那3顆鍵不見,如下圖我實作的結果,不曉得可不可以: 嗯,如果可以的話,那麼有些細節要分析一下的: 方法 右邊的3個鍵加icon共有4個東東,我覺得這4個東東應該分別可以控制它們的show或不show,可是我找了一下找不到怎麼實作,找到懶得找了,不論是BCB way或SDK way… 所以我用我最會的"快快樂樂自已繪"這招,即還是把biSystemMenu設為false,再把一同消失的icon繪回上去! 範例碼
In Unitl.h    ~~~    class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TPopupMenu *PopupMenu1;
        TMenuItem *N1;
        TMenuItem *N2;
        TMenuItem *N3;
        void __fastcall N1Click(TObject *Sender);
        void __fastcall N3Click(TObject *Sender);
        void __fastcall N2Click(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
private:        // User declarations
        void __fastcall FormWndProc(TMessage&);
        TWndMethod OldFormWndProc;
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};        In Unit.cpp    ~~~    TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 OldFormWndProc=Form1->WindowProc;
 Form1->WindowProc=FormWndProc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormWndProc(TMessage& Message)
{
 if (Message.Msg==WM_NCLBUTTONDOWN) {         POINTS point;
     point=MAKEPOINTS(Message.LParam);         TPoint p;
     p.x=point.x;
     p.y=point.y;
     TPoint pnt=Form1->ScreenToClient(p);         if (pnt.x>=0 && pnt.x<=15)
         Form1->PopupMenu1->Popup(Form1->Left+1,Form1->Top+22);
 }     OldFormWndProc(Message);     if (Message.Msg==WM_NCPAINT || Message.Msg==WM_SETFOCUS || Message.Msg==WM_KILLFOCUS) {         HDC dc;
     dc=GetWindowDC(Handle);
     HANDLE Hicon;
     Hicon=CopyImage(Application->Icon->Handle,IMAGE_ICON,0,0,LR_COPYRETURNORG);
     TIcon* myicon=Application->Icon;
     //值是自已目測抓的,因為懶得去求實際的大小
     DrawIconEx(dc,5,5,myicon->Handle,16,16,NULL,NULL,DI_NORMAL);
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
 Application->Minimize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
 Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
 ShowWindow(Handle,SW_MAXIMIZE);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Form1->Caption="      "+Form1->Caption;
}    
問題 發現icon雖繪上了,但是之前按下icon會出現的menu選單沒有了(正常)! 解決之道 開始想把原來那個icon的menu選單存成一個menu物件,給我們自已繪上去的那個假icon click 時用,可是try了一下沒try出,又懶得try了,直接自已做一個menu選單應該比較快,如下圖(程式碼已經在上面了): 如何?我覺得還ok啦!這樣做的重點是自已來比較快,省得找它的 >! 發表人 -
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-24 22:03:36 IP:220.138.xxx.xxx 未訂閱
真的太感謝了! 還讓你百忙之中幫小弟寫程式 十二萬分感激 此外恭喜你當版主(沒想到我出個差回來變化這麼大)
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-25 10:03:30 IP:61.63.xxx.xxx 未訂閱
引言: 真的太感謝了! 還讓你百忙之中幫小弟寫程式 十二萬分感激 此外恭喜你當版主(沒想到我出個差回來變化這麼大)
markov兄你好< >: 你還是這麼的客氣< >!其實如同我之前說的,你的題目都滿有挑戰性的(我覺得),所以老實說,我也是以自我挑戰的心態去解題的,這樣問題解出來了,自已也進步了< >! 老話一句,先看做法和結果可不可以比較重要吧< >!不行的話再一起討論討論,切磋切磋…這樣才會雙方一起快速的進步!
系統時間:2024-06-26 11:46:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!