實(shí)踐0圖形用戶界面程序開發(fā)體驗(yàn)暫不做_第1頁
實(shí)踐0圖形用戶界面程序開發(fā)體驗(yàn)暫不做_第2頁
實(shí)踐0圖形用戶界面程序開發(fā)體驗(yàn)暫不做_第3頁
實(shí)踐0圖形用戶界面程序開發(fā)體驗(yàn)暫不做_第4頁
實(shí)踐0圖形用戶界面程序開發(fā)體驗(yàn)暫不做_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余53頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

《C++語言基礎(chǔ)》實(shí)踐10:圖形用戶界面程序開發(fā)體課程主頁見:課程見 /course/courseid-程序設(shè)計具有很強(qiáng)的實(shí)踐性,學(xué)習(xí)中需要看過,但最重要的是,完成實(shí)踐3VC++6.0VS2008,以及用wxWidgets的開發(fā)。這3部分的文檔在博客中發(fā)布后,受到廣大初學(xué)者喜歡。至少擇其一,完成這驗(yàn)一、窗口程序設(shè)計啟蒙,以解一元二次方程為在程序設(shè)計學(xué)習(xí)過程中,尤其對于計算機(jī)相關(guān)專業(yè)的學(xué)生,總是從語言、程序結(jié)構(gòu)、算法等學(xué)起,然后再結(jié)合工程實(shí)際,逐漸涉及窗口、界面的設(shè)計。不少同學(xué)失去耐心,甚至非常傷心:“為讓黑的S如果從表面上,制作一個窗口程序并非難事。于是有了本文,目的就在于讓零基礎(chǔ)的童鞋們體驗(yàn)一次,過把癮,然后能將主要精力投入到程序設(shè)計課中去,認(rèn)認(rèn)真真地打好編程序的基本功。大實(shí)際上,隨著對程序設(shè)計技術(shù)的深入學(xué)習(xí),尤其是學(xué)習(xí)了面象程序設(shè)計技術(shù)之后,的眼光將放在理解和運(yùn)用C去開發(fā)系統(tǒng)。將來,這些由系統(tǒng)自動生成的程序你可以自己手工編寫出來。++是講究效率工編寫而非由DE自動生成,是+程序員的追求。專業(yè)和非專業(yè)的區(qū)別就在這里。可能將來你會從事并不強(qiáng)調(diào)效率的一些應(yīng)用開發(fā),但精湛的程序設(shè)計技術(shù)、扎實(shí)的算。步,體會的樂趣。在大學(xué)里,圍繞課堂,展開,其力無窮。#include<iostream>#include<cmath>intmain(){ if((b*b-{if((b*b-{}{}}

