![Windows 應(yīng)用程序基礎(chǔ)課件_第1頁](http://file4.renrendoc.com/view14/M0B/27/02/wKhkGWedq6-AJ-q7AADdz-Owzlc501.jpg)
![Windows 應(yīng)用程序基礎(chǔ)課件_第2頁](http://file4.renrendoc.com/view14/M0B/27/02/wKhkGWedq6-AJ-q7AADdz-Owzlc5012.jpg)
![Windows 應(yīng)用程序基礎(chǔ)課件_第3頁](http://file4.renrendoc.com/view14/M0B/27/02/wKhkGWedq6-AJ-q7AADdz-Owzlc5013.jpg)
![Windows 應(yīng)用程序基礎(chǔ)課件_第4頁](http://file4.renrendoc.com/view14/M0B/27/02/wKhkGWedq6-AJ-q7AADdz-Owzlc5014.jpg)
![Windows 應(yīng)用程序基礎(chǔ)課件_第5頁](http://file4.renrendoc.com/view14/M0B/27/02/wKhkGWedq6-AJ-q7AADdz-Owzlc5015.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1
Windows應(yīng)用程式基礎(chǔ)2程式調(diào)試工具包括根源程式語法檢查、可執(zhí)行程式修改和運(yùn)行監(jiān)視等應(yīng)用程式Help和Setup開發(fā)工具包系統(tǒng)函數(shù)庫和系統(tǒng)函數(shù)開發(fā)工具資源管理器包括圖形化窗口及組成元素的多種對象的編輯器可選擇並構(gòu)成具體語句或根源程式結(jié)構(gòu)的例程庫及Help根源程式編輯器和編譯器可視化開發(fā)系統(tǒng)集成了一系列系統(tǒng)可用資源和開發(fā)工具一、Windows編程基礎(chǔ)3採用互動(dòng)式方法時(shí),可視化開發(fā)平臺給出了許多選用的對象,程式員可選擇所需對象並確定其屬性,由此搭建起應(yīng)用程式的“大框架”,並可根據(jù)需要進(jìn)一步編寫必要的細(xì)節(jié)代碼段,最後構(gòu)成完整的應(yīng)用程式Windows的程式設(shè)計(jì)語言VCVBVJ都是“面向?qū)ο蟆钡某淌皆O(shè)計(jì)語言對象是Windows的規(guī)範(fàn)部件窗口菜單按鈕對話框程式模組編寫Windows程式相當(dāng)一部分工作是在創(chuàng)建對象和為對象屬性賦值對象特徵:具有規(guī)範(fàn)形態(tài)和操作模式編程方法傳統(tǒng)編寫法-->API互動(dòng)式方法-->MFC4APIAPI函數(shù)的功能為應(yīng)用程式提供Windows系統(tǒng)特殊函數(shù)及數(shù)據(jù)結(jié)構(gòu)Win應(yīng)用程式可以利用標(biāo)準(zhǔn)大量API函數(shù)調(diào)用系統(tǒng)功能是Win系統(tǒng)與Win應(yīng)用程式間的標(biāo)準(zhǔn)程式介面窗口管理函數(shù)實(shí)現(xiàn)窗口的創(chuàng)建、移動(dòng)和修改功能系統(tǒng)服務(wù)函數(shù):實(shí)現(xiàn)與操作系統(tǒng)有關(guān)的多種功能圖形設(shè)備(GDI)函數(shù):實(shí)現(xiàn)與設(shè)備無關(guān)的圖形操作功能5
利用Windows
API函數(shù)編寫Windows應(yīng)用程式必須首先瞭解以下內(nèi)容:(1)窗口的概念(2)事件驅(qū)動(dòng)的概念(3)句柄(4)消息6(1)窗口 一個(gè)應(yīng)用程式的窗口一般包含下列成分:窗口邊界工作區(qū)控制菜單框下拉菜單水準(zhǔn)滾動(dòng)條垂直滾動(dòng)條最大化按鈕最小化按鈕標(biāo)題欄7編寫一個(gè)Windows應(yīng)用程式首先應(yīng)創(chuàng)建一個(gè)或多個(gè)窗口,隨後應(yīng)用程式的運(yùn)行過程即是窗口內(nèi)部、窗口與窗口之間、窗口與系統(tǒng)之間進(jìn)行數(shù)據(jù)處理與數(shù)據(jù)交換的過程。應(yīng)用程序與用戶之間交互的介面環(huán)境系統(tǒng)管理應(yīng)用程式的基本單位Win應(yīng)用程式基本的操作單元8Windows程式設(shè)計(jì)是針對事件或消息的處理進(jìn)行
消息是描述事件發(fā)生的資訊(如按下滑鼠或鍵盤)事件驅(qū)動(dòng)編程方法對於編寫互動(dòng)式程式很有用處,它避免了死板的操作模式Windows程式的執(zhí)行順序取決於事件發(fā)生的順序,程式的執(zhí)行順序是由順序產(chǎn)生的消息驅(qū)動(dòng)的,但是消息的產(chǎn)生往往並不要求有次序之分。(2)事件驅(qū)動(dòng)
9常用句柄類型及其說明句柄是一個(gè)4位元組長的數(shù)值,用於標(biāo)識應(yīng)用程式中不同的對象和同類對象中不同的實(shí)例窗口按鈕圖示滾動(dòng)條輸出設(shè)備控制檔(3)句柄應(yīng)用程式通過句柄訪問相應(yīng)的對象資訊HWND 窗口句柄 HDC 設(shè)備環(huán)境句柄HBITMAP 位圖句柄 HCURSOR 游標(biāo)句柄HICON 圖示句柄 HFONT 字體句柄HMENU 菜單句柄 HPEN 畫筆句柄HFILE 檔句柄 HBRUSH 畫刷句柄
HINSTANCE 當(dāng)前實(shí)例句柄10
Windows應(yīng)用程式利用Windows消息(Message)與應(yīng)用程式及系統(tǒng)進(jìn)行資訊交換。typedefstructtagMSG
{HWNDhwnd; 窗口句柄,為null,則可檢索所有駐留在消息佇列中的消息
UINTmessage;消息值,由Windows.h頭檔中的宏定義來標(biāo)識
WPARAMwParam; 包含有關(guān)消息的附加資訊,不同消息其值有所不同
LPARAMlParam;
DWORDtime;指定消息送至佇列的時(shí)間
POINTpt;指定消息發(fā)送時(shí)螢?zāi)挥螛?biāo)的位置,其數(shù)據(jù)類型POINT也是一個(gè)結(jié)構(gòu)體}MSG;消息號:由事先定義好的消息名標(biāo)識字參數(shù)(wParam):用於提供消息的附加資訊長字參數(shù)(lParam):用於提供消息的附加資訊消息附加資訊與具體消息號的值有關(guān),在Win中消息用結(jié)構(gòu)體MSG表示typedefstructtagPOINT{LONGx;
LONGy;}POINT;(4)消息11(4)消息
VC中存在幾種系統(tǒng)定義的消息分類,不同的首碼符號經(jīng)常用於消息宏識別消息附屬的分類,系統(tǒng)定義的消息宏首碼如下:BM 表示按鈕控制消息CB 表示組合框控制消息DM 表示默認(rèn)下壓式按鈕控制消息EM 表示編輯控制消息LB 表示列表框控制消息SBM 表示滾動(dòng)條控制消息WM 表示窗口消息窗口管理消息初始化消息輸入消息系統(tǒng)消息剪貼板消息控制處理消息控制通知消息滾動(dòng)條通知消息非用戶區(qū)消息MDI消息DDE消息應(yīng)用程式自定義的消息Windows編程常用消息12二、Windows應(yīng)用程式常用消息1.WM_LBUTTONDOWN:產(chǎn)生單擊滑鼠左鍵的消息此外,相似的消息還有:WM_LBUTTONUP:放開滑鼠左鍵時(shí)產(chǎn)生;WM_RBUTTONDOWN:單擊滑鼠右鍵時(shí)產(chǎn)生;WM_RBUTTONUP:放開滑鼠右鍵時(shí)產(chǎn)生;WM_LBUTTONDBLCLK:雙擊滑鼠左鍵時(shí)產(chǎn)生;WM_RBUTTONDBLCLK:雙擊滑鼠右鍵時(shí)產(chǎn)生。lParam高位元組包含當(dāng)前游標(biāo)的Y座標(biāo)值低位元組包含當(dāng)前游標(biāo)的X座標(biāo)值wParam包含一整數(shù)值以標(biāo)識滑鼠鍵的按下狀態(tài)MK_LBUTTON 按下滑鼠左鍵MK_MBUTTON 按下滑鼠中鍵MK_RBUTTON 按下滑鼠右鍵132.WM_KEYDOWN:按下一個(gè)非系統(tǒng)鍵時(shí)產(chǎn)生的消息
系統(tǒng)鍵是指實(shí)現(xiàn)系統(tǒng)操作的組合鍵,例如Alt與某個(gè)功能鍵的組合以實(shí)現(xiàn)系統(tǒng)菜單操作等。3.WM_CHAR:按下一個(gè)非系統(tǒng)鍵時(shí)產(chǎn)生的消息wParam為按鍵的ASCII碼lParam與WM_KEYDOWN的相同wParam:按下鍵的虛擬鍵碼,用以標(biāo)識按下或釋放的鍵lParam:記錄了按鍵的重複次數(shù)、掃描碼、轉(zhuǎn)移代碼、先前鍵的狀態(tài)等資訊。相似的消息還有WM_KEYUP,在放開非系統(tǒng)鍵時(shí)產(chǎn)生如F1的虛擬鍵碼在Windows.h文件中定義為VK_F1144.WM_CREATE:由CreateWindow函數(shù)發(fā)出的消息wParam:未用lParam:包含一個(gè)指向CREATESTRUCT數(shù)據(jù)結(jié)構(gòu)的指針5.WM_CLOSE:關(guān)閉窗口時(shí)產(chǎn)生的消息wParam和lParam均未用。6.WM_DESTROY:由DestroyWiodow函數(shù)發(fā)出的消息wParam和lParam均未用。157.WM_QUIT:由PostQuitMessage函數(shù)發(fā)出的消息退出應(yīng)用程式時(shí)發(fā)出的消息wParam:含退出代碼,標(biāo)識程式退出運(yùn)行時(shí)的有關(guān)資訊1Param:未用8.WM_PAINT用戶區(qū)移動(dòng)或顯示用戶窗口改變大小程式通過滾動(dòng)條滾動(dòng)窗口下拉式菜單關(guān)閉並需要恢復(fù)被覆蓋的部分Windows清除對話框等對象,並需要恢復(fù)被覆蓋的部分均產(chǎn)生WM_PAINT消息16三、Windows中的事件驅(qū)動(dòng)程式設(shè)計(jì)啟動(dòng)輸入姓名輸入第一次測試成績輸入第二次測試成績輸入第三次測試成績計(jì)算平均成績結(jié)束過程驅(qū)動(dòng)方法計(jì)算平均成績啟動(dòng)消息處理結(jié)束輸入姓名輸入第一次成績輸入第二次成績輸入第三次成績計(jì)算平均成績事件驅(qū)動(dòng)方法計(jì)算平均成績17四、Windows應(yīng)用程式組成及編程步驟
1.
應(yīng)用程式的組成一個(gè)完整的Windows應(yīng)用程式通常由五種類型的檔組成。1.C語言根源程式檔2.頭檔 3.模組定義檔 4.資源描述檔 5.專案檔 182.根源程式組成結(jié)構(gòu)入口函數(shù)WinMain窗口函數(shù)WndProcWindows應(yīng)用程式構(gòu)成基本框架包含各種數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與函數(shù)等1.所有應(yīng)用程式的入口,類似Main函數(shù),2.完成一系列的定義和初始化,並產(chǎn)生消息迴圈WinMain和WinProc是Windows應(yīng)用程式的主體19(1)
WinMain函數(shù)三個(gè)基本的組成部分:函數(shù)說明、初始化和消息迴圈功能註冊窗口類,建立窗口及執(zhí)行必要的初始化進(jìn)入消息迴圈,據(jù)接受的消息調(diào)用相應(yīng)的處理過程當(dāng)消息迴圈檢索到WM_QUIT時(shí)終止程式運(yùn)行WinMain函數(shù)WinMain函數(shù)說明WinMain函數(shù)的說明如下:intWINAPIWinMain(
HINSTANCEhThisInst, ∥應(yīng)用程式當(dāng)前實(shí)例句柄
HINSTANCehPrevInst, ∥應(yīng)用程式其他實(shí)例句柄
LPSTRlpszCmdLine, ∥指向程式命令行參數(shù)的指針
IntnCmdShow ∥應(yīng)用程式開始執(zhí)行時(shí)窗口顯示方式的整數(shù)值標(biāo)識)注意!Win是多任務(wù)管理的,同一應(yīng)用程式的多個(gè)窗口可能會同時(shí)存,Win系統(tǒng)對每個(gè)窗口的執(zhí)行稱為一個(gè)實(shí)例,並用一個(gè)實(shí)例句柄來唯一標(biāo)識20(2)初始化(a)窗口類定義
通過給窗口類數(shù)據(jù)結(jié)構(gòu)WNDCLASS賦值完成,該數(shù)據(jù)結(jié)構(gòu)中包含窗口類的各種屬性。窗口類定義常用以下函數(shù):LoadIcon的作用是在應(yīng)用程式中加載一個(gè)窗口圖示。其原型為:HICONLoadIcon(HINSTANCEhInstance,LPCTSTRlpIconName)圖示資源名或系統(tǒng)預(yù)定義圖示標(biāo)識名圖示資源所在的模組句柄,NULL則使用系統(tǒng)預(yù)定義圖示初始化顯示窗口創(chuàng)建窗口實(shí)例窗口類的註冊:窗口類必須先註冊後使用窗口類的定義:定義窗口的形式與功能LoadIconLoadCursorGetStockObjectRegisterClassCreateWindow
ShowWindow,UpdateWindow21LoadCursor的作用是在應(yīng)用程式中加載一個(gè)窗口游標(biāo)HCURSORLoadCursor(HINSTANCEhInstance, LPCTSTR
lpCursorName)游標(biāo)資源所在的模塊句柄,NULL則使用系統(tǒng)預(yù)定義游標(biāo)游標(biāo)資源名或系統(tǒng)預(yù)定義游標(biāo)標(biāo)識名應(yīng)用程式調(diào)用函數(shù)GetStockObject獲取系統(tǒng)提供的背景刷HBRUSHGetStockObject(intnBrush);22(b)註冊窗口類Win系統(tǒng)本身提供部分預(yù)定義的窗口類,程式員也可以自定義窗口類,窗口類必須先註冊後使用。窗口類的註冊由函數(shù)RegisterClass()實(shí)現(xiàn)。
RegisterClass(&wndclass);//wndclass為窗口類結(jié)構(gòu)
RegisterClass函數(shù)的返回為布爾值,註冊成功則返回真23(c)創(chuàng)建窗口實(shí)例創(chuàng)建一個(gè)窗口類的實(shí)例由函數(shù)CreateWindow()實(shí)現(xiàn)函數(shù)原型如下:HWNDCreateWindow
(
LPCTSTRlpszClassName,∥窗口類名
LPCTSTRlpszTitle, ∥窗口標(biāo)題名
DWORDdwStyle, ∥創(chuàng)建窗口的樣式
intx,y, ∥窗口左上角座標(biāo)
intnWidth,nHeight, ∥窗口寬度和度高
HWNDhwndParent, ∥該窗口的父窗口句柄
HMENUhMenu, ∥窗口主菜單句柄
HINSTANCEhInstance,∥創(chuàng)建窗口的應(yīng)用程式當(dāng)前句柄
LPVOIDlpParam ∥指向一個(gè)傳遞給窗口的參數(shù)值的指針
)2425(d)顯示窗口窗口類的顯示由ShowWindow和UpdateWindow函數(shù)實(shí)現(xiàn)。應(yīng)用程式調(diào)用ShowWindow函數(shù)在螢?zāi)簧巷@示窗口ShowWindow(hwnd,nCmdshow);//nCmdshow為窗口顯示形式標(biāo)識顯示窗口後,應(yīng)用程式調(diào)用UpdateWindow更新並繪製用戶區(qū),併發(fā)出WM_PAINT消息。
UpdateWindow(hwnd);26(3)消息迴圈消息迴圈的常見格式如下:MSGMsg;…while(GetMessage(&Msg,NULL,0,0)){
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}將消息的虛擬鍵轉(zhuǎn)換為字元資訊將消息傳送到指定窗口函數(shù)從消息佇列中讀取一條消息,並將消息放在MSG結(jié)構(gòu)中
其中函數(shù)GetMessage形式為:GetMessage(lpMSG, //指向MSG結(jié)構(gòu)的指針
hwnd,
nMsgFilteMin,//用於消息過濾的最小消息號值
nMsgFilterMax//用於消息過濾的最大消息號值)返回零值,即檢索到WM_QUIT消息,程序結(jié)束迴圈並退出將消息傳遞給窗口函數(shù)的相應(yīng)過程處理消息隊(duì)列Windows將產(chǎn)生的消息WinMain函數(shù)272.窗口函數(shù)WinProc
WinProc函數(shù)由一個(gè)或多個(gè)switch語句組成。每一條case語句對應(yīng)一種消息,當(dāng)應(yīng)用程式接收到一個(gè)消息時(shí),相應(yīng)的case語句被啟動(dòng)並執(zhí)行相應(yīng)的回應(yīng)程式模組。WinProc包含了對各種可能接收到的消息的處理過程定義了應(yīng)用程式對接收到的不同消息的回應(yīng)28窗口函數(shù)的一般形式如下:LRESULTCALLBACKWndProc( HWNDhwnd, UINTmessgae, WPARAMwParam,LPARAMlParam){
…
switch(message) ∥message為標(biāo)識的消息
{
case…
…break;
…
caseWM_DESTROY:
PostQuitMessage(0);
default:returnDefWindowProc(hwnd,message,wParam,lParam);
}return(0);}
在消息處理程式段中一般都有對WM_DESTROY的處理,該消息是關(guān)閉窗口時(shí)發(fā)出的。它向應(yīng)用程式發(fā)出WM_QUIT消息,請求退出處理函數(shù):
voidPostQuitMessage(intnExitCode)
//nExitCode為應(yīng)用程式的退出代碼為未定義處理過程的消息提供缺省處理293.?dāng)?shù)據(jù)類型
在Windows.h中定義了Windows
應(yīng)用程式中包含種類繁多的數(shù)據(jù)類型304.
一些重要的數(shù)據(jù)結(jié)構(gòu)MSG:包含一個(gè)消息的全部資訊,是消息發(fā)送的格式WNDCLASS:包含一個(gè)窗口類的全部資訊及屬性POINT:定義了螢?zāi)簧匣虼翱谥械囊粋€(gè)點(diǎn)的X和Y座標(biāo)RECT:定義了一個(gè)矩形區(qū)域及其左上角和右下角的座標(biāo)幾種重要的結(jié)構(gòu)31五、應(yīng)用程式舉例【例2-1】創(chuàng)建應(yīng)用程式框架。本例的目的在於說明創(chuàng)建Windows應(yīng)用程式的方法及過程#include<windows.h> //包含應(yīng)用程式中所需的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的定義LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函數(shù)說明//---------------以下初始化窗口類----------------------intWINAPIWinMain(HINSTANCEhInstance, HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow){
HWNDhwnd;
MSGMsg;
WNDCLASSwndclass;
charlpszClassName[]="窗口"; //窗口類名
charlpszTitle[]="My_Windows"; //窗口標(biāo)題名32
//窗口類的定義wndclass.style=0; //窗口類型為缺省類型wndclass.lpfnWndProc=WndProc; //定義窗口處理函數(shù)wndclass.cbClsExtra=0; //窗口類無擴(kuò)展wndclass.cbWndExtra=0; //窗口實(shí)例無擴(kuò)展wndclass.hInstance=hInstance; //當(dāng)前實(shí)例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化圖示為缺省圖示wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口採用箭頭游標(biāo)wndclass.hbrBackground=GetStockObject(WHITE_BRUSH); //窗口背景為白色wndclass.lpszMenuName=NULL; //窗口中無菜單wndclass.lpszClassName=lpszClassName; //窗口類名為"窗口"33
//---------------以下進(jìn)行窗口類的註冊-------if(!RegisterClass(&wndclass))//如果註冊失敗則發(fā)出警告
{
MessageBeep(0);
returnFALSE;
}//----------------創(chuàng)建窗口-------------------
hwnd=CreateWindow
(
lpszClassName, //窗口類名
lpszTitle, //窗口
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境保護(hù)行業(yè)污染物排放治理方案
- 2025年益陽c1貨運(yùn)從業(yè)資格證考試題
- 2025年廊坊貨運(yùn)上崗證考試題答案
- 小學(xué)二年級數(shù)學(xué)下冊口算題
- 小學(xué)二年級數(shù)學(xué)上冊口算練習(xí)試題
- 2025年東營貨運(yùn)運(yùn)輸駕駛員從業(yè)資格證考試試題
- 2024-2025版高中化學(xué)第4章非金屬及其化合物第3節(jié)第1課時(shí)硫和硫的氧化物練習(xí)含解析新人教版必修1
- 社區(qū)社會實(shí)踐活動(dòng)總結(jié)
- 初中班主任下學(xué)期工作總結(jié)
- 醫(yī)務(wù)人員工作計(jì)劃
- 道德經(jīng)全文完整版本
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎(jiǎng)勵(lì)制度
- 2023年宏觀經(jīng)濟(jì)學(xué)考點(diǎn)難點(diǎn)
- 先兆流產(chǎn)課件-課件
- 黑龍江申論真題2021年(鄉(xiāng)鎮(zhèn))
- 山體排險(xiǎn)合同模板
- 醫(yī)保專(兼)職管理人員的勞動(dòng)合同(2篇)
- 特殊感染手術(shù)的配合與術(shù)后處理課件
- 檢驗(yàn)科生物安全工作總結(jié)
- 《ESPEN重癥病人營養(yǎng)指南(2023版)》解讀課件
評論
0/150
提交評論