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