solidworks 二次開發(fā)論文_第1頁
solidworks 二次開發(fā)論文_第2頁
solidworks 二次開發(fā)論文_第3頁
solidworks 二次開發(fā)論文_第4頁
solidworks 二次開發(fā)論文_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、- -、z1前言功能強(qiáng)大、易學(xué)易用和技術(shù)創(chuàng)新是SolidWorks的三大特點(diǎn),使得SolidWorks成為領(lǐng)先的、主流的三維CAD解決方案。SolidWorks能夠提供不同的設(shè)計(jì)方案、減少設(shè)計(jì)過程中的錯(cuò)誤以及提高產(chǎn)品質(zhì)量oSolidWorks不僅提供如此強(qiáng)大的功能,同時(shí)對每個(gè)工程師和設(shè)計(jì)者來說,操作簡單方便易學(xué)易用。同時(shí)SolidWorks還提供了功能強(qiáng)大的API接口程序模塊,使得用戶可以根據(jù)自身的條件和需求編寫加掛與該軟件環(huán)境下的應(yīng)用程序。本次設(shè)計(jì)設(shè)計(jì)的題目是SolidWorks的APItoolbox二次開發(fā)。主要任務(wù)為在SolidWorks軟件下加掛菜單,添加用戶的應(yīng)用軟件。零件的管理一直

2、是比較耗時(shí)又容易出錯(cuò)的問題。特別是一套復(fù)雜零部件以及裝配體的管理更是需要有一個(gè)專門的管理軟件。本次設(shè)計(jì)的結(jié)果使得管理更加方便和實(shí)用,極大的提高了工作效率。在設(shè)計(jì)的過程中,王彪老師給了我們許多的指導(dǎo)性建議,并為我們創(chuàng)造了優(yōu)越的學(xué)習(xí)工作環(huán)境。同時(shí)還有劉中柱老師在設(shè)計(jì)和學(xué)習(xí)過程中也給了我極大的幫助。僅此,對幫助和支持我得老師和同學(xué)表示深深的感謝。由于本人水平有限,經(jīng)驗(yàn)不多,論文中肯定會有不少的缺點(diǎn)或錯(cuò)誤,請老師和同學(xué)批評指正。1.1設(shè)計(jì)目的和意義設(shè)計(jì)的目的是實(shí)現(xiàn)拉車閘門系統(tǒng)的零部件以及裝配體的統(tǒng)一界面管理。利用SolidWorks強(qiáng)大的應(yīng)用程序接口,以VisualC+6.0作為開發(fā)工具。軟件的實(shí)現(xiàn)極

3、大的提高了零件的管理。意義,對SolidWorks的工作流程以及基本原理有了更深的了解。對利用VC的FMC類庫的運(yùn)用有了基本的認(rèn)識。面向?qū)ο蟮木幊谈芊奖愠绦蚓幹普?,特別是程序的修改上。在結(jié)構(gòu)上更能體現(xiàn)程序的流程。國內(nèi)國際狀況及進(jìn)展SolidWorks公司于2002年9月18日宣布推出三維機(jī)械CAD軟件的最新版本SolidWorks2003,進(jìn)一步幫助機(jī)械設(shè)計(jì)工程師實(shí)現(xiàn)協(xié)同設(shè)計(jì),將新產(chǎn)品快速推向市場。SolidWorks2003新版本中有幾百項(xiàng)新功能的提高:在新版本中增加了結(jié)構(gòu)分析功能,協(xié)同設(shè)計(jì)功能,網(wǎng)上下載三維產(chǎn)品目錄功能,以及其他新的建模功能。這些新的功能使得SolidWorks設(shè)計(jì)工程師

4、進(jìn)一步提高設(shè)計(jì)效率,SolidWorks的用戶在市場上將更具有競爭力。SolidWorks2003版新增加的結(jié)構(gòu)分析功能能夠幫助設(shè)計(jì)工程師設(shè)計(jì)的正確性,減少了生產(chǎn)過程中產(chǎn)生的錯(cuò)誤帶來的損失。SolidWorks2003新版本能夠讀入的格式更加靈活,包括AutoCAD和CADKEY的各種格式,這種功能能夠在三維設(shè)計(jì)時(shí)包容第三方軟件的設(shè)計(jì)信息,用戶能夠快速完成設(shè)計(jì)。SolidWorks2003是世界上第一個(gè)能實(shí)現(xiàn)實(shí)時(shí)運(yùn)動仿真的三維CAD軟件,例如檢查裝配環(huán)境中的齒輪嚙合等,設(shè)計(jì)師可以在制造之前發(fā)現(xiàn)設(shè)計(jì)中的缺陷和錯(cuò)誤?!癝olidWorks2003能支持多種文件格式,對我們設(shè)計(jì)師來講是很方便的,可以

5、很容易地將不同的文件轉(zhuǎn)化為SolidWorks的數(shù)據(jù)模型,完成設(shè)計(jì)任務(wù)?!币晃粍傆眠^SolidWorks2003的用戶講到?!拔覀兛梢院芊奖愕貙⒛嫦蚬こ坍a(chǎn)生的數(shù)據(jù)文件直接拖拉到SolidWorks的環(huán)境中,而不必象以前一樣手工地進(jìn)行文件的轉(zhuǎn)換。這種功能不僅給我們設(shè)計(jì)師節(jié)省了大量的時(shí)間和工作量,同時(shí)還可以繼承原來老設(shè)計(jì)中優(yōu)秀的東西。總之,SolidWorks2003不僅從功能本身或從數(shù)據(jù)轉(zhuǎn)化來將都是最優(yōu)秀的?!闭撐母鞑糠种饕獌?nèi)容SolidWorks作為機(jī)械類的三維CAD軟件,對于具體的用戶可能有不同的應(yīng)用??蛻糇约航⑾嚓P(guān)的軟件使得SolidWorks能更好的成為開發(fā)管理的優(yōu)秀應(yīng)用軟件。論文的第