cout<<"兩個不相等的實(shí)根分別是 x1=-cout<<"兩個相等的實(shí)根return0;}下面開發(fā)窗口版1MFCAPP工新建工程,選擇MFCAPPWizard[exe],點(diǎn)確定選擇基本下一再下一完IDE會顯示工程骨架。點(diǎn)2、安排窗口界面中的控出現(xiàn)設(shè)計界在框中添加和編輯控件:將”控件”拖到窗口中,點(diǎn)右鍵修改屬性,下圖將拖入的靜態(tài)文的“標(biāo)題”改為a,后將放置一個編輯輯框,用于輸入a的值。靜態(tài)文本起提示的作用3個靜態(tài)文本控件和編輯框控件,分別用于輸入方程的三個系數(shù);1個“求解”按鈕,將來點(diǎn)擊后可以完成求解2個靜態(tài)文本控件和編輯框控件,分別用于輸出方程的解。在控件上點(diǎn)右鍵,查看屬性,本例中不做修改,確認(rèn)輸入a、b、c的編輯框的ID分別為IDC_EDIT1、IDC_EDIT2和IDC_EDIT3,用于輸出結(jié)果的兩個編輯框的ID分別為IDC_EDIT4、和測試框:在layout(布局)菜單中,選擇tset(測試)命令,可以看到將來運(yùn)行時的外觀3下面需要完成的功能,如何求解方為了讓程序從窗口的編輯框中提取出輸入的值,要設(shè)置變量,并與控在設(shè)計窗口中點(diǎn)右鍵,選擇ClassWizard(建立類向?qū)c(diǎn)擊MemberVariables,設(shè)置各個控件對應(yīng)的變雙擊IDC_EDIT1,為其添加對應(yīng)的變量,變量名為m_a,變量類型為double,按下圖輸入同法為其他控件設(shè)置變4切換到MessageMapsFunction…”按鈕,在新出現(xiàn)的彈出式窗口中點(diǎn)OK。之后可以看到加入了Member雙擊新增加的成員函數(shù),現(xiàn)在需要輸入程5、運(yùn)行程運(yùn)行程序,結(jié)果結(jié)果還可以是界面其實(shí)還不好看,到館借些書,按著例子做幾個就有感覺了結(jié)看一個業(yè)界大牛的界面的是果還有,打好基礎(chǔ),有利于你理解向?qū)傻募軜?gòu),這 的長期目標(biāo)二、窗口程序設(shè)計及MFC啟【】本文適合已經(jīng)完整學(xué)習(xí)了+面象機(jī)制,但在開發(fā)窗口程序方面還是零基礎(chǔ)的同學(xué)。通過本文的引導(dǎo)進(jìn)行實(shí)踐體驗(yàn),目的是消除開發(fā)窗口程序的神秘感,為下一步的找到感覺。同時,能更深入地體會到編程基本功的根源所在,在今后能自覺地學(xué)好專業(yè)基礎(chǔ)課,而不是只學(xué)習(xí)+已經(jīng)有段時間。美中不足的是,面對的仍然是黑框框(盡管已經(jīng)會把黑框框改成各種顏色、字體的彩框框)。已經(jīng)深刻了+語言中的各種機(jī)制,并且可以將之用現(xiàn)在,體驗(yàn)窗口程序設(shè)計,看到自定義的類如何參與到實(shí)際的項目中來。因?yàn)閷W(xué)習(xí)了面象程序設(shè)計,還可以看到利用向?qū)傻某绦蛟瓉硪彩墙⒃贠OP的基礎(chǔ)的,程序中框、編輯框、按鈕等均MFC中例的實(shí)例,MFC中提供的類是可以被用戶程序繼承來使用的。這就是閑言碎語不講了,先看這次體驗(yàn)的案例——求三角形的面積一、三角形已經(jīng)設(shè)計過一個比較完整的三角形類,主要代碼如下所示(main()函數(shù)和類 成員函數(shù)就不寫了,這是給黑框框準(zhǔn)備的class{ Triangle(doublex,doubleydoublez)a=x;b=y;c=z使用帶參數(shù)構(gòu)造函數(shù),三邊長在調(diào)用時由實(shí)參直接給出doubleperimeter(void);//計算三角形的周長double return(a+b+}double doubles=(a+b+c)/returnsqrt(s*(s-a)*(s-b)*(s-}寫出這點(diǎn)代碼已經(jīng)是小ase2008二、窗口程1、新MFC應(yīng)用程序”,然后在項目“名稱”處為項目命名,如圖1所示:點(diǎn)擊“確定”后,見圖再點(diǎn)“下一步”,見圖

(((在“應(yīng)用程序類型”部分,選擇“基于框”(熟悉的“記事本”是典型的單文檔應(yīng)用如d00框)當(dāng)最后點(diǎn)擊“完成”之后,在出現(xiàn)的界面上就可以安排所需要的控件2、開發(fā)界先認(rèn)識一下如下的設(shè)計界面( 4),再講如何在界面上安排控件(圖中的(1)-(5)分別是(請將(2)和(3)點(diǎn)開看一看的內(nèi)容,回顧當(dāng)時在 (話題再回到圖4屬性:在設(shè)計中可以修改框、控件等對象的屬性(實(shí)則對應(yīng)的就是對象的數(shù)據(jù)成員 工具箱:其中包括了常見應(yīng)用程序界面中需要的各種“控件”(深刻理解:控件是 已經(jīng)定義好的供人機(jī)交互使用的類,將控件“拖”到界面上的動作,將對應(yīng)由類實(shí)例化出其一個對象用文編輯控件來于C中義的dt類在 放”dtonol個dt)在你開發(fā)程序的過程中,15)是時時需要用到的部件。但是,有時界面上并不能找到。如果哪一個東東“”了,首先要看看整個界面,是否“停靠”在了哪個邊緣。另外,點(diǎn)擊“視圖”6(話題扯開了一些,下面接著進(jìn)行設(shè)計3、在界面上布性”中,將Caption屬性改為“a”(理解:Caption為該類的一個數(shù)據(jù)成員),如圖7所示:(并刪除向?qū)ё詣犹峁┑钠渌丶螅Y(jié)果如圖8所示:(標(biāo)有幫(。接著要做的工作是,在應(yīng)用程序中添加成員就是,并將之與各個編輯框“聯(lián)系”起來。以a后)…9auedoue_或者。同樣的方法,對其余幾個編輯框分別添加變量,變量名分別中m_b、m_c和m_area。,通過在項目中加入用戶自定義代碼后,再設(shè)置點(diǎn)擊“求面積”后要執(zhí)行的代碼4、寫入用戶自定義的代需要將自己寫的三角形類的代碼加入項目1->:anle的:class{Triangle(doublex,doubley,doublez){a=x;b=y;c=z;}doublearea(void);double加入頭文件的界面如圖10所示(再在“源文件”處點(diǎn)擊右鍵,選“添加->新建項”,在項目中加入一個源文件(文件名如:MyTriangle.cpp),內(nèi)容是類中成員函數(shù)的實(shí)現(xiàn)(加入#includestdafx.h的理由可以暫時忽略,其#include"stdafx.h"#include<Cmath>double doubles=(a+b+c)/returnsqrt(s*(s-a)*(s-b)*(s-}的,和。請體會:對一個應(yīng)用而言,這些用戶自定義的代碼是。用術(shù)語講,叫做“業(yè)務(wù)邏輯”5、最后沖在圖8所示的界面上,選擇“求面積”按鈕并雙擊鼠標(biāo),出現(xiàn)了下面的窗口(圖(圖此處,需要輸入當(dāng)點(diǎn)擊按鈕后要執(zhí)行的代碼。輸入的代碼是void TODO Trianglet1(m_a,m_b,m_c);//定義三角形對象 }另外,在 的開始處要寫入“#include"MyTriangle.h"”,這個你應(yīng)該懂現(xiàn)在,可以編譯、運(yùn)行程序了。輸入三邊的長后,點(diǎn)擊“求面積”按鈕,面積值顯示在編輯中三、進(jìn)一步1、修改控件屬例如,用于顯示面積的編輯框只起顯示作用,不會用于輸入,可Disabled屬性設(shè)true,如圖所示。12中,可以發(fā)現(xiàn)屬性窗口部分的下方,顯示對每種控件屬性的含義,這是在學(xué)習(xí)中的可利(2、理解代碼及現(xiàn)含以triangleDlg.h為例,定義的是 框。代碼如下所示classCtriangleDlg:publicCtriangleDlg(CWnd*pParent //框數(shù)enum{IDD=IDD_TRIANGLE_DIALOGvirtualvoidDoDataExchange(CDataExchange* DDX/DDVHICON//生成的消息函virtualBOOLafx_msgvoid mand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnBnClickedButton1();doublem_a;doublem_b;doublem_c;從代碼中可以看到,這個應(yīng)用程序中定義CtriangleDlg類繼承CDialog類,其中的構(gòu)造函數(shù)、虛函數(shù)等機(jī)制都有體現(xiàn)。還有,設(shè)置m_a等幾個變量,都是這個類的數(shù)據(jù)成員,而再對照triangleDlg.cpp閱讀,可以看到這個派生的類是如何實(shí)現(xiàn)如果說閱讀中的,就是其中DoDataExchange()等函數(shù)了。這些是在基類CDialog,甚至CDialog類的基類中定義的成員函數(shù)。這需要在學(xué)習(xí)中,深入了MFC及其機(jī)制。尤其是,理解和運(yùn)Windows編程中的消息機(jī)制。關(guān)于MFC中類的體系,可看下圖。其中本文初步體驗(yàn)過的類,已經(jīng)用紅圈標(biāo)注進(jìn)一步要看的書,包Windows編程、MFC方面的書籍。還有不少書是基于VC++6.0或VS2008、VS2010等的案例開發(fā),也可以作為閱讀和實(shí)踐的選擇。四、結(jié)?。ㄏ胂胩O果的產(chǎn)品)。看看的界面可以發(fā)現(xiàn),對學(xué)習(xí)技術(shù)的同學(xué),界面、窗口并非應(yīng)用的核,。這是未來IT工作者必須要走的路三、wxWidgets前關(guān)于大學(xué)中的“++程序設(shè)計”課程,以掌握基本的++語法,并運(yùn)用其解決一般的計算問題為目的。學(xué)生在學(xué)習(xí)中編出的程序,在“長相”上,與實(shí)際的產(chǎn)品不太一樣。學(xué)生感慨,為何我編對了,我說的是“程序和用戶的接口”,俗稱大學(xué)生在成長為一名合格的工程技術(shù)的過程中,需要多階段、多環(huán)節(jié)的培養(yǎng),一門課程抓住要解決的主要問題,其他課程再解決其他問題。大學(xué)的課程有這種階段隆的特點(diǎn)。在實(shí)際的工程中用+,非C/C++不可。界面,某種角度講,不是但是,作為大眾產(chǎn)品,沒有好長相,的可能就是失敗。無論如何,學(xué)習(xí)了+,要用++做出界面友好的程序,這個想法不能丟。作為學(xué)過++的同學(xué),能做出一個漂亮的應(yīng)用程序,例如俄羅斯方塊,那是一件很榮耀的事。這也可以作為一個新的階段的開始。在大學(xué),有了修過的為有C++基礎(chǔ)的學(xué)生,需要制定一個初步“進(jìn)階”的方案。本文就是要做這樣的事為什么和其它工具。wxWidgets除了可以用于開發(fā)“有界面”的程序,還提供對圖形、多、網(wǎng)絡(luò)等常乎所有操作系統(tǒng),包括對掌上電腦的支持。wxWidgets社區(qū)快速穩(wěn)健成長,其周邊工具也越來越多。wxWidgets支持各種主流的編譯器,通過“重新編譯”的方式支持的移植。wxWidgets吸引還有,盡可能的使用目標(biāo)系統(tǒng)“原生的”的GUI樣式,界面與環(huán)境異常和諧。同樣稱為C++構(gòu)架庫的,還有MFC和Qt。CC只適合nos將是努Qt同樣跨平臺,同樣開源。Qt由商業(yè)機(jī)構(gòu),有人甚至說更出眾哪種語言好,哪個平臺強(qiáng)?為此打嘴仗的很多。其實(shí)對于初學(xué)者而言,重在過程,重在體驗(yàn)。早已經(jīng)不是“從一而終”的時代了,何況身處T這樣一個變化快的行業(yè)中。用學(xué)習(xí)AB和C也許本文選wxWidgets都是一個偶然。借助wxWidgets,獲得C++應(yīng)用程序開發(fā)的初步體驗(yàn),在本文中,還用了Code::Blocks,一個優(yōu)秀的開源C++IDE。為Code::Blocks,而不是Code::Blocks。多加一句,Code::Blocks還是很好的。看本文的只看不練空把式。本文,以及后續(xù)的學(xué)習(xí)路線,不是看下去的,而是做下去的邊看邊做,此為看本文需要的基本文面向的是初學(xué)者,尤其是只按著教學(xué)要求學(xué)過了C++相關(guān)課程,或者了一段時間C++的大學(xué)生或程序設(shè)計者。程序設(shè)計的一般知識和技能:簡單而言,學(xué)過++課程,做過了一些練習(xí)。掌握了++中類、對象、構(gòu)造函數(shù)、重載、繼承、多態(tài)等基本概念。要補(bǔ)課,可以到《+程序設(shè)計課程主2013,nehejanacledea9079。會用Code::Blocks調(diào)試程序:如果以前是在其他平臺中實(shí)踐C++程序設(shè)計,請自行、安Code::BlocksCode::Blocksnet/sxhelijian/article/details/17710041。本文特本文最大的特點(diǎn)是虎頭蛇尾這是作者的自我表揚(yáng),不是批評。本文想要起到的作用無非兩點(diǎn)引導(dǎo)讀者能夠搭建起一個能開始工作的環(huán)配置環(huán)境的這本來不淺,這樣的鍛煉足夠珍貴。但搭建環(huán)境的過程中,有不少細(xì)節(jié)并不是一時半會兒就可以學(xué)會的,不少內(nèi)容有待后續(xù)的學(xué)習(xí)中解決和領(lǐng)悟。本文始終記著要用dets引導(dǎo)讀者正確之所以做虎頭,是因?yàn)槿f事開頭難。本文只解決開頭難的事情。開了頭,就好了之能以能這樣做,是因?yàn)?,只要開頭,就有無數(shù)多的資料為你所用。wxWidgets的參考先造個虎頭,讓初學(xué)者自己續(xù)上虎身、虎2、安裝這方面的資料從網(wǎng)絡(luò)可以找到不少。xdes蓋是。以下文字,適合于大部分初學(xué)者的工作環(huán)境。為能邊看邊做,請確認(rèn):(1)你用的 操作系統(tǒng)(強(qiáng)烈建議初學(xué)者進(jìn)階后,適時開啟Linux下開發(fā)的體驗(yàn));(2)已經(jīng)安裝了2.1 的官網(wǎng)在,頁面是作為Windows用戶,從頁面如下畫圈的兩個文件。Windows.ZIP是wxWidgets的源代碼,Manual(HTML).zip則是在學(xué)習(xí)過程中最重要的參考(即前述的文檔)。在4.2節(jié)中,將專門介紹文檔的使用。后,將文件 解壓縮,下圖是我解壓縮后的結(jié)果,我將其解壓到F:/wxWidgets-3.0.0中。后文中,我將用X:/wxWidgets-3.0.0表示這個文件夾,X代表你選擇的盤符為什么要自己編譯可以將安裝好。源于而是對業(yè)。作系統(tǒng)(Linux、unix、Windows、MacOS)下工作的開發(fā),他們使用的C++編譯器(GCC家族、MS、Borland及其他各種)形形、版本各異。wxWidgets不便于提供各種組合下實(shí)際上,不這樣做,往往得不到適合自己的開發(fā)環(huán)境點(diǎn)就實(shí)際上,wxWidgets中還提供了一個稱為wxPack的編譯好的版本,可以用于直接安裝。在體驗(yàn)中,的wxPack使用的GCC版本低了,安裝順利,但卻不能正確運(yùn)行在開發(fā)環(huán)境中寫的程序。這種方法,不使用。編 wxWidgets,要先準(zhǔn)備好編譯器,并且配置好運(yùn)行編譯器的“環(huán)境”編譯器,也可以在Code::Blocks中通過設(shè)置進(jìn)行工作X:\CodeBlocks\MinGW\binC++工作的GCC系列程序。徑)下要(在 中,鼠標(biāo)右擊桌面上的“計算機(jī)”圖標(biāo),選菜單中的“屬性”,接下來,就是如下的no”置好H還有別式,直接用 命令做。有不少資料中講這種做法,本文不做介紹編譯wxWidgets的事情需要用命令行的方式完成用命令行編譯命解X:(回車當(dāng)前盤置為X,X命解X:(回車當(dāng)前盤置為X,X是你解wxWidgets用的盤符cd\wxWidgets-3.0.0\build\msw(回車當(dāng)前置為/wxWidgets-3.0.0\build\msw,可以查看這個文件夾中的文件msw是專供微軟(ms的C++源代碼在\wxWidgets-3.0.0\src中)gccv(回車這個命令并非必須,意在檢查剛才的路徑設(shè)置是否中,可以運(yùn)行X:\CodeBlocks\MinGW\bin中令。還可以看到,當(dāng)前使GCC版本是4.7.1下圖是我運(yùn)行上表中令出現(xiàn)的結(jié)果下面就可以要開始編譯wxWidgets了。就在DOS提示符后面,輸入下面令 意外處gcc_mswuddll\monodll_xh_bmpcbox.o:filenotrecognized:Memorycollect2.exe:error:ldreturned1exit我在編譯wxWidgets中g(shù)cc_mswuddll\monodll_xh_bmpcbox.o:filenotrecognized:Memorycollect2.exe:error:ldreturned1exit多知道一面的HRD和ID別不解釋,以后將明白,或者自行之。BUILD的取值可以是debug或release,代表在應(yīng)用程序開發(fā)時,產(chǎn)生的可執(zhí)行文件是調(diào)試版所以可以運(yùn)行令還有3個 中的“問題wxWidgets應(yīng)用程序初體本文中所有的體驗(yàn),在Code::Blocks中進(jìn)行為了Code::Blocks中編譯運(yùn)行C++wxWidgets程序,需要再做些設(shè)置首先,需要在環(huán)境變量里添加一個wxWidgets根 變量的方法。在Win7中,右擊桌面上的“計算機(jī)”圖標(biāo),選菜單中的“屬性”,在“系統(tǒng)屬性”接下來的設(shè)置要在Code::Blocks中進(jìn)行打開Code::Blocks,選擇菜單Settings->GlobalVariables…,在設(shè)置default下新建立一個wx變Build-infields:下,base中填入“${wxwin}”(wxwin是剛才設(shè)置好的一個變量),include中填入“${wxwin}\include”,lib中填入“${wxwin}\lib”,這些都是開發(fā)中需要用到的“環(huán)境”中的一部由“空項目”建立和運(yùn)行GUI自 這個,將作為建議學(xué)習(xí)方案中的主之一。自建立項建立項目的過程通過菜單“File”->“New”->“Project…”,選擇 project”建一個空項ones。點(diǎn)擊“next”后,要求選擇編譯器及生成的目標(biāo)文件類型,照下圖選點(diǎn)擊“Finish”后,將生成一個空項目點(diǎn)擊菜單File->New->File...為項目新建一個源程序文件。在連續(xù)出現(xiàn)的幾個框中,選在下圖所示的框中,給出帶完整路徑的源文件名(本例中用main.cpp),注意將Debug復(fù)選框#includeclassSimple:public{Simple(constwxString&Simple::Simple(constwxString&:#includeclassSimple:public{Simple(constwxString&Simple::Simple(constwxString&:LL,wxID_ANY,title,wxDefaultPosition,wxSize(250,{}classMyApp:public{virtualboolbool{Simple*simple=newSimple(wxT("Simple"));return}加入了源代碼之后的項目如下圖所示是。下面將對這個項目進(jìn)行編譯,進(jìn)而看到運(yùn)fatalerror:wx/wx.h:Nosuchfileor選擇菜單“Build”中的“Build”選項(或者中的相應(yīng)按鈕)對項目進(jìn)行編譯、連fatalerror:wx/wx.h:Nosuchfileor也就是說,找不到要包含的頭文件wx\wxh設(shè)置Compiler。通過“Add”增加 X:\wxWidgets-3.0.0\lib\gcc_dlwud和X:\wxWidgets-3.0.0\include,結(jié)果如下圖所接著Build,將不再有語法錯誤出現(xiàn)的一大堆錯誤提示,來自于連接環(huán)節(jié),問題是找不到庫文件AddX:\wxWidgets-3.0.0\lib\gcc_dll文件夾中的所有.a文件(實(shí)際上,選擇按提示來,在X:\wxWidgets-3.0.0\lib\gcc_dll中找到wxmsw30ud_gcc_custom.dll文件,將其拷貝到項目所在文件夾,再運(yùn)行,就看到了期盼的窗口,。屬于“動態(tài)庫”(這個術(shù)語自己去吧)。這種方式的好處在于編譯速度快,目標(biāo)代碼小,但是在編譯好的程序運(yùn)行時,必須要能找到需要的.dll文件。最簡單的辦法,就是拷貝.dll文件。件者利用Code::Blocks本節(jié)下面的材料,非作者,整理自 通過菜單“File”->“New”->“Project…”,選擇最后面的wxWidgetsproject點(diǎn)擊“Go”進(jìn)入工程配置向?qū)?,首先會出來一個歡迎窗口,直接 后,選擇安裝按“Next”,然后輸入項目名“wxtest”,選擇保存項目的繼續(xù)“Next”,輸入作者和及一些說明信息繼續(xù)“Next”GUI設(shè)計工具和程序wxSmithDialogbased按“Next”,接下來的就是 環(huán)境的一些設(shè)置了,這里輸入剛才設(shè)置 ,直接填入“$(#wx)”就可以了按“Next”,這里看到默認(rèn)就是選擇了MinGW編譯器了,下面的只做Debug版本,所以只選上“Create“Debug”configuration”。繼續(xù)“Next”,接下來要選擇怎么使用wxWidgets庫,這里根據(jù)你編譯的wxWidgets庫是什按“Next”,因?yàn)檫x擇了“ConfigureAdvancedOptions”,所以要對使用wxWidgets庫做的設(shè)置,這里選上使用lib方式調(diào)用(要求編譯wxWidgets時用SHARED=0參數(shù),生成了按“Next”進(jìn)到最后一步,選擇需要用到的庫,不知道的話全部選上點(diǎn)擊“Finish”,工程隨即建這時可以查看項目中自動生成的文件,其中有.cpp的源文件,也有h的頭文件。再細(xì)讀,和中輸入的程序長得差不多請參閱3.1.2小節(jié),可能會幫助你排除問題,讓程序正確運(yùn)行 學(xué)習(xí)資料及利用方法指本章的學(xué)習(xí)資料,從最一般的——書籍開C++wxWidgets《使用wxWidgets進(jìn)行跨平臺 /gp/product/B00A1WDQ30),部分(含書中例程的源代碼,從)??吹煤?,請支持紙質(zhì)。這本書的英文版叫《CrossPlatformGUIProgrammingWithwxWidget》(見),我瀏覽過其中的一部分,讀起來不難wxwidgetsWiki主)我閱讀的是wxwidgets的Wiki主頁 )Tutorials部分(《wxWidgetstutorial /gui/wxwidgets/)。寫作時再次看wxwidgets的Wiki主頁,發(fā)現(xiàn)其中的寶,太多了。開源社區(qū)的貢獻(xiàn)者不僅提供的共享,而且將這種共享精神延續(xù)到指導(dǎo)書籍,必須贊?!秝xWidgetstutorialdesuoal力發(fā)desdesuoadt為方便讀者,我將這個中整理到一個Word文檔中,作為本的一個附件,一起打包供使用。Word文檔中,加入了部分批注,是我在學(xué)習(xí)中查閱得到的線索。一《desuoal,是IT學(xué)生的學(xué)習(xí)形態(tài)。我一直鼓勵“在用英語中”(nehejanaicedea/1217147),這就是一個大好的時機(jī)。是否能看下去,不決定于你英語水平的高低,而是決定于你的心態(tài)。再進(jìn)一步,這本描述性文字很少,即使高D在互聯(lián)網(wǎng)時代,另一類資料必須引起學(xué)習(xí)者的注意,那就是的文檔和到wxWidgets的主頁中看看,其中ation部分的每一個,各成熟平臺常有文用微軟平臺開發(fā)程序時,最好的參考是SN(/ba/),而用aa開發(fā)時,有aaE6aon(hp jaase6docndehl),也有部分內(nèi)(記不住的。有文檔查找,專業(yè)不記這些。大多數(shù)成平臺,既提供真正的文檔,這些以。wxWidgets的文wxWidgets也有文檔(),在2.1節(jié),要求讀者M(jìn)anual(HTML).zip現(xiàn)在請選擇一個自己用著的文件夾,將Manual(HTML).zip解壓縮。我解壓縮到了查找文一個例子。在《wxWidgetstutorial》中,sandToolbars部分第一節(jié)Simple 中的例程,有一段如下代碼Simple::Simple(constwxString&:wxFraLL,wxID_ANY,title,wxDefaultPosition,wxSize(280,{bar=newwx file=newwx file->Append(wxID_EXIT,wxT("&Quit"));//練習(xí):想知道Append函數(shù)的情 }現(xiàn)在想知類的構(gòu)造函數(shù)中的各參數(shù)含義,要點(diǎn)的是:Class->ClassIndex-(wxWidgets中類名均以wx開頭,取wxFrame中的F),如下圖關(guān)心wxFrame類的構(gòu)造函數(shù),繼續(xù)往下看,可以在“Constructor&Destructor wxFrame::wxFrame wxWindowconstwxPoint&constwxSize&constwxString)parentparentTherent.ThismaybeNULL.Ifitisnon-NULL,theframealwaysbedisplayedontopoftheparentwindowonidThewindowidentifier.Itmaytakeavalueof-1toindicateadefaulttitleThecaptiontobedisplayedontheframe'stitleposThewindowposition.ThevaluewxDefaultPositionindicatesadefaultposition,chosenbyeitherthewindowingsystemorwxWidgets,dependingonplatform.sizeThewindowsize.ThevaluewxDefaultSizeindicatesadefaultsize,chosen

size=wxDefaultSize,name=wxFrameNameStreithereitherthewindowingsystemorwxWidgets,dependingonstyleThewindowstyle.SeewxFrameclassnameThenameofthewindow.Thisparameterisusedtoassociateanamewiththeitem,allowingtheapplicationusertosetMotifresourcevaluesforindividualwindows.這里,構(gòu)造函數(shù)的參數(shù)、返回值一目了然,各個參數(shù)的含義、用法、默認(rèn)值也可以看到。這最佳的第一手的開發(fā)參下面請做一個練讀下面的程序時,想知道Append函數(shù)的情況。如何利用文檔找到關(guān)于上面的代碼中還有哪些疑問,試著通過文檔給出解答查看文檔的設(shè)備支如果有條件,布置如下圖所示的工作條件。屏,一個看文檔,一個寫程序用閱,當(dāng)然,作為在校學(xué)生,當(dāng)場地受限時,也不必太糾結(jié)這樣的條件了。畢竟,這不是必須是odeocs+在(h(p檔。符合規(guī)范要求的開發(fā)者,通過恰當(dāng)名,總能夠讓程序的閱讀者“見文知義”,從頭文件中:{(constwxString&LL,wxID_ANY,title,wxDefaultPosition,wxSize(280,bar=new file=new :{(constwxString&LL,wxID_ANY,title,wxDefaultPosition,wxSize(280,bar=new file=new file->Append(wxID_EXIT,wxT("&Quit"));//例bar->Append(file,wxT("&File"));//練習(xí) }現(xiàn)在,想知道file->Append(wxID_EXIT,wxT("&Quit"));一句中Append函數(shù)各參數(shù) 類的實(shí)例,只要看

Code::Blocks中,單擊鼠標(biāo)右鍵,單擊在在菜單中出現(xiàn)的“Finddeclarationof: ”選項,如圖 的 , Base類的成員函數(shù)。用相同的操作在wx 項,在新出現(xiàn)的頁簽中,找到了Append成員函數(shù)的4種重載形式的的,如下圖所示。,現(xiàn)在做一個練習(xí)。找出 深入學(xué)習(xí)路線建看書的策tutorial》這兩本書,同步地實(shí)踐程序?!?tutorial》中運(yùn)行過的例子。這種安排的體驗(yàn),感覺不錯在odeock中頻繁建項目很麻煩,況且每建一個項目還得設(shè)置udopon。做法是,#include<wx/wx.h>#include<wx/ 《desuoal》中的例子寫得非常規(guī)范,嚴(yán)格執(zhí)行了h頭文件中寫,cpp源文件中寫實(shí)#include<wx/wx.h>#include<wx/ 之類的包含頭文件要保留,#include#include 之類的自定義頭文件的包含命令,需要刪除。因?yàn)楹喜⒌搅送粋€文件中,這些頭文件根本不存的案安裝好的desxde3.00deos中是所有的演示案例,示例的項目在xde300sampes中,學(xué)習(xí)到一定時候,運(yùn)行這些程序,讀一讀例如,wxWidgets的Demo中的一個項目forty,是一個紙牌,運(yùn)行結(jié)果如下圖這個項目中的源文件如下圖所示在Code::Block中新建一個項目,將Demo\forty中所有.cpp和h文件到項目所在文件夾中,Addfile...的方式將文件加入項目,成為項目的源文件和頭文件。Demo為適應(yīng)多種平臺,提供了很多的文件,一般只需要.cpp和h文件即可,如上圖中加了方框的部分如果項目中有pm(并不是每個項目都有,也這種文件過去是一種格oy3在更極少數(shù)情況下,還可能有其他文件需要過去。這可以通過讀代碼,看源程序中是否寫了這個文件名。偷懶的辦法,運(yùn)行程序,若由于找不到文件出錯了,會提示還需要哪個文件。比如oybouthm后兩類文件過去即為支持程序運(yùn)行的,不必通過Addfile...將其加入項目。wxSmith進(jìn)行可視化設(shè)在實(shí)際的工程開發(fā)中,做界面的工作常通過可視化的操作完成。wxSmith就是這樣一個支持wxWidgets快速開發(fā)的一個工具,專門用來做界面。wxSmith已經(jīng)是Code::Blocks的一個標(biāo)準(zhǔn)配置,在Code::Blocks菜單中可以看到這一項這一章,從做一個應(yīng)用程序開始。應(yīng)用程序的窗口中有兩個按鈕,按Say oWorld”,按Quit按鈕,程序?qū)⒔Y(jié)束。wxSmith創(chuàng)建應(yīng)用程序的外創(chuàng)建一個空項目,名稱為plain。選擇菜單wxSmith->AddwxFrame,將Frame命名plainFrame在左側(cè)的Management窗口中,顯示Resources頁簽,看到的界面如下圖所示窗口中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論