windows程序設(shè)計(jì)1
,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,Windows,程序設(shè)計(jì)基礎(chǔ),主要內(nèi)容,Windows,編程基礎(chǔ)知識(shí),Win32,程序運(yùn)行原理,用,AppWizard,生成,MFC,應(yīng)用程序,用實(shí)例剖析,Windows,高級(jí)特性,第一章,windows,程序設(shè)計(jì)基礎(chǔ)知識(shí),1.1,必備知識(shí),Windows,的操作系統(tǒng),:,Windows95 Windows98 Windows Me Windows2000 Windows XP Windows2003,(,32,),Vista,(,64,),開(kāi)發(fā)工具,VB,、,Visual FoxPro,、,VC+,、,Delphi,、,C#,。,TC,是,16,位,DOS,程序編譯器,VC+,是,Windows,環(huán)境下最優(yōu)秀的,c+,編譯器之一,VC+,是基于,c+,的可視化集成開(kāi)發(fā)環(huán)境,擁有,C+,編譯器和,MFC(,微軟基礎(chǔ)類(lèi)庫(kù))等。,VC+.NET,MFC,c+,編譯器,C+,C,Visual C+,簡(jiǎn)介,Windows,資料來(lái)源,MSDN,MSDN,的全稱(chēng)是,Microsoft Developer Network,。這是微軟公司面向軟件開(kāi)發(fā)者的一種信息服務(wù)。一般情況下,很多人誤認(rèn)為,MSDN,為聯(lián)機(jī)幫助文件和技術(shù)文獻(xiàn)的集合。但事實(shí)上,這兩者只占,MSDN,龐大計(jì)劃的一小部分。,MSDN,實(shí)際上是一個(gè)以,Visual Studio,和,Windows,平臺(tái)為核心整合的開(kāi)發(fā)虛擬社區(qū),包括技術(shù)文檔、在線電子教程、網(wǎng)絡(luò)虛擬實(shí)驗(yàn)室、微軟產(chǎn)品下載(幾乎全部的操作系統(tǒng)、服務(wù)器程序、應(yīng)用程序和開(kāi)發(fā)程序的正式版和測(cè)試版,還包括各種驅(qū)動(dòng)程序開(kāi)發(fā)包和軟件開(kāi)發(fā)包)、,Blog,、,BBS,、,MSDN,WebCast,、與,CMP,合作的,MSDN,雜志等等一系列服務(wù)。,Win32 API(,APPlication,Programming Interface),Win32 API,可認(rèn)為是一個(gè)程序庫(kù),提供各式各樣的與,windows,系統(tǒng)服務(wù)有關(guān)的函數(shù)。,Win32 API,是最底層的服務(wù)。,調(diào)用,windows,的各種服務(wù)。,通常所說(shuō)的,sdk,編程就是直接調(diào)用,API,函數(shù)進(jìn)行編程。,Win32 API,是指編制,32,位應(yīng)用程序時(shí)用的一組函數(shù)、結(jié)構(gòu)、宏定義。在,win32,的環(huán)境下,任何語(yǔ)言都是建立在,Win32 API,基礎(chǔ)上的。,Visual FoxPro,、,VB,等軟件,API,隱藏的較深。,大多數(shù),API,位于三個(gè)核心,DLL,中:,user32.dll、GDI32.dll、kernel32.dll,采用其開(kāi)發(fā),windows,應(yīng)用程序過(guò)于繁瑣。,API&MFC,應(yīng)用程序的類(lèi)型,基于圖形用戶(hù)界面,(GUI),的窗口應(yīng)用程序,基于控制臺(tái)用戶(hù)界面,(CUI),的應(yīng)用程序,控制臺(tái)應(yīng)用程序的創(chuàng)建,1.2 VC+,的基本用法,API,函數(shù)的調(diào)用方法,(1),包含要調(diào)用函數(shù)的聲明文件,windows.h,包含其他頭文件,windef.h,基本類(lèi)型定義,winnt.h,支持,Unicode,的類(lèi)型定義,winbase.h,內(nèi)核函數(shù),winuser.h,用戶(hù)接口函數(shù),wingdi.h,圖形設(shè)備接口函數(shù),winsock.h,網(wǎng)絡(luò)編程函數(shù),API,函數(shù)的調(diào)用方法,(2),連接到指定的庫(kù)文件,kernel32.lib user32.lib gdi32.lib,winspool.lib,comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib,uuid.lib,odbc32.lib odbccp32.lib,顯示設(shè)置:,#,pragma,comment(lib,”w2_32.lib”),(3),在,API,函數(shù)前加“,:”,表示這是一個(gè)全局函數(shù),以與,C+,類(lèi)的成員函數(shù)區(qū)分。,API,函數(shù)的調(diào)用方法,1,、變量的命名,1),變量名應(yīng)簡(jiǎn)短且富于描述,2),變量的名字應(yīng)該是非形式的、簡(jiǎn)單的、容易記憶的,一般命名規(guī)則:,限定范圍的前綴,+,數(shù)據(jù)類(lèi)型前綴,+,有意義的單詞,#define MAX_BUFFER 256;/,定義一個(gè)常量,全大寫(xiě),char,g_szTitleMAX_BUFFER,;,/g_,表示全局變量,,sz,表示類(lèi)型為字符串,,Title,表示標(biāo)題的意思,int,m_nErrorCode;/m,_,表示類(lèi)的成員變量,,n,表示為長(zhǎng)整型,,ErrorCode,表,/,示錯(cuò)誤代碼的意思,1.3,代碼的風(fēng)格,3),非明文規(guī)定:,局部變量小寫(xiě),(,i,j,),,,常量大寫(xiě),(MAX_BUFFER),,,函數(shù)名為動(dòng)作性,(,CreateDirectory,),,,結(jié)構(gòu)名(類(lèi)名)應(yīng)有整體性(,class,CRaster,)。,1.3,代碼的風(fēng)格,2,、代碼的對(duì)齊方式,“,”“,”之間表示一個(gè)塊,是一個(gè)相對(duì)獨(dú)立的語(yǔ)義單元。代碼的行行之間按塊對(duì)齊,各塊之間適當(dāng)縮進(jìn)。例:,Void,Alert(int,i),while(i,0),Beep(1000,1000);/Beep,函數(shù)使揚(yáng)聲器發(fā)出聲音,i-;,1.3,代碼的風(fēng)格,3,、代碼的注釋,1),短的注釋與所描述的代碼放在同一行,2),長(zhǎng)的注釋就放在所要注釋的語(yǔ)句的上面,3),有關(guān)“,/*/”,的注釋方法,1.3,代碼的風(fēng)格,1.VB,不能直接調(diào)用,Win API,,要先聲明然后再調(diào)用。,2.,聲明,API,過(guò)程,比如聲名,SetWindowTextA,首先,在模塊的聲明部分對(duì)過(guò)程進(jìn)行聲明:,Private Declare Function,SetWindowText,Lib user32 Alias,SetWindowTextA,(,ByVal,hwnd,As Long,ByVal,lpString,As String)As Long 3.,調(diào)用,API,過(guò)程 在聲明了函數(shù)之后,調(diào)用它的方式與標(biāo)準(zhǔn)的,Visual Basic,函數(shù)相同。在下例中,,Form Load,事件調(diào)用了上面聲明的過(guò)程。,Private Sub,Form_Load,(),SetWindowText,Form1.hWnd,Welcome to VB End Sub,調(diào)用,API,例子,調(diào)用,API,例子(,C#,),讀寫(xiě),INI,文件。,using System;using,System.IO,;using,System.Text,;using,System.Runtime.InteropServices,;namespace,FileIO,public class,INIFileIO,DllImport(kernel32)private static extern long,WritePrivateProfileString(string,section,string,key,string,val,string,filePath,);DllImport(kernel32)private static extern,int,GetPrivateProfileString(string,section,string,key,string,def,StringBuilder,retVal,int,size,string,filePath,);,調(diào)用,API,例子(,C#,),public,INIFileIO,()public static void,INIWriteValue(string,section,string,key,string,val,string,filePath,),WritePrivateProfileString(section,key,val,filePath,);public static string,INIReadValue(string,section,string,key,string,filePath,),StringBuilder,temp=new StringBuilder(255);,int,i=,GetPrivateProfileString(section,key,temp,255,filePath,);return,temp.ToString,();,結(jié) 束,