6、二章介紹了本次設(shè)計(jì)的相關(guān)知識。并對SolidWorks的使用作了簡明的介紹。第三章闡述了設(shè)計(jì)的流程及結(jié)構(gòu),對系統(tǒng)設(shè)計(jì)作了具體的分析。第四章說明了如何建立數(shù)據(jù)庫的過程以及相關(guān)的知識。并對數(shù)據(jù)庫進(jìn)行了相應(yīng)說明。第五章對本次設(shè)計(jì)的具體實(shí)現(xiàn)以及程序的編制作了詳細(xì)的說明。第六章是對本次設(shè)計(jì)的軟件的打包,制作安裝程序。第七章對軟件的演示進(jìn)行了示例。第八章是對這次設(shè)計(jì)的總結(jié)。最后是謝詞參考文獻(xiàn)以及附錄。2設(shè)計(jì)開發(fā)相關(guān)知識SolidWorks曲面設(shè)計(jì)通過帶控制線的掃描、放樣、填充以及拖動可控制的相切操作產(chǎn)生復(fù)雜的曲面??梢灾庇^地對曲面進(jìn)行修剪、延伸、倒角和縫合等曲面的操作。鈑金設(shè)計(jì)SolidWorks提供了頂

7、尖的、全相關(guān)的鈑金設(shè)計(jì)能力。可以直接使用各種類型的法蘭、薄片等特征,正交切除、角處理以及邊線切口等鈑金操作變得非常容易。用戶化SolidWorks的API為用戶提供了自由的、開放的、功能完整的開發(fā)工具。開發(fā)工具包括MicrosoftVisualBasicforApplications(VBA)、VisualC+,以及其他支持OLE的開發(fā)程序。幫助文件SolidWorks2001配有一套強(qiáng)大的、基于HTML的幫助文件系統(tǒng)。包括超級文本鏈接、動畫示教、在線教程、以及設(shè)計(jì)向?qū)Ш托g(shù)語。數(shù)據(jù)轉(zhuǎn)換SolidWorks提供了當(dāng)今市場上幾乎所有CAD軟件的輸入/輸出格式轉(zhuǎn)換TO器。IGESIPT(AutoDe

8、skInventor)STEPDWGSAT(ACIS)DXFVRMLCGR(Catiagraphic)STLHCG(Highlycompressed)ParasolidgraphicsPro/ENGINEERViewpointUnigraphicsRealityWavePAR(SolidEdge)TIFFVDA-FSJPGMechanicalDesktopSolidWorks2001plusAPISolidWorks提供API作為二次開發(fā)工具,其中列舉了用戶可以調(diào)用的C語言函數(shù)名及其技術(shù)指標(biāo)格式。SolidWorksAPI是SolidWorks的OLE應(yīng)用程序開發(fā)接口,用戶可以利用它和支持OL

9、E編程的開發(fā)工具,如VB、VBA(Excel,Access)、C、VC+等對SolidWorks進(jìn)行二次開發(fā),建立適合用戶需要的、專用的SolidWorks功能模塊。本次設(shè)計(jì)采用VC+作為開發(fā)工具。SolidWorks提供三種開發(fā)方式:可執(zhí)行文件*.exe、正規(guī)的.DLLs有兩種實(shí)現(xiàn)方式:dynamicallylinked或者staticallylinked,一般都使用dynamicallylinked。因?yàn)殪o態(tài)連接到MFC代碼庫,你的.DLL包括它自己的所有的所需的MFC代碼,那么它將非常龐大。另一種是MFC擴(kuò)展.DLL,一個(gè)擴(kuò)展.DLL是動態(tài)連接到MFC的代碼庫的.DLL的.客戶程序也必須

10、動態(tài)的連接到MFC的代碼庫。MFC擴(kuò)展.DLLs非常小.你可以建立一個(gè)導(dǎo)出一些函數(shù)或者類的大約10-15KB的。為了充分利用VC的資源,設(shè)計(jì)采用了最后一種即MFC擴(kuò)展.DLL。VisualC+6.0理解VC工程VisualC+作為一種程序設(shè)計(jì)語言,它同時(shí)也是一個(gè)集成開發(fā)工具,提供了軟件代碼自動生成和可視化的資源編輯功能。擴(kuò)展名為dsw的文件類型,這種類型的文件在VC中是級別最高的,稱為Workspace文件。在VC中,應(yīng)用程序是以Project的形式存在的,Project文件以.dsp擴(kuò)展名,在Workspace文件中可以包含多個(gè)Project,由Workspace文件對它們進(jìn)行統(tǒng)一的協(xié)調(diào)和管

11、理。與dsw類型的Workspace文件相配合的一個(gè)重要的文件類型是以opt為擴(kuò)展名的文件,這個(gè)文件中包含的是在Workspace文件中要用到的本地計(jì)算機(jī)的有關(guān)配置信息,所以這個(gè)文件不能在不同的計(jì)算機(jī)上共享,當(dāng)我們打開一個(gè)Workspace文件時(shí),如果系統(tǒng)找不到需要的opt類型文件,就會自動地創(chuàng)建一個(gè)與之配合的包含本地計(jì)算機(jī)信息的opt文件。以clw為擴(kuò)展名的文件是用來存放應(yīng)用程序中用到的類和資源的信息的,這些信息是VC中的ClassWizard工具管理和使用類的信息來源在應(yīng)用程序中經(jīng)常要使用一些位圖、菜單之類的資源,VC中以rc為擴(kuò)展名的文件稱為資源文件,其中包含了應(yīng)用程序中用到的所有的wi

12、ndows資源。對于以ico,bmp等為擴(kuò)展名的文件是具體的資源,產(chǎn)生這種資源的途徑很多。使用rc資源文件的目的就是為了對程序中用到的大量的資源進(jìn)行統(tǒng)一的管理。近幾年來,面向?qū)ο蠹夹g(shù)無論是在理論還是實(shí)踐上都在飛速地發(fā)展。面向?qū)ο蠹夹g(shù)中最重要的就是“對象”的概念,把現(xiàn)實(shí)世界中的氣球、自行車等客觀實(shí)體抽象成程序中的“對象”。這種“對象”具有一定的屬性和方法,這里的屬性指對象本身的各種特性參數(shù)。一個(gè)具體的對象可以有許多的屬性和方法,面向?qū)ο蠹夹g(shù)的重要特點(diǎn)就是對象的封裝性,對于外界而言,并不需要知道對象有哪些屬性,也不需要知道對象本身的方法是如何實(shí)現(xiàn)的,而只需要調(diào)用對象所提供的方法來完成特定的功能。程

13、序員大部分的時(shí)間是放在對對象的方法的調(diào)用上,組織這些對象進(jìn)行協(xié)同工作。MFC編程特點(diǎn)MFC的英文全稱是MicrosoftFoundationClasses,即微軟的基本類庫,MFC的本質(zhì)就是一個(gè)包含了許多微軟公司已經(jīng)定義好的對象的類庫,在進(jìn)行程序設(shè)計(jì)的時(shí)候,如果類庫中的某個(gè)對象能完成所需要的功能,這時(shí)我們只要簡單地調(diào)用已有對象的方法就可以了。我們還可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承”方法,從類庫中的已有對象派生出我們自己的對象,這時(shí)派生出來的對象除了具有類庫中的對象的特性和功能之外,還可以由我們自己根據(jù)需要加上所需的特性和方法,產(chǎn)生一個(gè)更專門的,功能更為強(qiáng)大的對象。正是由于MFC編程方法充分

