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

在 C++ Builder3.0下混用兩大Application Framework VCL&MFC

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-27 22:25:25 IP:61.70.xxx.xxx 未訂閱
此為轉貼資料    在 C++ Builder3.0下混用兩大Application Framework VCL&MFC      混用 VCL 與 MFC 的確是個不錯的選擇,但是、相對的,你的程式複雜度反而會  提高。    在此先假設你已經看過『在 C++ Builder 3.0下編譯含有MFC 的程式』這一篇文  章了。因此一些基本知識就不在重復?述了。    ?了討論這個題目,我決定採用範例實作的方式來做解說:    Step 1.  先用你知道的方法來建立一個空的、且可以正確編譯 MFC 的 Project (不懂的可  以參考『如何在 C++ Builder 3.0下編譯含有 的程式』這篇文章)。在此先假設  此 Project 名稱?Project1,而 MainForm  ? Form1 ,MainForm 的檔案?   unit1.cpp,皆以 BCB 3.0 ?生的?預設值,因此這時候你應該會有下列這些檔案  了:    Project1.bpr  Project1.cpp  Unit1.cpp  Unit1.h  Unit1.dfm        Step 2.  在這個範例中,我決定採用兩個 MFC 的類別 (Class) 來與 C++ Builder 的 VCL   混用,而這兩個類別分別是 CFileDialog 與 CPoint 。    OK,知道了這些後,我們先 Design 一些東西在 Form 上來使用 MFC 的類別吧!  先置放兩個 Label 元件與一個 Button 元件,如下圖:        Step 3.  緊接著就是開始動手加入所們所要的 MFC code 啦,不過在此之前,先必須將 MFC   用的宣告檔給加進來:    //---------------------------------------------------------------------------  #include  #include #include 不過要注意的是, MFC 所用的 Header 檔要先於 #include 之前喔!否則, 你一定會在編譯時得到一大堆的 Error ! Step 4. 當 Header 檔給設定好後,我們開始來作 VCL 與 MFC 的混用吧! 我們先來使用 CPoint 這個類別吧! 先? Form 建立 OnMouseMove 的個事件,並加入以下這些 Code : void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { CPoint Ps; Ps.x =X; Ps.y =Y; Label1->Caption = "X :" (AnsiString)Ps.x " Y :" (AnsiString)Ps.y; } OK,這樣一來就可以編譯啦!不過你在編譯時,准會得到一大堆 Warning ,這是因? MFC 中的一些 Marco 與 BCB 的同樣名字,所以羅,會得到 這些 Warning 使很正常的啦!不過幸好只是warning 而不是 error ,不 然就不能編譯成功了。 編譯成功後,你可以發現當你移動滑鼠時, From 上的 Label1 會一直秀 出你現在的滑鼠游標,這樣一來,使用 CPoint 這個類別就算成功了。 過你或許會想,何不直接用原先傳進來的 X 與 Y 就可以了,何必動用到 CPoint 這個類別呢? 嘿嘿,如果你不用這樣,怎?表現 MFC 與 VCL 的混用呢? Step 5. 嗯,接著我們就再來實作 CFileDialog 類別在 BCB 下使用 先? Form 上的 Button 建立 OnClick 這個 Event ,並加入以下這些 Code : void __fastcall TForm1::Button1Click(TObject *Sender) { CFileDialog dlg( TRUE,"CPP","*.CPP", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("C Source File (*.cpp)")); if( dlg.DoModal()==IDOK ) { Label2->Caption = (AnsiString)dlg.GetPathName(); } } 一樣的,在編譯時會得到許多 warning ,但是編譯完成後,按下此 Button 你將會得到與使用VCL 中的 TOpenDialog 類別相同的畫面,當你 選擇好檔案後 Form 上的 Label2 也會換成你所選擇的檔案名稱了,這樣 一來 CFileDialog 與 VCL 的混用也一樣成功了。 執行結果 範例程式: 不可不知道 這個範例中,你可以學到 MFC 與 VCL 的混用。但是,還遺留的一些問題 等待解決,如那些編譯時的 warning 應該如何解決呢?以我的習慣來說, 我是不會讓編譯器告訴我寫的程式有任何的警告發出的。該怎?解決的? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21592 聰明的讀者,動動腦吧!
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-04-19 2:44:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!