已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1,第2講 Windows 應(yīng)用程序基礎(chǔ),2,可視化開發(fā) 系統(tǒng)集成了一系 列系統(tǒng)可用資源 和開發(fā)工具,一、Windows編程基礎(chǔ),3,采用交互式方法時,可視化開發(fā)平臺給出了許多選用的對象,程序員可選擇所需對象并確定其屬性,由此搭建起應(yīng)用程序的“大框架”,并可根據(jù)需要進一步編寫必要的細節(jié)代碼段,最后構(gòu)成完整的應(yīng)用程序,編寫Windows 程序相當(dāng)一部分工 作是在創(chuàng)建對象和 為對象屬性賦值,對象特征:具有規(guī)范形態(tài)和操作模式,4,API,API函數(shù) 的功能,5,利用Windows API函數(shù)編寫Windows應(yīng)用程序必須首先了解以下內(nèi)容: (1)窗口的概念 (2)事件驅(qū)動的概念 (3)句柄 (4)消息,6,(1) 窗口 一個應(yīng)用程序的窗口一般包含下列成分:,7,編寫一個Windows應(yīng)用程序首先應(yīng)創(chuàng)建一個或多個窗口,隨后應(yīng)用程序的運行過程即是窗口內(nèi)部、窗口與窗口之間、窗口與系統(tǒng)之間進行數(shù)據(jù)處理與數(shù)據(jù)交換的過程。,應(yīng)用程 序與用 戶之間 交互的 接口環(huán) 境,系統(tǒng)管理 應(yīng)用程序 的基本單位,Win應(yīng)用程序 基本的操作單元,8,Windows程序設(shè)計是針對事件或消息的處理進行,消息是描述事 件發(fā)生的信息 (如按下鼠標(biāo)或鍵盤),事件驅(qū)動編程方法對于編寫交互式程序很有用處,它避免了死板的操作模式,Windows程序的執(zhí)行順序取決于事件發(fā)生的順序,程序的執(zhí)行順序是由順序產(chǎn)生的消息驅(qū)動的,但是消息的產(chǎn)生往往并不要求有次序之分。,(2)事件驅(qū)動,9,常用句柄類型及其說明,(3) 句柄,應(yīng)用程序通過 句柄訪問相應(yīng) 的對象信息,HWND 窗口句柄 HDC 設(shè)備環(huán)境句柄 HBITMAP 位圖句柄 HCURSOR 光標(biāo)句柄 HICON 圖標(biāo)句柄 HFONT 字體句柄 HMENU 菜單句柄 HPEN 畫筆句柄 HFILE 文件句柄 HBRUSH 畫刷句柄 HINSTANCE 當(dāng)前實例句柄,10,Windows應(yīng)用程序利用Windows消息(Message)與應(yīng)用程序及系統(tǒng)進行信息交換。,typedef struct tagMSG HWND hwnd; 窗口句柄,為null,則可檢索所有駐留在消息隊列中的消息 UINT message;消息值,由Windows.h頭文件中的宏定義來標(biāo)識 WPARAM wParam; 包含有關(guān)消息的附加信息,不同消息其值有所不同 LPARAM lParam; DWORD time; 指定消息送至隊列的時間 POINT pt;指定消息發(fā)送時屏幕光標(biāo)的位置, 其數(shù)據(jù)類型POINT也是一個結(jié)構(gòu)體 MSG;,附加信息與具體 消息號的值有關(guān), 在Win中消息用 結(jié)構(gòu)體MSG表示,typedef struct tagPOINT LONG x; LONG y; POINT;,(4) 消息,11,(4) 消息 VC中存在幾種系統(tǒng)定義的消息分類,不同的前綴符號經(jīng)常用于消息宏識別消息附屬的分類,系統(tǒng)定義的消息宏前綴如下:,BM 表示按鈕控制消息 CB 表示組合框控制消息 DM 表示默認下壓式按鈕控制消息 EM 表示編輯控制消息 LB 表示列表框控制消息 SBM 表示滾動條控制消息 WM 表示窗口消息,窗口管理消息 初始化消息 輸入消息 系統(tǒng)消息 剪貼板消息 控制處理消息 控制通知消息 滾動條通知消息 非用戶區(qū)消息 MDI消息 DDE消息 應(yīng)用程序自定義的消息,Windows編 程常用消息,12,二、Windows應(yīng)用程序常用消息,1. WM_LBUTTONDOWN:產(chǎn)生單擊鼠標(biāo)左鍵的消息,此外,相似的消息還有: WM_LBUTTONUP:放開鼠標(biāo)左鍵時產(chǎn)生; WM_RBUTTONDOWN:單擊鼠標(biāo)右鍵時產(chǎn)生; WM_RBUTTONUP:放開鼠標(biāo)右鍵時產(chǎn)生; WM_LBUTTONDBLCLK:雙擊鼠標(biāo)左鍵時產(chǎn)生; WM_RBUTTONDBLCLK:雙擊鼠標(biāo)右鍵時產(chǎn)生。,13,2. WM_KEYDOWN:按下一個非系統(tǒng)鍵時產(chǎn)生的消息,系統(tǒng)鍵是指實現(xiàn)系統(tǒng)操作的組合鍵,例如Alt與某個功能鍵的組合以實現(xiàn)系統(tǒng)菜單操作等。,3. WM_ CHAR:按下一個非系統(tǒng)鍵時產(chǎn)生的消息,wParam 為按鍵的ASCII碼 lParam 與WM_KEYDOWN的相同,wParam:按下鍵的虛擬鍵碼,用以標(biāo)識按下或釋放的鍵 lParam:記錄了按鍵的重復(fù)次數(shù)、掃描碼、轉(zhuǎn)移代碼、先前鍵的狀態(tài)等信息。,相似的消息還有WM_KEYUP, 在放開非系統(tǒng)鍵時產(chǎn)生,如F1的虛擬鍵碼 在Windows.h文 件中定義為VK_F1,14,4. WM_CREATE:由CreateWindow函數(shù)發(fā)出的消息,wParam:未用 lParam:包含一個指向CREATESTRUCT數(shù)據(jù)結(jié)構(gòu)的指針,5. WM_CLOSE:關(guān)閉窗口時產(chǎn)生的消息,wParam和lParam均未用。,6. WM_DESTROY:由DestroyWiodow函數(shù)發(fā)出的消息,wParam和lParam均未用。,15,7. WM_QUIT:由PostQuitMessage函數(shù)發(fā)出的消息,退出應(yīng)用程序時發(fā)出的消息 wParam:含退出代碼,標(biāo)識程序退出運行時的有關(guān)信息 1Param:未用,8. WM_PAINT,16,三、Windows中的事件驅(qū)動程序設(shè)計,過程驅(qū)動方法計算平均成績,事件驅(qū)動方法計算平均成績,17,四、Windows應(yīng)用程序組成及編程步驟,1. 應(yīng)用程序的組成,一個完整的Windows應(yīng)用程序通常由五種類型的文件組成。,1.C語言源程序文件 2.頭文件 3.模塊定義文件 4.資源描述文件 5.項目文件,18,2. 源程序組成結(jié)構(gòu),1. 所有應(yīng)用程序的入口,類似Main函數(shù), 2. 完成一系列的定義和初始化,并產(chǎn)生消息循環(huán),WinMain和WinProc是 Windows應(yīng)用程序的主體,19,(1) WinMain函數(shù),三個基本的組成部分:函數(shù)說明、初始化和消息循環(huán),WinMain函數(shù),注意!Win是多任務(wù)管理的,同一應(yīng)用程序的多個窗口可能會同時存,Win系統(tǒng)對每個窗口的執(zhí)行稱為一個實例,并用一個實例句柄來唯一標(biāo)識,20,(2) 初始化,(a)窗口類定義,通過給窗口類數(shù)據(jù)結(jié)構(gòu)WNDCLASS賦值完成,該數(shù)據(jù)結(jié)構(gòu)中包含窗口類的各種屬性。窗口類定義常用以下函數(shù):,21,LoadCursor的作用是在應(yīng)用程序中加載一個窗口光標(biāo) HCURSOR LoadCursor(HINSTANCE hInstance, 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)提供的背景刷 HBRUSH GetStockObject(int nBrush);,22,(b)注冊窗口類,Win系統(tǒng)本身提供部分預(yù)定義的窗口類,程序員也可以自定義窗口類,窗口類必須先注冊后使用。窗口類的注冊由函數(shù)RegisterClass()實現(xiàn)。 RegisterClass( /wndclass為窗口類結(jié)構(gòu) RegisterClass函數(shù)的返回為布爾值,注冊成功則返回真,23,(c) 創(chuàng)建窗口實例,創(chuàng)建一個窗口類的實例由函數(shù)CreateWindow()實現(xiàn) 函數(shù)原型如下: HWND CreateWindow ( LPCTSTR lpszClassName,窗口類名 LPCTSTR lpszTitle, 窗口標(biāo)題名 DWORD dwStyle, 創(chuàng)建窗口的樣式 int x,y, 窗口左上角坐標(biāo) int nWidth,nHeight, 窗口寬度和度高 HWND hwndParent, 該窗口的父窗口句柄 HMENU hMenu, 窗口主菜單句柄 HINSTANCE hInstance, 創(chuàng)建窗口的應(yīng)用程序當(dāng)前句柄 LPVOID lpParam 指向一個傳遞給窗口的參數(shù)值的指針 ),24,25,(d)顯示窗口,窗口類的顯示由ShowWindow和UpdateWindow函數(shù)實現(xiàn)。應(yīng)用程序調(diào)用ShowWindow函數(shù)在屏幕上顯示窗口 ShowWindow(hwnd,nCmdshow);/nCmdshow為窗口顯示形式標(biāo)識,顯示窗口后,應(yīng)用程序調(diào)用UpdateWindow更新并繪制用戶區(qū),并發(fā)出WM_PAINT消息。 UpdateWindow(hwnd);,26,(3) 消息循環(huán),消息循環(huán)的常見格式如下: MSG Msg; while (GetMessage ( ,將消息的虛擬鍵 轉(zhuǎn)換為字符信息,將消息傳送到 指定窗口函數(shù),將消息傳遞給窗口函數(shù)的相應(yīng)過程處理,Windows將產(chǎn)生的消息,WinMain函數(shù),27,2 窗口函數(shù)WinProc,WinProc函數(shù)由一個或多個switch語句組成。每一條case語句對應(yīng)一種消息,當(dāng)應(yīng)用程序接收到一個消息時,相應(yīng)的case語句被激活并執(zhí)行相應(yīng)的響應(yīng)程序模塊。,28,窗口函數(shù)的一般形式如下: LRESULT CALLBACK WndProc( HWND hwnd, UINT messgae, WPARAM wParam,LPARAM lParam ) switch(message) message為標(biāo)識的消息 case break; case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); return(0); ,在消息處理程序段中一般都有對WM_DESTROY的處理,該消息是關(guān)閉窗口時發(fā)出的。它向應(yīng)用程序發(fā)出WM_QUIT消息,請求退出處理函數(shù): void PostQuitMessage(int nExitCode) /nExitCode為應(yīng)用程序的退出代碼,為未定義處理過程的消息提供缺省處理,29,3數(shù)據(jù)類型,在Windows.h中定義了Windows 應(yīng)用程序中包含種類繁多的數(shù)據(jù)類型,30,4. 一些重要的數(shù)據(jù)結(jié)構(gòu),MSG:包含一個消息的全部信息,是消息發(fā)送的格式,WNDCLASS:包含一個窗口類的全部信息及屬性,POINT:定義了屏幕上或窗口中的一個點的X和 Y坐標(biāo),RECT:定義了一個矩形區(qū)域及其左上角和右下角的坐標(biāo),幾種重要的結(jié)構(gòu),31,五、應(yīng)用程序舉例,【例2-1】創(chuàng)建應(yīng)用程序框架。本例的目的在于說明創(chuàng)建Windows應(yīng)用程序的方法及過程,#include /包含應(yīng)用程序中所需的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的定義 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函數(shù)說明 /- 以下初始化窗口類 - int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) HWND hwnd ; MSG Msg ; WNDCLASS wndclass ; char lpszClassName = “窗口“; /窗口類名 char lpszTitle= “My_Windows“; /窗口標(biāo)題名,32,/窗口類的定義 wndclass.style=0; /窗口類型為缺省類型 wndclass.lpfnWndProc=WndProc; /定義窗口處理函數(shù) wndclass.cbClsExtra=0; /窗口類無擴展 wndclass.cbWndExtra=0; /窗口實例無擴展 wndclass.hInstance=hInstance; /當(dāng)前實例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /窗口的最小化圖標(biāo)為缺省圖標(biāo) wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ; /窗口采用箭頭光標(biāo) wndclass.hbrBackground=GetStockObject(WHITE_BRUSH); /窗口背景為白色 wndclass.lpszMenuName=NULL; /窗口中無菜單 wndclass.lpszClassName=lpszClassName ; /窗口類名為“窗口“,33,/- 以下進行窗口類的注冊 - if(!RegisterClass( ,/- 創(chuàng)建窗口 - hwnd=CreateWindow ( lpszClassName, /窗口類名 lpszTitle, /窗口實例的標(biāo)題名 WS_OVERLAPPEDWINDOW, /窗口的風(fēng)格 CW_USEDEFAULT, CW_USEDEFAULT, /窗口左上角坐標(biāo)為缺省值 CW_USEDEFAULT, CW_USEDEFAULT, /窗口的高和寬為缺省值 NULL, /此窗口無父窗口 NULL, /此窗口無主菜單 hInstance, /創(chuàng)建此窗口的應(yīng)用程序的當(dāng)前句柄 NULL /不使用該值 );,34,/- 顯示窗口 - ShowWindow( hwnd, nCmdShow) ;,/- 繪制用戶區(qū) - UpdateWindow(hwnd);,/- 消 息 循 環(huán) - while( GetMessage(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024中國豆類的種植行業(yè)分析報告
- 2025年中國赤鏈蛇養(yǎng)殖行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報告
- 2025年磚瓦及建筑砌塊行業(yè)分析報告及未來五至十年行業(yè)發(fā)展報告
- 二零二五年度大棚蔬菜種植與農(nóng)業(yè)科研合作協(xié)議3篇
- 2025版民房房屋租賃合同附帶裝修改造條款4篇
- 2025年鉻粉項目可行性研究報告
- 2025版煤炭銷售與鐵路集裝箱運輸合同范本4篇
- 二零二五年度鋼棚防火安全檢測合同4篇
- 2024-2030年自動車輛安全行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025年金融機構(gòu)投資借款合同風(fēng)險評估與管理3篇
- 2025年河北供水有限責(zé)任公司招聘筆試參考題庫含答案解析
- Unit3 Sports and fitness Discovering Useful Structures 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第一冊
- 農(nóng)發(fā)行案防知識培訓(xùn)課件
- 社區(qū)醫(yī)療抗菌藥物分級管理方案
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術(shù)規(guī)范
- 2024年九年級上德育工作總結(jié)
- 2024年儲罐呼吸閥項目可行性研究報告
- 控制特需醫(yī)療服務(wù)規(guī)模管理措施
- 沖擊式機組水輪機安裝概述與流程
- 新加坡SM2數(shù)學(xué)試題
- 畢業(yè)論文-水利水電工程質(zhì)量管理
評論
0/150
提交評論