14、利用了面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),它使得我們編程時(shí)極少需要關(guān)心對象方法的實(shí)現(xiàn)細(xì)節(jié),同時(shí)類庫中的各種對象的強(qiáng)大功能足以完成我們程序中的絕大部分所需功能,這使得應(yīng)用程序中程序員所需要編寫的代碼大為減少,有力地保證了程序的良好的可調(diào)試性。下面介紹在WINDOWS程序設(shè)計(jì)中最常用的一些消息:窗口消息:WM_CREATE,WM_DESTROY,WM_CLOSE鍵盤消息:WM_CHAR,WM_KEYDOWN,WM_KEYUP鼠標(biāo)消息:WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBCLICK,WM_RBUTTONDOWN,WM_RBUTTONUP,WM_R

15、BUTTONDBCLICK3設(shè)計(jì)流程及結(jié)構(gòu)3.1設(shè)計(jì)流程設(shè)計(jì)結(jié)構(gòu)本設(shè)計(jì)的結(jié)構(gòu)主要由以下部分組成:讀取數(shù)據(jù)庫,零件的選擇,零件的預(yù)覽,零件的打開。讀取數(shù)據(jù)庫部分是運(yùn)用VC的MFC中的DAO進(jìn)行編程的。利用其指針,讀取數(shù)據(jù)庫里面的數(shù)據(jù),運(yùn)用SQL語句進(jìn)行查詢等操作。零件的預(yù)覽是先讀取數(shù)據(jù)庫里的有關(guān)零件的位置。然后將零件在預(yù)覽框中顯示。以利于選擇的直觀性,且不易出錯(cuò)。零件的打開是為了實(shí)現(xiàn)對所選零件的一些修改,零件的尺寸都是相關(guān)聯(lián)的,修改簡便。建立數(shù)據(jù)庫4.1建立表建立表格采用了微軟的Access2000為開發(fā)工具。對本次設(shè)計(jì)的具體要求的分析。建立了三個(gè)相關(guān)聯(lián)的表。分別為sys_type,parts_

16、1,part三個(gè)表。由于在VC+中利用DAO讀取Access數(shù)據(jù)庫的格式必須是Access97文件。所以在建完表之后必須轉(zhuǎn)換數(shù)據(jù)格式。設(shè)計(jì)的表如下:systype系統(tǒng)型號ID型號11型號22型號33此表為第一級表,下面的表將和此表實(shí)現(xiàn)相關(guān)聯(lián)。(sys_type)parts1裝配體NO1ID氣壓控制系統(tǒng)1.11小車道軌一1.21拉車汽缸裝置一1.31閘門系統(tǒng)1.41活塞桿托架一1.51載模小車一1.61墊板一1.71氣壓控制系統(tǒng)二2.12小車道軌二2.22拉車汽缸裝置二2.32閘門系統(tǒng)二2.42活塞桿托架二2.52載模小車二2.62墊板二2.72氣壓控制系統(tǒng)三3.13小車道軌三3.23拉車汽缸裝

17、置三3.33parts1裝配體NO1ID閘門系統(tǒng)三3.43活塞桿托架三3.53載模小車三3.63墊板三3.73此表是對系統(tǒng)的進(jìn)一步細(xì)分。(parts)part零件名稱零件編號N01零件位置T形槽螺栓M301.3拉車汽缸裝置T形槽螺栓M30.sldprt彈簧墊圈M121.3拉車汽缸裝置彈簧墊圈M12.sldprt彈簧墊圈M161.3拉車汽缸裝置彈簧墊圈M16.sldprt墊圈1.3拉車汽缸裝置墊圈.sldprt調(diào)整墊板1.3拉車汽缸裝置調(diào)整墊板.sldprt感應(yīng)開關(guān)支座1.3拉車汽缸裝置感應(yīng)開關(guān)支座.sldprt感應(yīng)開關(guān)撞塊1.3拉車汽缸裝置感應(yīng)開關(guān)撞塊.sldprt護(hù)板1.3拉車汽缸裝置護(hù)板.

18、sldprt連接桿1.3拉車汽缸裝置連接桿.sldprt六角螺母1.3拉車汽缸裝置六角螺母.sldprt六角螺母M121.3拉車汽缸裝置八角螺母M12.sldprt六角螺母Ml1.3拉車汽缸裝置八角螺母M16.sldprt六角螺母M301.3拉車汽缸裝置六角螺母M30.sldprt六角螺栓M101.3拉車汽缸裝置六角螺栓M10.sldprt六角螺栓M121.3拉車汽缸裝置六角螺栓M12.sldprt六角螺栓M161.3拉車汽缸裝置六角螺栓M16.sldprt平墊圈M101.3拉車汽缸裝置平墊圈M10.sldprt平墊圈M121.3拉車汽缸裝置平墊圈M12.sldprt平墊圈M161.3拉車汽缸

19、裝置平墊圈M16.sldprt平墊圈M301.3拉車汽缸裝置平墊圈M30.sldprt上支架|1.3拉車汽缸裝置上支架.sldprtpart零件名稱零件編號NO1零件位置下支架1.3拉車汽缸裝置下支架.sldprt圓螺母M271.3拉車汽缸裝置圓螺母M27.sldprt圓螺母M301.3拉車汽缸裝置圓螺母M30.sldprt支撐板1.3拉車汽缸裝置支撐板.sldprt拉車汽缸|1.3拉車汽缸裝置拉車汽缸.sldasm此表是保存零件的具體信息。軟件最后根據(jù)此表中的零件位置打開相應(yīng)的零件。注:(part)本表的記錄較多,在此只列出部分作為示例。4.2表之間的關(guān)聯(lián)在設(shè)計(jì)表的過程中,在各個(gè)表中都添加一

