版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 彩色電視機(jī)故障信息管理系統(tǒng)(客戶端)</p><p> The MIS fo TV applying in failure information</p><p><b> 摘 要</b></p><p> 本文介紹了如何使用Visual C++6.0編程制作以彩色電視機(jī)故障信息管理系統(tǒng)(客戶端部分)為例,實(shí)現(xiàn)信
2、息管理的自動(dòng)化。由此實(shí)現(xiàn)了信息的增加、刪除、修改、查看等功能,并且進(jìn)而實(shí)現(xiàn)信息的安全管理,使信息的管理更加人性化,規(guī)范化。集計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通信技術(shù)為一體的信息管理系統(tǒng)。采用先進(jìn)有效的管理體制,可以改善企業(yè)的經(jīng)營(yíng)環(huán)境、降低經(jīng)營(yíng)生產(chǎn)成本,提高企業(yè)的競(jìng)爭(zhēng)力;使得企業(yè)的運(yùn)行數(shù)據(jù)更加準(zhǔn)確、及時(shí)、全面、詳實(shí),同時(shí)對(duì)各種信息進(jìn)一步加工,使企業(yè)領(lǐng)導(dǎo)層的決策依據(jù)充分,更具科學(xué)性,從而提高故障排除效率,提高信息利用率,有助于進(jìn)一步提高了生產(chǎn)效率,使企業(yè)的
3、管理水平跨上新臺(tái)階,為企業(yè)持續(xù)、健康、穩(wěn)定的發(fā)展打下基礎(chǔ)。</p><p><b> Abstract</b></p><p> The main work of this paper is introduce how to use Visual C++6.0 programming a Color TV Malfunction-Information In-Co
4、mmon System, achieve the auto-manage of the Malfunction-Information. According these, this system achieves the information’s function of add、delete、edit and view., it also get the information managed safety, so the manag
5、ement of the information will be more humanity & normalize.Thereby, it can improve the efficiency of the malfunction’s elimination, enhance the exploitation of th</p><p> 關(guān)鍵詞: 數(shù)據(jù)庫(kù) 信息管理 模塊化管理 MI
6、S信息管理系統(tǒng)</p><p><b> 目錄</b></p><p><b> 摘 要1</b></p><p><b> 目錄2</b></p><p><b> 1.緒論4</b></p><p><b
7、> 1.1 前言4</b></p><p> 1.2 課題背景 目標(biāo) 研究方法4</p><p> 1.3 主要完成工作及要求5</p><p> 2.MIS系統(tǒng)設(shè)計(jì)及功能分析介紹5</p><p> 2.1 MIS系統(tǒng)介紹5</p><p> 2.2 系統(tǒng)設(shè)計(jì)及功能分析7
8、</p><p> 2.3 功能模塊設(shè)計(jì)7</p><p> 3. 數(shù)據(jù)庫(kù)設(shè)計(jì)及ADO訪問(wèn)數(shù)據(jù)庫(kù)7</p><p> 3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程7</p><p> 3.2 創(chuàng)建應(yīng)用程序9</p><p> 3.3 數(shù)據(jù)庫(kù)操作準(zhǔn)備11</p><p> 3.4 ADO訪問(wèn)數(shù)據(jù)庫(kù)
9、13</p><p> 4.功能模塊的創(chuàng)建19</p><p> 4.1 系統(tǒng)主體窗體的創(chuàng)建19</p><p> 4.1.1主菜單的創(chuàng)建20</p><p> 4.1.2右鍵菜單的創(chuàng)建21</p><p> 4.1.3工具欄的創(chuàng)建22</p><p> 4.1.4數(shù)據(jù)顯
10、示與表格控件的創(chuàng)建22</p><p> 4.2 系統(tǒng)用戶權(quán)限管理模塊的創(chuàng)建24</p><p> 4.2.1添加用戶對(duì)話框的創(chuàng)建24</p><p> 4.2.2 更改密碼對(duì)話框的創(chuàng)建26</p><p> 4.2.3 刪除用戶對(duì)話框的創(chuàng)建27</p><p> 4.2.4 用戶登錄對(duì)話框的創(chuàng)建
11、27</p><p> 4.3 信息管理模塊的創(chuàng)建27</p><p> 4.3.1 添加記錄對(duì)話框的創(chuàng)建28</p><p> 4.3.2 查詢記錄對(duì)話框的創(chuàng)建30</p><p> 4.3.3 修改記錄對(duì)話框的創(chuàng)建31</p><p> 4.3.4 查看記錄對(duì)話框的創(chuàng)建32</p>
12、<p> 4.4 打印預(yù)覽模塊的創(chuàng)建32</p><p> 5. Windows Sockets34</p><p> 5.1 規(guī)范簡(jiǎn)介34</p><p> 5.2 Bekeley套接口36</p><p> 5.3 Microsoft Windows和針對(duì)Windows的擴(kuò)展36</p>&l
13、t;p> 5.4 接口網(wǎng)絡(luò)編程原理36</p><p> 5.5 Windows Sockets編程原理39</p><p> 6. 遠(yuǎn)程數(shù)據(jù)的管理和系統(tǒng)的實(shí)現(xiàn)41</p><p> 6.1遠(yuǎn)程數(shù)據(jù)的管理41</p><p> 6.2 程序的編譯和系統(tǒng)的實(shí)現(xiàn)42</p><p> 7. 問(wèn)題
14、擴(kuò)展43</p><p> 8. 小 結(jié)45</p><p><b> 致 謝46</b></p><p><b> 參考文獻(xiàn)47</b></p><p><b> 1.緒論</b></p><p><b> 1.1
15、前言</b></p><p> 信息化建設(shè)對(duì)企業(yè)來(lái)說(shuō)無(wú)疑已經(jīng)成為企業(yè)在現(xiàn)代競(jìng)爭(zhēng)社會(huì)中立足的重要因素。而從中國(guó)大陸企業(yè)現(xiàn)狀來(lái)看,大部分企業(yè)的信息化建設(shè)都是依靠專業(yè)化軟件公司。毋庸置疑,對(duì)于大規(guī)模的管理系統(tǒng),例如CRM(Client Relation Manager),ERP(Enterprise Resource Plan)等,使用專業(yè)軟件公司開發(fā)的產(chǎn)品,功能相對(duì)齊全,安全級(jí)別也相對(duì)較高。但對(duì)于企業(yè)內(nèi)
16、部小范圍內(nèi)所需的一些小系統(tǒng)而言,如也依靠此種方式,勢(shì)必會(huì)產(chǎn)生無(wú)謂的成本流失。鑒于這種形式,借助這次畢業(yè)設(shè)計(jì)的機(jī)會(huì),在龔迪琛教師的指導(dǎo)下,經(jīng)過(guò)一段時(shí)間的努力,開發(fā)出了這套彩色電視機(jī)故障信息管理系統(tǒng)(客戶端部分)。本系統(tǒng)主要用于對(duì)已有故障信息進(jìn)行更高效的管理,提高信息的利用率,改變了以往煩瑣的查找,大大提高了故障的排除速度及正確率,對(duì)進(jìn)一步提高生產(chǎn)及管理效率具有十分重要的意義。</p><p> 1.2 課題背景
17、目標(biāo) 研究方法 </p><p><b> (1)背景</b></p><p> 隨著中國(guó)加入WTO,競(jìng)爭(zhēng)也越來(lái)越慘烈,中國(guó)的制造業(yè)同樣面臨者巨大的挑戰(zhàn)??茖W(xué)技術(shù)的飛速發(fā)展,產(chǎn)品功能要求的日益增多,復(fù)雜性增加,壽命期縮短,更新?lián)Q代速度加快。然而,產(chǎn)品的管理,尤其是機(jī)械產(chǎn)品方案的遠(yuǎn)程管理手段,則顯得力不從心,跟不上時(shí)代發(fā)展的需要。目前,機(jī)械產(chǎn)品遠(yuǎn)程管理已得
18、到了比較廣泛和深入的研究,并初見成效,企業(yè)中龐大的激烈變化的產(chǎn)品數(shù)據(jù)僅僅依靠手工方式來(lái)管理是很難做到準(zhǔn)確性、完整性、及時(shí)性和可追溯性的要求的。因此,將企業(yè)產(chǎn)品塊化的管理創(chuàng)新成果與信息系統(tǒng)的建設(shè)結(jié)合起來(lái)是很好的解決方案。模塊化的產(chǎn)品遠(yuǎn)程管理可以在保持產(chǎn)品較高通用性的同時(shí)提供產(chǎn)品的多樣化配置和服務(wù),因此,機(jī)械產(chǎn)品遠(yuǎn)程管理方案應(yīng)該得到進(jìn)一步的研究和開發(fā)。在這里以彩色電視機(jī)故障信息管理系統(tǒng)(客戶端部分)作為研究對(duì)象。</p>&l
19、t;p> (2)目標(biāo)設(shè)計(jì)(主要研究?jī)?nèi)容或創(chuàng)新點(diǎn))</p><p> 本著提高效率降低成本為出發(fā)點(diǎn),以彩色電視機(jī)故障信息管理為具體范例,探討對(duì)企業(yè)產(chǎn)品信息管理MIS系統(tǒng)的開發(fā),并增加遠(yuǎn)程管理功能,使生產(chǎn)工程部的故障處理工作系統(tǒng)化,規(guī)范化。</p><p> ?。?) 研究方法與技術(shù)路線及預(yù)期結(jié)果</p><p> 本課題為應(yīng)用型管理系統(tǒng)的開發(fā),嘗試增加遠(yuǎn)程
20、管理功能,采用小型DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))ACESS,通過(guò)TCP/IP協(xié)議利用winsockect結(jié)合,DAO或者ADO與關(guān)系數(shù)據(jù)的接口實(shí)現(xiàn)產(chǎn)品信息的管理,查詢,整理等工作。 本部分為客戶端部分。</p><p> 1.3 主要完成工作及要求</p><p> ?。?)盡量采用生產(chǎn)工程部現(xiàn)有的軟硬件環(huán)境及齊全的故障信息,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開發(fā)水平和應(yīng)用效果的目的。&l
21、t;/p><p> ?。?)系統(tǒng)應(yīng)符合生工部資料管理規(guī)范,符合普通員工操作的規(guī)范,達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。</p><p> (3)系統(tǒng)采用Visual C++6.0環(huán)境,用ADO(ActiveX Data Objects)數(shù)據(jù)訪問(wèn)方式,采用Microsoft Access 2003作為數(shù)據(jù)源,使整個(gè)系統(tǒng)易于使用及維護(hù)。</p><p> ?。?
22、)系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。</p><p> ?。?)系統(tǒng)應(yīng)具備數(shù)據(jù)維護(hù)功能,及時(shí)根據(jù)數(shù)據(jù)變化進(jìn)行添加、刪除、修改、查詢等操作,并加入擁護(hù)權(quán)限功能,以及遠(yuǎn)程管理功能,使系統(tǒng)更加安全適用。</p><p> 2.MIS系統(tǒng)設(shè)計(jì)及功能分析介紹</p><p> 2.1 MIS系統(tǒng)介紹<
23、;/p><p> 所謂MIS(管理信息系統(tǒng)--Management Information System)系統(tǒng) ,是一個(gè)由人、計(jì)算機(jī)及其他外圍設(shè)備等組成的能進(jìn)行信息的收集、傳遞、存貯、加工、維護(hù)和使用的系統(tǒng)。是一門新興的科學(xué),其主要任務(wù)是最大限度的利用現(xiàn)代計(jì)算機(jī)及網(wǎng)絡(luò)通訊技術(shù)加強(qiáng)企業(yè)的信息管理,通過(guò)對(duì)企業(yè)擁有的人力、物力、財(cái)力、設(shè)備、技術(shù)等資源的調(diào)查了解,建立正確的數(shù)據(jù),加工處理并編制成各種信息資料及時(shí)提供給管理人
24、員,以便進(jìn)行正確的決策,不斷提高企業(yè)的管理水平和經(jīng)濟(jì)效益。目前,企業(yè)的計(jì)算機(jī)網(wǎng)絡(luò)已成為企業(yè)進(jìn)行技術(shù)改造及提高企業(yè)管理水平的重要手段。隨著我國(guó)與世界信息高速公路的接軌,企業(yè)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)獲得信息必將為企業(yè)帶來(lái)巨大的經(jīng)濟(jì)效益和社會(huì)效益,企業(yè)的辦公及管理都將朝著高效、快速、無(wú)紙化的方向發(fā)展。MIS系統(tǒng)通常用于系統(tǒng)決策,例如,可以利用MIS系統(tǒng)找出目前迫切需要解決的問(wèn)題,并將信息及時(shí)反饋給上層管理人員,使他們了解當(dāng)前工作發(fā)展的進(jìn)展或不足。換句話
25、說(shuō),MIS系統(tǒng)的最終目的是使管理人員及時(shí)了解公司現(xiàn)狀,把握將來(lái)的發(fā)展路徑。 </p><p> 一個(gè)完整的MIS應(yīng)包括:輔助決策系統(tǒng)(DSS)、工業(yè)控制系統(tǒng)(IPC)、辦公自動(dòng)化系統(tǒng)(OA)以及數(shù)據(jù)庫(kù)、模型庫(kù)、方法庫(kù)、知識(shí)庫(kù)和與上級(jí)機(jī)關(guān)及外界交換信息的接口。其中,特別是辦公自動(dòng)化系統(tǒng)(OA)、與上級(jí)機(jī)關(guān)及外界交換信息等都離不開Intranet的應(yīng)用??梢赃@樣說(shuō),現(xiàn)代企業(yè)MIS不能沒(méi)有Intranet,但I(xiàn)ntr
26、anet的建立又必須依賴于MIS的體系結(jié)構(gòu)和軟硬件環(huán)境。</p><p> 傳統(tǒng)的MIS系統(tǒng)的核心是CS(Client/Server——客戶端/服務(wù)器)架構(gòu),而基于Internet的MIS系統(tǒng)的核心是BS(Browser/Server——瀏覽器/服務(wù)器)架構(gòu)。BS架構(gòu)比起CS架構(gòu)有著很大的優(yōu)越性,傳統(tǒng)的MIS系統(tǒng)依賴于專門的操作環(huán)境,這意味著操作者的活動(dòng)空間受到極大限制;而BS架構(gòu)則不需要專門的操作環(huán)境,在任何
27、地方,只要能上網(wǎng),就能夠操作MIS系統(tǒng),這其中的優(yōu)劣差別是不言而喻的。</p><p> 基于Internet上的MIS系統(tǒng)是對(duì)傳統(tǒng)MIS系統(tǒng)概念上的擴(kuò)展,它不僅可以用于高層決策,而且可以用于進(jìn)行普通的商務(wù)管理。通過(guò)用戶的具名登錄(或匿名登錄),以及相應(yīng)的權(quán)限控制,可以實(shí)現(xiàn)在遠(yuǎn)端對(duì)系統(tǒng)的瀏覽、查詢、控制和審閱。隨著Internet的擴(kuò)展,現(xiàn)有的公司和學(xué)校不再局限于物理的有形的真實(shí)的地域,網(wǎng)絡(luò)本身成為事實(shí)上發(fā)展的
28、空間?;贗nternet上的MIS系統(tǒng),彌補(bǔ)了傳統(tǒng)MIS系統(tǒng)的不足,充分體現(xiàn)了現(xiàn)代網(wǎng)絡(luò)時(shí)代的特點(diǎn)。隨著Internet技術(shù)的高速發(fā)展,因特網(wǎng)必將成為人類新社會(huì)的技術(shù)基石?;贗nternet的MIS系統(tǒng)必將成為網(wǎng)絡(luò)時(shí)代的新一代管理信息系統(tǒng),前景極為樂(lè)觀。</p><p> 2.2 系統(tǒng)設(shè)計(jì)及功能分析</p><p> 通過(guò)一個(gè)彩電故障信息管理系統(tǒng),使生產(chǎn)工程部客戶端部分的故障處理工作
29、模塊化,系統(tǒng)化,規(guī)范化,自動(dòng)化,從而達(dá)到提高故障排除效率,提高信息利用率的目的。本系統(tǒng)功能分析是在系統(tǒng)開發(fā)總體任務(wù)的基礎(chǔ)上完成的,本系統(tǒng)需要完成的功能如下:</p><p> 故障信息的輸入、查詢、修改、刪除</p><p><b> 故障信息的打印</b></p><p> 系統(tǒng)用戶管理,權(quán)限管理</p><p>
30、; 2.3 功能模塊設(shè)計(jì)</p><p> 在系統(tǒng)功能分析的基礎(chǔ)上,考慮Visual C++程序編制的特點(diǎn),得到圖1所示的系統(tǒng)功能模塊圖。</p><p> 圖1 系統(tǒng)功能模塊圖 圖2 數(shù)據(jù)流程</p><p> 3. 數(shù)據(jù)庫(kù)設(shè)計(jì)及ADO訪問(wèn)數(shù)據(jù)庫(kù)</p><p> 3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程&
31、lt;/p><p> 數(shù)據(jù)庫(kù)技術(shù)是信息資源管理最有效的手段。數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),有效存儲(chǔ)數(shù)據(jù),滿足用戶信息要求和處理要求。數(shù)據(jù)庫(kù)設(shè)計(jì)中需求分析階段綜合各個(gè)用戶的應(yīng)用需求(現(xiàn)實(shí)世界的需求),在概念設(shè)計(jì)階段形成獨(dú)立于機(jī)器特點(diǎn)、獨(dú)立于各個(gè)DBMS產(chǎn)品的概念模式(信息世界模型),用E-R圖來(lái)描述。在邏輯設(shè)計(jì)階段將E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫(kù)產(chǎn)品支持的數(shù)據(jù)模型如關(guān)
32、系模型,形成數(shù)據(jù)庫(kù)邏輯模式。然后根據(jù)用戶處理的要求,安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖(VIEW)形成數(shù)據(jù)的外模式。在物理設(shè)計(jì)階段根據(jù)DBMS特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,設(shè)計(jì)索引,形成數(shù)據(jù)庫(kù)內(nèi)模式。數(shù)據(jù)結(jié)構(gòu)的好壞將直接影響到系統(tǒng)的效率以及實(shí)現(xiàn)的效果。好的數(shù)據(jù)庫(kù)結(jié)構(gòu)會(huì)減少數(shù)據(jù)庫(kù)的存儲(chǔ)量、冗余度,數(shù)據(jù)的完整性和一致性比較高,系統(tǒng)具有較快的響應(yīng)速度,簡(jiǎn)化基于數(shù)據(jù)庫(kù)的應(yīng)用程序的實(shí)現(xiàn)方法等,一般可將數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)分為四個(gè)階段,
33、即需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)和物理設(shè)計(jì)。</p><p> ?。?)數(shù)據(jù)庫(kù)需求分析</p><p> 需求分析的任務(wù)是具體了解應(yīng)用環(huán)境,了解與分析用戶對(duì)數(shù)據(jù)和數(shù)據(jù)處理的需求,對(duì)應(yīng)用系統(tǒng)的性能的要求,提出新系統(tǒng)的目標(biāo),為第二階段、第三階段的設(shè)計(jì)奠定基礎(chǔ)。在仔細(xì)研究資料管理過(guò)程的基礎(chǔ)上,歸納出系統(tǒng)的數(shù)據(jù)流程圖如上圖2所示,所有數(shù)據(jù)均由管理員輸入管理。</p><
34、p> 根據(jù)圖2的數(shù)據(jù)流程圖,可得到所須設(shè)計(jì)的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下:</p><p> 故障信息,包括的數(shù)據(jù)項(xiàng)有顯象管、機(jī)芯、機(jī)殼、器件、技術(shù)員、時(shí)間、其他、信息名、具體內(nèi)容等。</p><p> 權(quán)限驗(yàn)證,包括的數(shù)據(jù)項(xiàng)有用戶名、密碼等。</p><p> 由上分析,為此需要有2個(gè)數(shù)據(jù)表分別用來(lái)存放故障信息的用戶信息。這兩個(gè)數(shù)據(jù)表均用Access 200
35、0實(shí)現(xiàn)。Access中的設(shè)計(jì)視圖如圖3、圖4所示,其中數(shù)據(jù)類型根據(jù)具體的數(shù)據(jù)字段來(lái)設(shè)置。</p><p> 圖3 info1視圖</p><p> 圖4 login視圖</p><p> ?。?)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)</p><p> 概念模型用于信息世界的建模。概念模型不依賴于某一個(gè)DBMS支持的數(shù)據(jù)模型。概念模型可以轉(zhuǎn)換為計(jì)算機(jī)上某一
36、DBMS支持的特定數(shù)據(jù)模型。概念結(jié)構(gòu)設(shè)計(jì)是在需求分析的基礎(chǔ)上對(duì)所有數(shù)據(jù)要求按一定方法進(jìn)行抽象與綜合處理,設(shè)計(jì)出不依賴于某種具體DBMS的滿足用戶應(yīng)用需求的信息結(jié)構(gòu)。這種信息結(jié)構(gòu)我們稱為概念模型。通過(guò)對(duì)用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型,可以用E-R圖表示,概念模型特點(diǎn): (1) 具有較強(qiáng)的語(yǔ)義表達(dá)能力,能夠方便、直接地表達(dá)應(yīng)用中的各種語(yǔ)義知識(shí)。 (2) 應(yīng)簡(jiǎn)單、清晰、易
37、于用戶理解,是用戶與數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的語(yǔ)言。 最常用的概念結(jié)構(gòu)設(shè)計(jì)方法有實(shí)體分析法、面向?qū)ο笤O(shè)計(jì)方法、屬性綜合法和規(guī)范化關(guān)系方法。我們此處主要討論實(shí)體分析法。這是一種自上而下抽象的方法。這種方法要求根據(jù)前面數(shù)據(jù)的需求分析,確定系統(tǒng)范圍,確定實(shí)體及其屬性,畫出系統(tǒng)的實(shí)體聯(lián)系模型(E-R圖)。在分析需求的基礎(chǔ)上,我們得到整個(gè)系統(tǒng)的E-R圖。</p><p> 3.2 創(chuàng)建應(yīng)用程序</p>
38、;<p> 本彩電故障信息共享系統(tǒng)采用Visual C++ 6.0的ADO方法開發(fā)。工程創(chuàng)建具體步驟如下:</p><p> 打開Visual C++后,選擇菜單“File/New”中的“Project”選項(xiàng)卡中的“MFC AppWizard [exe]”,設(shè)置工程名字為“CaidianGuzhang”,選擇存儲(chǔ)位置,單擊“OK”。</p><p> 創(chuàng)建一個(gè)單文檔應(yīng)用
39、程序,在Step1中,選擇“Single Document”,然后單擊“Next”按扭,進(jìn)入“Step 2 of 6”。</p><p> 一直單擊“Next”按扭,直到進(jìn)入“Step 6 of 6”。因?yàn)闉榱四苁箶?shù)據(jù)更直觀,我們采用列表形式,所以需要在本步驟中,選擇CCaidianGuzhangView類的Base Class(基類)為ClistView。然后單擊“Finish”,最后將出現(xiàn)確認(rèn)窗口,如圖6所
40、示,檢查無(wú)誤后,單擊“確定”,即可完成工程創(chuàng)建。</p><p><b> 圖6 確認(rèn)</b></p><p> 為了使程序能支持ADO數(shù)據(jù)庫(kù)對(duì)象,以使程序能正確的調(diào)用數(shù)據(jù)庫(kù),應(yīng)該在頭文件stdafx.h中加入</p><p> #import "c:\Program Files\Common Files\System\ado\
41、msado15.dll"\</p><p> rename_namespace("AdoNS")\</p><p> rename("EOF","adoEOF")</p><p> using namespace AdoNS; 導(dǎo)入ADO庫(kù)</p><p> 并
42、在主程序入口:BOOL CCaidianGuzhangApp::InitInstance()中加入AfxOleInit();初始化COM環(huán)境。</p><p> ADO類的定義是作為一種資源存儲(chǔ)在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫(kù)。類型庫(kù)描述了自治接口,以及C++使用的COM vtable接口。當(dāng)使用#import指令時(shí),在運(yùn)行時(shí)Visual C++需要從ADO DLL中讀取這個(gè)類型
43、庫(kù),并以此創(chuàng)建一組C++頭文件。</p><p> ADO庫(kù)包含三個(gè)智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。 _ConnectionPtr通常被用來(lái)創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語(yǔ)句,如一個(gè)存儲(chǔ)過(guò)程?! CommandPtr返回一個(gè)記錄集。它提供了一種簡(jiǎn)單的方法來(lái)執(zhí)行返回記錄集的存儲(chǔ)過(guò)程和SQL語(yǔ)句。在使用_CommandPtr接口時(shí)
44、,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。 _RecordsetPtr是一個(gè)記錄集對(duì)象。與以上兩種對(duì)象相比,它對(duì)記錄集提供了更多的控制功能,如記錄鎖定、游標(biāo)控制等。</p><p> 3.3 數(shù)據(jù)庫(kù)操作準(zhǔn)備</p><p> (1) 初始化接口: initialDbConnect(CString mdbname)&l
45、t;/p><p> 在本系統(tǒng)中通過(guò)建立一個(gè)數(shù)據(jù)庫(kù)類class DatabaseOperate 來(lái)實(shí)現(xiàn)整個(gè)信息系統(tǒng)對(duì)數(shù)據(jù)的操作,下面是對(duì)其提供的主要接口的設(shè)計(jì):</p><p> 該接口函數(shù)的作用是初始化連接數(shù)據(jù)源。</p><p> BOOL DatabaseOperate::InitialDbConnect(CString mdbname)</p>
46、<p> { m_pConnection.CreateInstance(_uuidof(Connection));</p><p><b> //先連接數(shù)據(jù)庫(kù)</b></p><p> CString strConnect;</p><p> BSTR bstrSQL;</p><p> str
47、Connect.Format(_T("Provider = Microsoft.JET.OLEDB.4.0; </p><p> Data ource=%s"),mdbname);</p><p> bstrSQL = strConnect.AllocSysString();</p><p><b> ……………</b&g
48、t;</p><p> AfxMessageBox(e.ErrorMessage());</p><p> return false; }</p><p> return true; } 該接口的主要功能是連接我們?cè)贏ccess 2003中設(shè)計(jì)的數(shù)據(jù)源,CString mdbname變量作為數(shù)據(jù)庫(kù)文件mdb的名稱,由調(diào)用 DatabaseOper
49、ate 類的主程序給出。在本設(shè)計(jì)中是“info1.mdb”</p><p> ?。?)執(zhí)行查詢,修改,添加,刪除等功能的接口函數(shù)的設(shè)計(jì)</p><p> BOOL DatabaseOperate::ExecuteSQLEx(CString strSQL)</p><p><b> {</b></p><p> _
50、variant_t RecordsAffected;//</p><p> _bstr_t bstrSql(strSQL);</p><p><b> try</b></p><p> { m_pConnection->Execute(bstrSql,&RecordsAffected,adCmdText);</p&g
51、t;<p><b> }</b></p><p> catch (_com_error e)</p><p><b> {</b></p><p> AfxMessageBox(e.ErrorMessage());</p><p> return FALSE; }<
52、/p><p> return TRUE; }</p><p> 通過(guò)執(zhí)行一條SQL語(yǔ)句來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫操作,其中m_pConnection是我們?cè)谡{(diào)用InitialDbConnect初始化接口時(shí)候創(chuàng)建的連接型智能指針,我們可以通過(guò)它來(lái)執(zhí)行SQL語(yǔ)句</p><p> ?。?) 獲取數(shù)據(jù)信息接口函數(shù)的設(shè)計(jì)</p><p> BOOL Da
53、tabaseOperate:: GetCurrentRecordSet(Recordstruct&result,long Shijiansuoyin,CString tablename)</p><p><b> {</b></p><p> _RecordsetPtr tem_pRecordset;</p><p> tem
54、_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指針</p><p> CString strSql;</p><p> strSql.Format( _T("select * from %s where sjsy=%d "), tablename, Shijiansuoyin);</
55、p><p> BSTR bstrSQL = strSql.AllocSysString(); </p><p><b> try</b></p><p> {tem_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,ad
56、CmdText); </p><p><b> }</b></p><p> catch (_com_error e)//異常處理</p><p><b> {</b></p><p> AfxMessageBox(e.ErrorMessage());</p><p>
57、; if (tem_pRecordset->State) {</p><p> tem_pRecordset->Close();</p><p> tem_pRecordset.Release();</p><p><b> }</b></p><p> return FALSE;</p>
58、;<p><b> }</b></p><p> while(!tem_pRecordset->adoEOF)//遍歷所有記錄</p><p> { _variant_t v_xxg,v_jx,v_jk, v_qj</p><p> v_ xxg = tem_pRecordset->GetCollect(_
59、T("顯象管"));</p><p> v_ jx = tem_pRecordset->GetCollect(_T("機(jī)芯"));</p><p> v_ jk = tem_pRecordset->GetCollect(_T("機(jī)殼"));</p><p> v_ qj = tem_pRe
60、cordset->GetCollect(_T("器件"));</p><p> …………………………..</p><p> //獲取各個(gè)字段的信息</p><p> //將各字段信息賦值給result結(jié)構(gòu)體,此處省略</p><p> tem_pRecordset->MoveNext();//轉(zhuǎn)到下一條
61、紀(jì)錄</p><p><b> }</b></p><p> if (tem_pRecordset->State) {</p><p> tem_pRecordset->Close();</p><p> tem_pRecordset.Release();</p><p>&l
62、t;b> }</b></p><p> return TRUE;</p><p><b> }</b></p><p> 其中參數(shù)Recordstruct&result是對(duì)查詢結(jié)果定義的結(jié)構(gòu)體,與前面我們?cè)跀?shù)據(jù)庫(kù)中建立的彩電信息的結(jié)構(gòu)一致:</p><p> typedef struc
63、t _Recordstruct</p><p><b> { </b></p><p> CString xxg ;//顯象管</p><p> CString jx;//機(jī)芯</p><p> CString qj;//器件</p><p> CString jsy;
64、//技術(shù)員</p><p> CString sj;//時(shí)間</p><p> CString qita;//其他信息</p><p> CString sj;//信息名</p><p> CString qita;//具體內(nèi)容</p><p> long sjsy;//時(shí)間索引&l
65、t;/p><p> }Recordstruct,* pRecordstruct;</p><p> 3.4 ADO訪問(wèn)數(shù)據(jù)庫(kù)</p><p> ?。?) 生成應(yīng)用程序框架并初始化OLE/COM庫(kù)環(huán)境 </p><p> 創(chuàng)建一個(gè)標(biāo)準(zhǔn)的MFC AppWizard(exe)應(yīng)用程序,然后在使用ADO數(shù)據(jù)庫(kù)InitInstance函數(shù)中初始化OL
66、E/COM庫(kù)(因?yàn)锳DO庫(kù)是一個(gè)COM DLL庫(kù))。</p><p> 創(chuàng)建一個(gè)標(biāo)準(zhǔn)的MFC AppWizard(exe)應(yīng)用程序,然后在使用ADO數(shù)據(jù)庫(kù)的InitInstance函數(shù)中初始化OLE/COM庫(kù)(因?yàn)锳DO庫(kù)是一個(gè)COM DLL庫(kù))。本例為: </p><p> BOOL CAdotestDlg::OnInitDialog()</p><p>&
67、lt;b> {</b></p><p> ::CoInitialize(NULL); //初始化OLE/COM庫(kù)環(huán)境 </p><p><b> } </b></p><p> 程序最后要調(diào)用 ::CoUninitialize();//釋放程序占用的COM 資源?! ×硗猓?lt;/p><p>
68、 m_pRecordset->Close(); 注意?。。〔灰啻侮P(guān)閉?。。。。。。。。。。。?lt;/p><p> m_pConnection->Close();</p><p> m_pRecordset = NULL;</p><p> m_pConnection = NULL; </p><p> ?。?) 引入ADO
69、庫(kù)文件 </p><p> 使用ADO前必須在工程的stdafx.h文件最后用直接引入符號(hào)#import引入ADO庫(kù)文件,以使編譯器能正確編譯。ADO類的定義是作為一種資源存儲(chǔ)在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫(kù)。類型庫(kù)描述了自治接口,以及C++使用的COM vtable接口。當(dāng)使用#import指令時(shí),在運(yùn)行時(shí)Visual C++需要從ADO DLL中讀取這個(gè)類型庫(kù),并以此創(chuàng)建一組
70、C++頭文件。這些頭文件具有.tli 和.tlh擴(kuò)展名,讀者可以在項(xiàng)目的目錄下找到這兩個(gè)文件。在C++程序代碼中調(diào)用的ADO類要在這些文件中定義。 程序的第三行指示ADO對(duì)象不使用名稱空間。在有些應(yīng)用程序中,由于應(yīng)用程序中的對(duì)象與ADO中的對(duì)象之間可能會(huì)出現(xiàn)命名沖突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為: rename_namespace("AdoNS")。第四行代碼
71、將ADO中的EOF(文件結(jié)束)更名為adoEOF,以避免與定義了自己的EOF的其他庫(kù)沖突。 </p><p> ?。?) 利用智能指針進(jìn)行數(shù)據(jù)庫(kù)操作 </p><p> 在CaboutDlg頭文件中定義兩個(gè)ADO智能指針類實(shí)例,并在對(duì)話框中加入一個(gè)ListCtrl。</p><p> class CAdotestDlg : public CDialog</
72、p><p> { _ConnectionPtr m_pConnection;</p><p> _RecordsetPtr m_pRecordset;</p><p> ClistCtrl m_List; </p><p><b> ......</b></p><p><b>
73、 } </b></p><p> ADO庫(kù)包含三個(gè)智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用來(lái)創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語(yǔ)句,如一個(gè)存儲(chǔ)過(guò)程。 _CommandPtr返回一個(gè)記錄集。它提供了一種簡(jiǎn)單的方法來(lái)執(zhí)行返回記錄集的存儲(chǔ)過(guò)程和SQL語(yǔ)句。在使用_CommandPtr接口時(shí)
74、,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串?! RecordsetPtr是一個(gè)記錄集對(duì)象。與以上兩種對(duì)象相比,它對(duì)記錄集提供了更多的控制功能,如記錄鎖定、游標(biāo)控制等。 </p><p> 在使用ADO程序的事件響應(yīng)中OnButton1加入以下代碼: </p><p> void CAdotestDlg::OnButton1()
75、</p><p><b> {</b></p><p> m_List.ResetContent();</p><p> m_pConnection.CreateInstance(_uuidof(Connection)); //初始化Connection指針</p><p> m_pRecordset.Creat
76、eInstance(_uuidof(Recordset));//初始化Recordset指針</p><p><b> try</b></p><p><b> {</b></p><p> m_pConnection->Open("DSN=ADOTest","",&qu
77、ot;",0); //連接叫作ADOTest的ODBC數(shù)據(jù)源</p><p> //注意:這是連接不需要用戶ID或密碼的open 函數(shù)</p><p> // 否則形式為 ->Open("DSN=test;uid=sa;pwd=123;","","",0); </p><p> //
78、執(zhí)行SQL語(yǔ)句得到一個(gè)記錄集把其指針賦值給m_pRecordset</p><p> CString strSql="select * from middle";</p><p> BSTR bstrSQL = strSql.AllocSysString(); </p><p> m_pRecordset->Open(bstrSQL,
79、(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); </p><p> //adOpenDynamic:動(dòng)態(tài) adLockOptimistic樂(lè)觀封鎖法 adCmdText:文本查詢語(yǔ)句</p><p> while(!m_pRecordset->adoEOF)//遍歷所有記錄</p&g
80、t;<p><b> { </b></p><p> //取紀(jì)錄字段值方式之一</p><p> _variant_t TheValue; //VARIANT數(shù)據(jù)類型</p><p> TheValue = m_pRecordset->GetCollect("BIG_NAME");//得到字段BI
81、G_NAME的值</p><p> if(TheValue.vt!=VT_NULL)</p><p> m_List.AddString((char*)_bstr_t(TheValue));</p><p> //將該值加入到列表控件中</p><p> //取紀(jì)錄字段值方式之二</p><p> // _b
82、str_t TheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;</p><p> // CString temp=TheValue1.copy();</p><p> // m_List.AddString(temp);</p><p><b>
83、 //數(shù)據(jù)類型轉(zhuǎn)換</b></p><p> _variant_t vUsername,vBirthday,vID,vOld;</p><p> TRACE("id:%d,姓名:%s,年齡:%d,生日:%s\r\n",</p><p> vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal
84、,(LPCTSTR)(_bstr_t)vBirthday);</p><p> m_pRecordset->MoveNext();//轉(zhuǎn)到下一條紀(jì)錄</p><p><b> }</b></p><p> m_pRecordset->Close();</p><p> m_pConnection-&g
85、t;Close();</p><p><b> }</b></p><p> catch (_com_error e)//異常處理</p><p><b> {</b></p><p> AfxMessageBox(e.ErrorMessage());</p><p>
86、;<b> }</b></p><p> m_pRecordset->Close(); //注意?。?!不要多次關(guān)閉?。。?!否則會(huì)出錯(cuò)</p><p> m_pConnection->Close();</p><p> m_pRecordset = NULL;</p><p> m_pConnecti
87、on = NULL; </p><p><b> } </b></p><p> 程序中通過(guò)_variant_t和_bstr_t轉(zhuǎn)換COM對(duì)象和C++類型的數(shù)據(jù), _variant_t類封裝了OLE自治VARIANT數(shù)據(jù)類型。在C++中使用_variant_t類要比直接使用VARIANT數(shù)據(jù)類型容易得多。好,編譯后該程序就能運(yùn)行了,但記住運(yùn)行前要?jiǎng)?chuàng)建一個(gè)叫ADOT
88、est的ODBC數(shù)據(jù)源。該程序?qū)驯韒iddle中的BIG_NAME字段值顯示在列表控件中。</p><p> ?。?) 執(zhí)行SQL命令并取得結(jié)果記錄集</p><p> 為了取得結(jié)果記錄集,我們定義一個(gè)指向Recordset對(duì)象的指針:_RecordsetPtr m_pRecordset;并為其創(chuàng)建Recordset對(duì)象的實(shí)例: </p><p> m_pRe
89、cordset.CreateInstance("ADODB.Recordset");SQL命令的執(zhí)行可以采用多種形式,下面我們一進(jìn)行簡(jiǎn)單介紹。 1.利用Connection對(duì)象的Execute方法執(zhí)行SQL命令Execute方法的原型如下所示:</p><p> _RecordsetPtr Connection15::Execute ( _bstr_t CommandText,
90、VARIANT * RecordsAffected,long Options ) </p><p> 其中CommandText是命令字串,通常是SQL命令。</p><p> 參數(shù)RecordsAffected是操作完成后所影響的行數(shù), </p><p> 參數(shù)Options表示CommandText中內(nèi)容的類型,Options可以取如下值之一:</p
91、><p> adCmdText:表明CommandText是文本命令</p><p> adCmdTable:表明CommandText是一個(gè)表名</p><p> adCmdProc:表明CommandText是一個(gè)存儲(chǔ)過(guò)程</p><p> adCmdUnknown:未知</p><p> Execute執(zhí)行
92、完后返回一個(gè)指向記錄集的指針。</p><p> 2.利用Command對(duì)象來(lái)執(zhí)行SQL命令 </p><p> _CommandPtr m_pCommand;</p><p> m_pCommand.CreateInstance("ADODB.Command");</p><p> _variant_t vNUL
93、L;</p><p> vNULL.vt = VT_ERROR;</p><p> vNULL.scode = DISP_E_PARAMNOTFOUND;///定義為無(wú)參數(shù)</p><p> m_pCommand->ActiveConnection = m_pConnection;///非常關(guān)鍵的一句,將建立的連接賦值給它</p><
94、p> m_pCommand->CommandText = "SELECT * FROM users";///命令字串</p><p> m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///執(zhí)行命令,取得記錄集。</p><p> 在這段代碼中我們只是用Com
95、mand對(duì)象來(lái)執(zhí)行了SELECT查詢語(yǔ)句,Command對(duì)象在進(jìn)行存儲(chǔ)過(guò)程的調(diào)用中能真正體現(xiàn)它的作用?! ?.直接用Recordset對(duì)象進(jìn)行查詢?nèi)〉糜涗浖?lt;/p><p> ?。?)記錄集的遍歷、更新 根據(jù)我們剛才通過(guò)執(zhí)行SQL命令建立好的users表,它包含四個(gè)字段:ID,username,old,birthday以下的代碼實(shí)現(xiàn):打開記錄集,遍歷所有記錄,刪除第一條記錄,添加三條記錄,移動(dòng)光標(biāo)到第
96、二條記錄,更改其年齡,保存到數(shù)據(jù)庫(kù)。 </p><p> _variant_t vUsername,vBirthday,vID,vOld;</p><p> _RecordsetPtr m_pRecordset;</p><p> m_pRecordset.CreateInstance("ADODB.Recordset");</p&
97、gt;<p> m_pRecordset->Open("SELECT * FROM users",</p><p> _variant_t((IDispatch*)m_pConnection,true),</p><p> adOpenStatic,</p><p> adLockOptimistic,</p&g
98、t;<p> adCmdText);</p><p> while(!m_pRecordset->adoEOF)</p><p><b> {</b></p><p> vID = m_pRecordset->GetCollect(_variant_t((long)0));///取得第1列的值,從0開始計(jì)數(shù),&
99、lt;/p><p> ///你也可以直接給出列的名稱,如下一行</p><p> vUsername = m_pRecordset->GetCollect("username");///取得username字段的值</p><p> vOld = m_pRecordset->GetCollect("old");&
100、lt;/p><p> vBirthday = m_pRecordset->GetCollect("birthday");</p><p> ///在DEBUG方式下的OUTPUT窗口輸出記錄集中的記錄</p><p> if(vID.vt != VT_NULL && vUsername.vt != VT_NULL &
101、;& vOld.vt != VT_NULL && vBirthday.vt != VT_NULL)</p><p> TRACE("id:%d,姓名:%s,年齡:%d,生日:%s\r\n",</p><p><b> vID.lVal,</b></p><p> (LPCTSTR)(_bstr
102、_t)vUsername,</p><p> vOld.lVal,</p><p> (LPCTSTR)(_bstr_t)vBirthday);</p><p> m_pRecordset->MoveNext();///移到下一條記錄</p><p><b> }</b></p><p&
103、gt; m_pRecordset->MoveFirst();///移到首條記錄</p><p> m_pRecordset->Delete(adAffectCurrent);///刪除當(dāng)前記錄</p><p> ///添加三條新記錄并賦值</p><p> for(int i=0;i<3;i++)</p><p>&
104、lt;b> {</b></p><p> m_pRecordset->AddNew();///添加新記錄</p><p> m_pRecordset->PutCollect("ID",_variant_t((long)(i+10)));</p><p> m_pRecordset->PutCollect
105、("username",_variant_t("葉利欽"));</p><p> m_pRecordset->PutCollect("old",_variant_t((long)71));</p><p> m_pRecordset->PutCollect("birthday",_variant
106、_t("1930-3-15"));</p><p><b> }</b></p><p> m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));///從第一條記錄往下移動(dòng)一條記錄,即移動(dòng)到第二條記錄處</p><p> m_pRecordset->
107、;PutCollect(_variant_t("old"),_variant_t((long)45));///修改其年齡</p><p> m_pRecordset->Update();///保存到庫(kù)中 </p><p> 備注:多次查詢可把查詢過(guò)程做成一個(gè)函數(shù)ExecuteSQL讓m_pRecordset獲得連接指針m_pConnection查詢結(jié)果
108、</p><p> void ExecuteSQL(_ConnectionPtr m_pConnection, _RecordsetPtr m_pRecordset,CString strSql)</p><p><b> {</b></p><p> //執(zhí)行Select 語(yǔ)句</p><p> BSTR
109、bstrSQL = strSql.AllocSysString(); </p><p><b> try</b></p><p><b> {</b></p><p> m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDy
110、namic,adLockOptimistic,adCmdText); </p><p> //adOpenDynamic:動(dòng)態(tài) adLockOptimistic樂(lè)觀封鎖法 adCmdText:文本查詢語(yǔ)句</p><p><b> }</b></p><p> catch(_com_error error)</p>&
111、lt;p><b> {</b></p><p> CString errorMessage;</p><p> errorMessage.Format("%s",(LPTSTR)error.Description());</p><p> AfxMessageBox(errorMessage);</p&g
112、t;<p><b> }</b></p><p><b> } </b></p><p><b> //出錯(cuò)處理:</b></p><p> 3127——沒(méi)有找到目標(biāo)表</p><p> 3092——目標(biāo)表已經(jīng)存在</p>&
113、lt;p><b> 例如:</b></p><p> catch(const _com_error e)</p><p><b> {</b></p><p> AfxMessageBox(e.Description());</p><p> long errorCode=e.WCo
114、de();</p><p> if(3127==errorCode) AfxMessageBox("表不存在");</p><p> if(3092==errorCode) AfxMessageBox("表已經(jīng)存在");</p><p> return FALSE;</p><p><b&g
115、t; } </b></p><p><b> 4.功能模塊的創(chuàng)建</b></p><p> 在建立了數(shù)據(jù)庫(kù)操作類后,接下來(lái)我們就可以開始進(jìn)行各功能模塊的創(chuàng)建。</p><p> 4.1 系統(tǒng)主體窗體的創(chuàng)建</p><p> 在我們按照VC++的AppWizard創(chuàng)建完工程后,為了使主窗口框架更適合整
116、個(gè)系統(tǒng)的操作,我們有必要進(jìn)行修改,重新創(chuàng)建。</p><p> 4.1.1主菜單的創(chuàng)建</p><p> 在WorkSpase中選擇ResourseView,然后雙擊Menu文件夾,再雙擊IDR_MAINFRAME選項(xiàng),單擊右邊窗口中“幫助”旁邊的虛線框,在雙擊或按回車鍵,就會(huì)出現(xiàn)“Menu Item Properties”對(duì)話框,在這個(gè)對(duì)話框中輸入菜單項(xiàng)的內(nèi)容,如圖8所示。</
117、p><p><b> 圖8設(shè)置一級(jí)菜單</b></p><p> 二級(jí)菜單的設(shè)置基本上都和圖8相同,只是必須設(shè)置ID。按照這種方法,最終創(chuàng)建出如表2所示的菜單結(jié)構(gòu)。</p><p><b> 表2 菜單結(jié)構(gòu)</b></p><p> 4.1.2右鍵菜單的創(chuàng)建</p><p&g
118、t; 為了實(shí)現(xiàn)操作的方便、快捷,我們?cè)诔绦蛑屑尤肓擞益I菜單。在VC的主菜單中,按“Project”—>“Add to Project”—>“Components and Controls Gallery”即可進(jìn)入“Components and Controls Gallery”對(duì)話框,然后再打開Visual C++ Components文件,再選擇“Pop-up Menu”,單擊“insert”,隨后在跳出的對(duì)話框中選擇“
119、CCaidianGuzhangView”,最后單擊“OK”。完成后,需要對(duì)其進(jìn)行編輯。單擊WorkSpase中的ResourseView,在Menu文件夾中選擇CG_IDR_POPUP_MAIN_FRAME,之后邊可在右邊窗口對(duì)其進(jìn)行編輯。編輯方法與主菜單相同,其中各項(xiàng)的ID分別對(duì)應(yīng)相應(yīng)的菜單項(xiàng),對(duì)應(yīng)關(guān)系如表3所示。</p><p> 表3右鍵菜單對(duì)應(yīng)的菜單項(xiàng)ID</p><p> 4
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 彩色電視機(jī)
- 彩色電視機(jī)常見故障與維修
- 彩色電視機(jī)原理答案集
- 彩色電視機(jī)原理與維修
- 彩色電視機(jī)實(shí)訓(xùn)考核評(píng)分細(xì)則
- 飛利浦彩色電視機(jī)開關(guān)電源的維修
- 彩色電視機(jī)顯像管及其顯色原理
- 飛利浦彩色電視機(jī)開關(guān)電源的維修
- 彩色電視機(jī)行掃描電路分析與維修
- 飛利浦彩色電視機(jī)開關(guān)電源的維修.doc
- 飛利浦彩色電視機(jī)開關(guān)電源的維修.doc
- 彩色電視機(jī)常用英中文詞匯對(duì)照表
- 環(huán)境標(biāo)志產(chǎn)品認(rèn)證技術(shù)要求-低輻射彩色電視機(jī)
- 《彩色電視機(jī)整機(jī)原理與維修實(shí)訓(xùn)》的教學(xué)探索
- 模組化液晶彩色電視機(jī)的總體設(shè)計(jì).pdf
- 中國(guó)彩色電視機(jī)行業(yè)投資前景預(yù)測(cè)及行業(yè)發(fā)展戰(zhàn)略咨詢
- 電視機(jī)原理課程設(shè)計(jì)-提高nc-2t型彩色電視機(jī)清晰度的研究
- 短管頸高清彩色電視機(jī)M2992機(jī)芯的電路實(shí)現(xiàn).pdf
- 采用ta8759機(jī)芯/ta8659機(jī)芯彩色電視機(jī)黑屏,但有字符顯示
- 電視機(jī)課程設(shè)計(jì)--采用厚膜str-5412組成彩色電視機(jī)開關(guān)電源電路設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論