20、個(gè)相同的字段,將此字段作為表之間相聯(lián)系的橋梁。例如在表sys_type中選擇系統(tǒng)型號為型號1,就可得到其ID字段的值為1。其后根據(jù)ID=1,在表parts中得到符合ID=1的多個(gè)記錄,選擇其中的一個(gè)記錄,假設(shè)為ID=1,N0_1=1.3,裝配體字段值為拉車汽缸裝置一,則可以根據(jù)N0_1=1.3,在part表中得到一組記錄。實(shí)現(xiàn)了從第一個(gè)表開始各個(gè)表之間的關(guān)聯(lián)。設(shè)計(jì)的具體實(shí)現(xiàn)5.1設(shè)計(jì)的背景條件在設(shè)計(jì)中采用直接使用SolidWorks自帶的接口程序。在安裝路徑下的Samplescomuserdlli386,可以直接使用其基本的工程文件。在其中添加自己的應(yīng)用代碼。編譯鏈接后就可以得到一個(gè)comus

21、erdll.dll的動態(tài)鏈接文件。在SolidWorks中運(yùn)用Add-in功能將編譯的文件打開就可以和SolidWorks實(shí)現(xiàn)完美的結(jié)合。5.2在SolidWorks軟件下添加菜單及子菜單在SolidWorks的模板程序中,類userApplications中定義了添加菜單的函數(shù)再在其中的函數(shù)_addMenus(LPFRAMEpFrame)中添加代碼實(shí)現(xiàn)添加用戶自定義的菜單以及相應(yīng)子菜單。實(shí)現(xiàn)的代碼如下:VARIANT_BOOLbres;HRESULThres=pFrame-AddMenu(auT(閘門及拉車系統(tǒng)(&J),6,&bres);hres=pFrame-AddMenuItem(auT

22、(”閘門及拉車系統(tǒng)(&J),auT(零件管理&1),-1,auT(USERDLLpart_manage,這是零件管理。),&bres);hres=pFrame-AddMenuItem(auT(閘門及拉車系統(tǒng)(&J),auT(幫助&3),-1,auT(USERDLLmyhelp幫助),&bres);閘門及拉車系統(tǒng)是加掛與SolidWorks頂部的菜單。零件管理、數(shù)據(jù)管理、幫助是其下面的子菜單。因?yàn)榫幾g的最后文件是userdll.dll,所以在定義菜單函數(shù)時(shí)是在userdll.cpp下實(shí)現(xiàn)的??紤]到資源的問題,還必須在userdll.def中說明菜單函數(shù)的序號。實(shí)現(xiàn)的方法如下:myhelp11pa

23、rt_manage12這樣程序的運(yùn)行才不會和SolidWorks的內(nèi)部資源相沖突。5.3添加菜單函數(shù)在userdll.cpp中添加菜單響應(yīng)函數(shù)。注意在VC中如果函數(shù)不返回任何值,則函數(shù)必須定義成void類型。零件管理菜單的響應(yīng)函數(shù)部分如下:voidpart_manage()HINSTANCEMyResourceHandle=NULL;MyResourceHandle=LoadLibrary(_T(userdll.dll);/SavethecurrentresourcehandleHINSTANCESolidWorksResource=AfxGetResourceHandle();/Switch

24、totheApplicationresourcesAfxSetResourceHandle(MyResourceHandle);CNewDlgdlg;(略)AfxSetResourceHandle(SolidWorksResource);菜單函數(shù)實(shí)現(xiàn)的是打開一個(gè)對話框資源。其中關(guān)系到SolidWorks資源管理問題,必須將自己定義的對話框的句柄設(shè)為當(dāng)前的SolidWorks的資源句柄。具體的有關(guān)問題可以查看SolidWorksAPI幫助里的ProgrammersGuide下GettingStarted下CC中的ManagingyourApplicationResources-C/C+,里面有詳

25、細(xì)的使用方法。幫助菜單的響應(yīng)函數(shù)如下:voidAbout()HINSTANCEMyResourceHandle=NULL;MyResourceHandle=LoadLibrary(_T(userdll.dll);HINSTANCESolidWorksResource=AfxGetResourceHandle();AfxSetResourceHandle(MyResourceHandle);CAboutAboutdlg;Aboutdlg.DoModal();/restorethesolidworkssresourcehandleAfxSetResourceHandle(SolidWorksRes

26、ource);注意在對話框頭文件中添加#include“resource.h”。否則編譯時(shí)會產(chǎn)生找不到對話框的ID號的錯(cuò)誤。關(guān)于的界面在SolidWorks中實(shí)現(xiàn)如下:5.1關(guān)于界面圖中顯示的圖片必須是位圖。在制作時(shí)要把圖的格式轉(zhuǎn)化為*.bmp格式。添加應(yīng)用程序?qū)υ捒驅(qū)υ捒蚩梢栽赩C資源里直接創(chuàng)建,再利用對話框的工具創(chuàng)建需要的各種控件,根據(jù)實(shí)際情況,對話框以及控件的安排如下圖所示:5.2對話框樣式對話框的創(chuàng)建后,在運(yùn)用時(shí)要新建一個(gè)類來控制對話框的各種操作。在本設(shè)計(jì)中定義為CNewDlg類,在對話框中的各個(gè)控件的定義都在該類的函數(shù)中實(shí)現(xiàn)。5.5實(shí)現(xiàn)數(shù)據(jù)庫連接設(shè)計(jì)的實(shí)現(xiàn)采用了MFC類庫的基類CDa

27、oDatabase。運(yùn)用DAO實(shí)現(xiàn)與數(shù)據(jù)庫的鏈接。設(shè)計(jì)的具體步驟如下:首先在stdafx.h中添加頭文件#includevafxdao.h,其次在對話框類中定義一個(gè)數(shù)據(jù)庫指針變量CDaoDatabasem_db;將此變量放在protected型中。然后在對話框的.cpp文件中利用m_db將數(shù)據(jù)庫打開,此變量是一個(gè)指針類型。要讀取數(shù)據(jù)庫中的數(shù)據(jù)必須再定義一個(gè)記錄集變量CDaoRecordsetrs(&m_db);根據(jù)對本次系統(tǒng)的具體分析。其實(shí)現(xiàn)的源程序如下:m_db.Open(_T(D:SolidWorkssamplescomuserdllpart.mdb);CDaoRecordsetrs(&m

28、_db);CStringstrSql=_T(SELECT*FROMsys_type);rs.Open(dbOpenDynaset,strSql);COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(系統(tǒng)型號”),var);str=CCrack:strVARIANT(var);if(str=_T()|str=_T(NULL)continue;m_SYSTYPE.AddString(str);rs.MoveNext();returnTRUE;此段代碼實(shí)現(xiàn)了將表sys_type中的系統(tǒng)型號字段的內(nèi)容讀入系統(tǒng)型號的組合框控件中,

29、作為對話框程序的初始化。數(shù)據(jù)庫的連接在三個(gè)組合框控件都使用到。每一個(gè)的原理都基本相似,下面介紹一下第一個(gè)組合框的具體實(shí)現(xiàn)。說明:第一個(gè)組合框的關(guān)聯(lián)變量是m_SYSTYPE。voidCNewDlg:OnSelchangeSystype()UpdateData();intnSel=m_SYSTYPE.GetCurSel();/得到第一個(gè)組合框的焦點(diǎn)CStringstr;if(nSel=LB_ERR)return;m_SYSTYPE.GetLBText(nSel,str);/得到第一個(gè)組合框的內(nèi)容/AfxMessageBox(str);if(str.CompareNoCase(_T(型號l)=0)=

30、0isstrisequalwith型號1m_FSTPARTS.ResetContent();CDaoRecordsetrs(&m_db);/定義記錄集/得到parts_1.ID=T的記錄集CStringstrSql=_T(SELECT*FROMparts_1WHEREparts_1.ID=1);rs.Open(dbOpenDynaset,strSql);得到數(shù)據(jù)庫的記錄指針COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(裝配體”),var);str=CCrack:strVARIANT(var);if(str=_T()

31、llstr=_T(NULL)continue;m_FSTPARTS.AddString(str);rs.MoveNext();/將得到的記錄集添加到第二個(gè)組合框控件中UpdateData(FALSE);(略)本段代碼是運(yùn)用了DAO的數(shù)據(jù)庫編程。利用控件實(shí)現(xiàn)對數(shù)據(jù)庫的相應(yīng)操作。實(shí)現(xiàn)各級組合框的關(guān)聯(lián)組合框之間的關(guān)聯(lián)是利用了選擇改變消息。即CBN_SELCHANGE消息。各組合框都建立一個(gè)CBN_SELCHANGE的消息。例如:ON_CBN_SELCHANGE(IDC_FSTPARTS,OnSelchangeFstparts)ON_CBN_SELCHANGE(IDC_PART,OnSelchange

32、Part)IDC_FSTPARTS是第二個(gè)組合框的名稱,IDC_PART是第三個(gè)組合框的名稱。這兩個(gè)組合框各有一個(gè)消息OnSelchangeFstparts,OnSelchangePart。通過在第二個(gè)框中添加代碼,可以實(shí)現(xiàn)第二個(gè)組合框狀態(tài)的改變影響第三個(gè)組合框的改變。例如在OnSelchangeFstparts消息的函數(shù)中的部分代碼如下:voidCNewDlg:OnSelchangeFstparts()UpdateData();if(str.CompareNoCase(_T(氣壓控制系統(tǒng)一)=0)m_PART.ResetContent();CDaoRecordsetrs(&m_db);CSt

33、ringstrSql=_T(SELECT*FROMpartWHEREpart.NO_1=1.1);rs.Open(dbOpenDynaset,strSql);COleVariantvar;while(!rs.IsEOF()CStringstr;rs.GetFieldValue(_T(零件名稱”),var);str=CCrack:strVARIANT(var);if(str=_T()llstr=_T(NULL)rs.MoveNext();continue;m_PART.AddString(str);rs.MoveNext();UpdateData(FALSE);代碼中的倒數(shù)第三行實(shí)現(xiàn)了對第三個(gè)組

34、合框控件的添加文本。實(shí)現(xiàn)零部件及裝配體的預(yù)覽零件的預(yù)覽部分最好是添加消息WM_PAINT,件預(yù)覽部分的代碼添加在OnPaint()函數(shù)中,這樣避免了預(yù)覽的暫時(shí)性。假如放在其他函數(shù)中實(shí)現(xiàn)。那么實(shí)現(xiàn)預(yù)覽的效果將不會很好。例如打開了一個(gè)零件的預(yù)覽,切換了頁面之后就不能有預(yù)覽效果。將實(shí)現(xiàn)代碼放在OnPaint()函數(shù)中能有效地避免類似情況的發(fā)生。預(yù)覽效果圖如下:胡開始iih越回s亠incj論文型目錄-Microsof.|Suserdll-Microso.|JSolidWorks2001P1.艮翌國|危/fife13:20SWSolidWorks2001Fins-Parti文件(I編輯視團(tuán)插入Q工具窗口

35、地)閘門及拉車系紜幫助-IfflX|、遍pasNsuX系統(tǒng)型號W1子裝配體1拉車汽缸裝置一3零件13預(yù)覽效果經(jīng)切換頁面后效果一樣實(shí)現(xiàn)代碼(部分):VARIANT_BOOLbOK;HRESULTres;long*pWnd=(long*)(m_PREVIEW.m_hWnd);res=UserApp-getSWApp()-PreviewDoc(pWnd,(unsignedshort)strPreviewFile.GetBuffer(strPreviewFile.GetLength(),&bOK);打開所選的零部件或裝配體打開所選零部件的方法是產(chǎn)生點(diǎn)擊ok時(shí)的響應(yīng)消息。并根據(jù)所選的是零件還是裝配體進(jìn)行

36、判斷,而后依相應(yīng)的格式打開。程序的實(shí)現(xiàn)如下:if(dlg.DoModal()=IDOK)AfxSetResourceHandle(SolidWorksResource);/SwitchtoSolidworkshandleCStringm_strFile=dlg.strPreviewFile;longtype;Cstringstrtemp;strtemp=m_strFile.Right(3);strtemp.MakeLower();if(strtemp=”prt”)type=swDocPART;elseif(strtemp=”asm”)type=swDocASSEMBLY;elseif(strt

37、emp=”drw”)type=swDocDRAWING;elsetype=swDocNONE;_bstr_tbsFile(dlg.strPreviewFile);/includetouse_bstr_tHRESULTres;LPMODELDOCmod=NULL;longP=0;res=UserApp-getSWApp()-IopenDoc2(bsFile,type,FALSE,FALSE,TRUE,&P,(LPMODELDOC*)&mod);添加該段代碼需添加頭文件#includevcomdef.h,打開的格式是最后一條語句,其具體格式可以參考SolidWorksAPI幫助的opendoc2。

38、5.9編譯鏈接為dll文件考慮到界面因素,現(xiàn)將對話框的背景色加以改變。利用ON_WM_CTLCOLOR()消息傳遞。首先,給對話基類增加一人成員變量Cbursh:Cbrushbrush;其次,在類的構(gòu)造函數(shù)中將刷子初始化為所需要的背景顏色。Brush.CreateSolidBrush(RGB(128,128,255),最后,使用ClassWizard處理WM_CTLCOLOR消息并返回一個(gè)用來繪畫對話背景的刷子句柄。如下:return(HBRUSH)brush.GetSafeHandle();returnCdialog:OnCtlColor(pDC,pWnd,nCtlColor);這樣運(yùn)行時(shí)看

39、到就是如預(yù)覽效果圖中的顏色。最后用VC+6.0進(jìn)行編譯鏈接得到一個(gè)動態(tài)鏈接文件userdll.dll,以及userdll.lib。制作安裝程序使用InstallMaster8.1作為開發(fā)的工具。軟件的使用界面如下本軟件使用簡便,在此不作詳細(xì)說明。6.1制作安裝程序安裝程序?qū)崿F(xiàn)了將本軟件所用到的所有文件都壓縮在一個(gè)安裝程序里。在運(yùn)行安裝程序時(shí),請按默認(rèn)的路徑安裝。系統(tǒng)演示首先用SolidWorks的Addin打開生成的uerdll.dll文件選擇SolidWorks的文件菜單,點(diǎn)擊打開,在文件類型中選擇AddIns如下所示:7.1導(dǎo)入程序選中userdll.dll,打開后SolidWorks中顯

40、示如下圖:、右視加掛的菜單丨注竟7.2菜單效果圖中可以看出加掛的菜單和系統(tǒng)的菜單沒有區(qū)別,體現(xiàn)了SolidWorks強(qiáng)大的接口。如果要實(shí)現(xiàn)運(yùn)行一次后此菜單一直都掛接。則在導(dǎo)入dll文件之后,點(diǎn)擊工具,插件,然后選擇閘門拉車系統(tǒng)就可以了。選擇新添加的菜單,點(diǎn)擊零件管理,出現(xiàn)程序的對話框,如下圖:預(yù)覽效果圖中為選擇了零件時(shí),顯示的預(yù)覽效果。點(diǎn)擊確定后打開的零件:SltSolidWorks2001Plus-墊圈電文件編輯視圖迥插入工具窗口閘門及拉車系統(tǒng)幫助旨G:-|S閔:0團(tuán)夠|2色駕風(fēng)Q氨總舟甸顯冏理墊園T注解+園光源、前視、上視、右視L原點(diǎn)+泊基體-拉.f申III-正在編輯:寒祥7.4打開零件結(jié)

41、論本次設(shè)計(jì)的是閘門拉車系統(tǒng)的各零部件及裝配體在SolidWorks下的統(tǒng)一界面管理。管理的各零件建模由其他兩位同學(xué)完成,考慮到零部件的數(shù)目較多,采用了數(shù)據(jù)庫進(jìn)行管理。要利用數(shù)據(jù)庫儲存相關(guān)的信息,就必須在建模的過程中各零件的命名規(guī)范,裝配體必須有全部所需的零件。否則在實(shí)際應(yīng)用時(shí)可能因找不到零件而需進(jìn)行手動查找。由于零件的建模和設(shè)計(jì)圖紙有一定的區(qū)別,所以在本次設(shè)計(jì)中數(shù)據(jù)庫的建立不能完全按照圖紙上的命名,必須依照實(shí)際的情況建立數(shù)據(jù)庫,以實(shí)現(xiàn)完全的自動處理,而無需手動查找。在這過程中使我積累了更多的合作經(jīng)驗(yàn),深切體會到了合作精神的重要性。畢業(yè)設(shè)計(jì)的最終實(shí)現(xiàn)使我學(xué)會了更多的知識,和開發(fā)的經(jīng)驗(yàn)。首先VC是

42、一種較難熟練運(yùn)用的編程工具,要懂得這只是工具而不是語言。其用到的是C+語言,所以對類,繼承等概念必須明確。要利用好VC工具還必須學(xué)習(xí)MFC的相關(guān)知識。充分利用MFC中的一些函數(shù)可以減少編程的工作量,以及提高代碼的質(zhì)量。本次設(shè)計(jì)是二次開發(fā),和一次開發(fā)又有一定的區(qū)別。一次開發(fā)只要實(shí)現(xiàn)功能就可以,而二次開發(fā)需要更多的了解原有軟件的一些具體實(shí)現(xiàn)原理,在此基礎(chǔ)上利用接口,將自己的功能添加到原有軟件中。像類似的二次開發(fā)多人合作的。在編寫應(yīng)用程序以及數(shù)據(jù)庫之前,必須先劃分好開發(fā)的步驟,將各步驟所需用到的都用明細(xì)表列出。一些準(zhǔn)則需在編程之前事先定義好,然后在開始具體的設(shè)計(jì)開發(fā)。這樣會減少開發(fā)的時(shí)間與效率,避免

43、出現(xiàn)多次修改的情況。還有編寫程序時(shí)不要太注重技巧。實(shí)用的,簡單易懂的程序更好。長一點(diǎn)的不一定不好,太短了則在程序的修改時(shí)不易實(shí)現(xiàn)。本次畢業(yè)設(shè)計(jì)的結(jié)果可以直接在實(shí)際中應(yīng)用,方便了用戶的管理,提高了工作的效率,具有一定的價(jià)值。謝詞衷心感謝導(dǎo)師王彪教授和劉中柱老師對本人的精心指導(dǎo)。他們的言傳身教將使我終生受益。王老師的指導(dǎo)使我少走了許多彎路,一些指導(dǎo)性的建議給我指明了設(shè)計(jì)的方向。劉老師在我得學(xué)習(xí)和設(shè)計(jì)過程中都給了我極大的幫助。感謝機(jī)械工程系老師和同窗們的關(guān)心和支持!感謝所有幫助過我的人們!參考文獻(xiàn)1美Perspection公司著北京博彥科技發(fā)展有限公司譯MicrosoftAccess2000即學(xué)即會

44、北京大學(xué)出版社,1999.82源江科技編著上??茖W(xué)普及出版社VC編程技巧280例,2002.43宛延闿編著清華大學(xué)出版社C+語言和面向?qū)ο蟪绦蛟O(shè)計(jì)第二版,2000.14袁連海董文張志亮編著機(jī)械工業(yè)出版社SQLServer2000應(yīng)用開發(fā)實(shí)例教程2002.1章立三董三立編北京航天航空大學(xué)出版社Windows程序設(shè)計(jì)用MicrosoftC/C+和VisualC+,1995徐曉剛高兆法王秀娟編著陳志全審清華大學(xué)出版社VisualC+6.0入門與提高,2001.2譚浩強(qiáng)編著清華大學(xué)出版社C程序設(shè)計(jì)1998.1附錄I英文翻譯譯文SldWorks:OpenDoc2描述這個(gè)功能已經(jīng)由SldWorks:Ope

45、nDoc3代替這個(gè)函數(shù)是打開一個(gè)已知文件名和類型的文件,并且返回文件的對象指針。該函數(shù)允許控制是否禁止顯示對話框面板中,或以只讀形式打開,并且以唯一的形式打開文件。語法(OLEAutomation)retval=SldWorks.OpenDoc2(name,type,readOnly,viewOnly,silent,&errors)Input:(BSTR)name文件的名稱(如果不在當(dāng)前路徑下,用全部路徑)Input:(long)type文件類型,參看swDocumentTypes_e.Input:(BOOL)readOnly文件以只讀形式打開則為true,不以只讀打開則為falseInput

46、:(BOOL)viewOnly文件以只顯示形式打開則為true,不只以此形式打開則為falseInput:(BOOL)silent對話框以及警告消息不顯示為true,對話框和警告消息要顯示給用戶則為falseOutput:(long)errors錯(cuò)誤代碼見swFileLoadError_e.Return:(LPDISPATCH)retval指向目的對象指針,文件(或操作失敗用NULL)語法(COM)status=SldWorks-IOpenDoc2(name,type,readOnly,viewOnly,silent,&errors,&retval)Input:(BSTR)name文件的名稱(

47、如果不在當(dāng)前路徑下,用全部路徑)Input:(long)type文件類型,參看swDocumentTypes_e.Input:(VARIANT_BOOL)readOnly文件以只讀形式打開則為true,不以只讀打開則為falseInput:(VARIANT_BOOL)viewOnly文件以只顯示形式打開則為true,不只以此形式打開則為falseInput:(VARIANT_BOOL)silent對話框以及警告消息不顯示為true,對話框和警告消息要顯示給用戶則為falseOutput:(long)errors錯(cuò)誤代碼見swFileLoadError_e.Output:(LPMODELDOC)

48、retval指向目的對象指針,文件(或操作失敗用NULL)Return:(HRESULT)status注意這個(gè)函數(shù)將激活“文件打開修改”事件。SldWorks:AddMenuItem描述這個(gè)函數(shù)是在菜單中添加一菜單項(xiàng)。語法(OLEAutomation)retval=SldWorks.AddMenuItem(docType,menu,position,callbackModuleAndFcn)輸入:(long)docType添加菜單項(xiàng)的文件類型輸入:(BSTR)menuItem格式如下:菜單項(xiàng)子菜單主菜單。如果此項(xiàng)不存在則將會產(chǎn)生新的菜單及子菜單輸入:(long)Position指定添加新菜單項(xiàng)

49、的位置。第一個(gè)位置是再0位。如果在-1,新的菜單項(xiàng)將會添加在列中的底端。這一變量指定了與菜單項(xiàng)相聯(lián)系的主菜單。輸入:(BSTR)當(dāng)用戶點(diǎn)擊菜單項(xiàng)時(shí)此函數(shù)將被callbackFcnAndModule調(diào)用(見下文)。返回:(long)retval如果返回值是1,添加成功。0,添加失敗。語法(COM)status=SldWorks-AddMenuItem(docType,menuItem,position,callbackModuleAndFcn,&retval)輸入:(long)docType輸入:(BSTR)menuItem輸入:(long)position輸入:(BSTR)callbackFc

50、nAndModule輸出:(long)retval返回:(HRESULT)status添加菜單項(xiàng)的文件類型格式如下:菜單項(xiàng)子菜單主菜單。如果此項(xiàng)不存在則將會產(chǎn)生新的菜單及子菜單指定添加新菜單項(xiàng)的位置。第一個(gè)位置是再0位。如果在-1,新的菜單項(xiàng)將會添加在列中的底端。這一變量指定了與菜單項(xiàng)相聯(lián)系的主菜單。當(dāng)用戶點(diǎn)擊菜單項(xiàng)時(shí)此函數(shù)將被調(diào)用(見下文)。如果是1,添加成功。0,添加失敗。如果成功,則返回S_OK。注意此功能只適用于你的應(yīng)用是執(zhí)行dll操作。而不是exe。此外,從菜單項(xiàng)中調(diào)用的任何函數(shù)必須聲明為EXPORT或者包括在聲明文件中。你可以添加一個(gè)新的菜單,在任何SolidWorks的四個(gè)框架(

51、主框架,零件框架,對話框以及工程圖框架)中。要實(shí)現(xiàn),只要直接調(diào)用此函數(shù),并用合適的文件類型參數(shù)于docType。例:假如你想你的菜單在零件文件激活時(shí)有效,那么調(diào)用此函數(shù),并且以swDocPART作為第一個(gè)參數(shù)值。一旦你在零件框架中添加了菜單,你就不需要在單前SolidWorks環(huán)境下重新添加。假如你的零件文件被你激活,那么SolidWorks將會自動顯示你的菜單操作。菜單項(xiàng)參數(shù)應(yīng)該完全包括主菜單,子菜單項(xiàng)。假如一個(gè)菜單或子菜單不存在,那么將會自動放在父菜單項(xiàng)的最后一個(gè)位置。這并不需要顯式的調(diào)用SldWorks:AddMenu命令來添加目前的菜單或子菜單,除非你必須添加此菜單或子菜單在一個(gè)專門的

52、位置。我們推薦利用SldWorks:AddMenu函數(shù)添加你的主菜單,因?yàn)樗梢燥@示在已存在SolidWorks菜單欄中的“工具”和“窗口”菜單項(xiàng)之間。子菜單將會創(chuàng)建并添加在其父菜單的結(jié)尾。因此,假如你的菜單結(jié)構(gòu)是利用連續(xù)調(diào)用產(chǎn)生的,那么,所有的菜單項(xiàng)的位置會安創(chuàng)建的順序排列。然而,假如一個(gè)菜單或子菜單要放入一個(gè)已存在的菜單的固定位置,那么,你就必須利用SldWorks:AddMenu函數(shù)創(chuàng)建子菜單。查閱例子以獲得更多的詳細(xì)資料。callbackFcnAndModule參數(shù)指定了當(dāng)用戶選擇了菜單項(xiàng)時(shí)所調(diào)用的函數(shù)。其語法如下:dllnamefunctionupdatefunction,hints

53、tring說明:dllname在你工程文件中的.def文件中的庫清單中的名稱。記錄當(dāng)前的dll文件名以及在.def文件中的定義必須是同名的。Function當(dāng)用戶所選菜單項(xiàng)時(shí)所調(diào)用的函數(shù)名稱。這個(gè)函數(shù)也同樣必須在你的.def文件中聲明為EXPORT。updatefunction這是可選的,并且用來控制菜單項(xiàng)的位置。假如指定,此函數(shù)將會在菜單顯示之前被調(diào)用。菜單項(xiàng)的顯示是由你的updateFunction返回值控制。以下的返回值將會以以下的作用于菜單項(xiàng)。返回0菜單項(xiàng)未選中且不可用返回1菜單項(xiàng)未選中且可用。這是當(dāng)沒有指定更新函數(shù)時(shí)的默認(rèn)形式返回2菜單項(xiàng)選中且不可用返回3菜單項(xiàng)選中且可用hintst

54、ring這是可選的,并且當(dāng)用戶把鼠標(biāo)移過菜單項(xiàng)時(shí)在SolidWorks的狀態(tài)欄中顯示。假如hintstring已經(jīng)指定,那么必須在逗號之前。例:UserdllAddBoxcheckUserSelections,AddaboxSldWorks:AddMenu描述用于dll應(yīng)用軟件,此函數(shù)將實(shí)現(xiàn)在SolidWorks界面中添加菜單或子菜單語法(OLEAutomation)retval=SldWorks.AddMenu(docType,menu,position)輸入:(long)docType添加菜單項(xiàng)的文檔類型輸入:(BSTR)menu添加的菜單項(xiàng)的名稱,包括任意的父菜單名稱(例如subMenu

55、StringmenuString).輸入:(long)position需要添加的新菜單或子菜單的位置,0是第一個(gè)位置,假如是-1,那么新的菜單或子菜單將添加在父菜單的最后。返回:(long)retval添加菜單項(xiàng)成功則返回1,否則返回0。語法(COM)status=SldWorks-AddMenu()Input:(long)DocType添加菜單項(xiàng)的文檔類型Input:(BSTR)Menu添加的菜單項(xiàng)的名稱,包括任意的父菜單名稱(例如subMenuStringmenuString).Input:(long)Position需要添加的新菜單或子菜單的位置,0是第一個(gè)位置,假如是-1,那么新的菜單

56、或子菜單將添加在父菜單的最后。Output:(long)retval添加菜單項(xiàng)成功則輸出1,否則0。Return:(HRESULT)status成功則返回S_OK,否則返回S_FALSE注意相一致的,用戶的應(yīng)用軟件需要在現(xiàn)存的SolidWorks菜單欄的“工具”和“窗口”之間添加他們的下拉菜單項(xiàng)。當(dāng)調(diào)用SldWorks:AddMenuItem函數(shù)時(shí),子菜單將會自動的添加在父菜單的最后一項(xiàng)。因此,假如你的菜單結(jié)構(gòu)是由連續(xù)的調(diào)用SldWorks:AddMenuItem函數(shù)產(chǎn)生的,那么,所有的菜單項(xiàng)的位置以產(chǎn)生菜單項(xiàng)的順序排列。SldWorks:AddMenu函數(shù)只是在一個(gè)菜單或子菜單需要放入一個(gè)明

57、確的已知菜單時(shí)使用。例如:在聲明前,你的主菜單必須被放在當(dāng)前的SolidWorks菜單欄的“工具”和“窗口”之間的菜單項(xiàng)上。因此,你應(yīng)該用SldWorks:AddMenu函數(shù)來產(chǎn)生你的主菜單項(xiàng)。查閱以上的例子以獲得更多詳細(xì)資料。SldWorks:PreviewDoc描述這一個(gè)方法是使文件在指定窗口中實(shí)現(xiàn)預(yù)覽.語法(OLEAutomation)retval=SldWorks.PreviewDoc(hWnd,fullname)輸入:(long*)hWnd顯示預(yù)覽窗口的句柄。這一指針在進(jìn)程中無效。因此,這一方法只適用于你的應(yīng)用軟件使用dll執(zhí)行輸入:(BSTR)fullname要預(yù)覽的文件的全路徑返

58、回:(BOOL)retval成功則返回TRUE語法(COM)status=SldWorks-PreviewDoc(hWnd,fullname,&retval)Input:(long*)hWnd顯示預(yù)覽窗口的句柄。這一指針在進(jìn)程中無效。因此,這一方法只適用于你的應(yīng)用軟件使用dll執(zhí)行。Input:(BSTR)fullname要預(yù)覽的文件的全路徑Output:(VARIANT_BOOL)retval成功則輸出TRUEReturn:(HRESULT)status成功則返回S_OK注意位圖是存儲為固定大小,在SolidWorks中的交互式預(yù)覽選項(xiàng)顯示。如果你的窗口是不同大小的,那么圖像將會以合適的尺寸

59、顯示。要注意,假如允許縮放比例,漸變的圖像將不會和原始的一樣清晰。在進(jìn)程中窗口的句柄是無效的。應(yīng)此,這個(gè)方法只適用執(zhí)行于DLL格式文件。這個(gè)方法在WM_PAINT窗口信息處理中能順利運(yùn)行。如果運(yùn)用WM_ONINITDIALOG,對話框?qū)⒅伙@示預(yù)覽圖像一小段時(shí)間。因?yàn)閷υ捒蛟谡{(diào)用PreviewDoc之前北完全初始化。C+程序員也可以利用SolidWorks以外的位圖資源。位圖由CArchive:Write()寫入并導(dǎo)在SolidWorks的零件,裝配圖,工程圖文件預(yù)覽節(jié)點(diǎn)中。對預(yù)覽函數(shù)的初始化程序如下:DWORD(datasize)說明連續(xù)的內(nèi)存塊的大小。被讀取的數(shù)據(jù)可以由LPBITMAPINF

60、O運(yùn)算出所有的需要顯示位圖的信息。在顯示你的位圖時(shí),你可以使用StretchDIBits()函數(shù),一個(gè)簡單的讀取SolidWorks預(yù)覽圖像的例子可以在我們的網(wǎng)站 HYPERLINK /html/Products/api/.%e4%b8%8a%e6%89%be%e5%88%b0%e3%80%82 /html/Products/api/.上找到。Changingthebackgroundcolorofadialog改變對話框的北京顏色這篇文章是由LuisGarcia投稿的。如果你想改變對話框的背景色,這是很簡單的。先在你的對話框頭文件中,聲明一個(gè)CBrush變量:classCTestDlg:pu

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論