<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>
  • 歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
    裝配圖網(wǎng)
    ImageVerifierCode 換一換
    首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

    windows程序設計004

    • 資源ID:248210869       資源大?。?span id="7dji48d" class="font-tahoma">288KB        全文頁數(shù):49頁
    • 資源格式: PPT        下載積分:15積分
    快捷下載 游客一鍵下載
    會員登錄下載
    微信登錄下載
    三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
    二維碼
    微信掃一掃登錄
    下載資源需要15積分
    郵箱/手機:
    溫馨提示:
    用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
    支付方式: 支付寶    微信支付   
    驗證碼:   換一換

     
    賬號:
    密碼:
    驗證碼:   換一換
      忘記密碼?
        
    友情提示
    2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
    3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
    4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
    5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

    windows程序設計004

    ,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,Windows,程序設計基礎,第四章,Windows,圖形界面,4.1,基礎知識,創(chuàng)建主窗口,創(chuàng)建,Win32,工程,創(chuàng)建其他工程,int APIENTRY WinMain(HINSTANCE hInstance,/本模塊的實例句柄,HINSTANCE hPrevInstance,/Win16時代句柄,LPSTR lpCmdLine,/命令行參數(shù),int nCmdShow)/主窗口初始化時的顯示方式,/TODO:Place code here.,return 0;,入口函數(shù),lpCmdLine,,,nCmdShow,的值都是由,CreateProcess,函數(shù)的參數(shù),lpCommandLine,,,dwCreationFlags,指定。,創(chuàng)建窗口后,就要對窗口的行為負責。操作系統(tǒng)不斷的向應用程序發(fā)送消息,通知它發(fā)生了什么事情。,當,Windows,向程序發(fā)送消息時,它調(diào)用程序中的一個函數(shù),這個函數(shù)的參數(shù)精確地描述了,Windows,發(fā)送的消息。,在程序中稱其為窗口函數(shù)或消息處理函數(shù)。它是一個自定義的回調(diào)函數(shù)。原形如下:,LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);,Windows,的消息驅(qū)動,4.2,消息驅(qū)動,回調(diào)函數(shù),回調(diào)函數(shù)是應用程序提供給,Windows,系統(tǒng),DLL,或其它,DLL,調(diào)用的函數(shù),一般用于截獲消息、獲取系統(tǒng)信息或處理異步事件。應用程序把回調(diào)函數(shù)的地址指針告訴,DLL,,而,DLL,在適當?shù)臅r候會調(diào)用該函數(shù)?;卣{(diào)函數(shù)必須遵守事先規(guī)定好的參數(shù)格式和傳遞方式,否則,DLL,一調(diào)用它就會引起程序或系統(tǒng)的崩潰。通常情況下,回調(diào)函數(shù)采用標準,WindowsAPI,的調(diào)用方式,即,_stdcall,,當然,,DLL,編制者可以自己定義調(diào)用方式,但客戶程序也必須遵守相同的規(guī)定。在,_stdcall,方式下,函數(shù)的參數(shù)按從右到左的順序壓入堆棧,除了明確指明是指針或引用外,參數(shù)都按值傳遞,函數(shù)返回之前自己負責把參數(shù)從堆棧中彈出。,int main(int argc,char*argv),HWND hWnd=:FindWindow(NULL,”,無標題,-,記事本,”,);,if(hWnd,!,=NULL),:SendMessage(hWnd,WM_CLOSE,0,0);,return 0;,示例,消息簡單的說就是指通過輸入設備向程序發(fā)出指令要執(zhí)行某個操作。具體的某個操作是你寫的一系列代碼。稱為消息處理函數(shù)。在,SDK,中消息其實非常容易理解,當窗口建立后便會有一個函數(shù)(窗口處理函數(shù))開始執(zhí)行一個消息循環(huán),我們還可以清楚的看到消息處理的脈絡。一個,switch case,語句就可以搞定,消息循環(huán)直到遇到,WM_QUIT,消息才會結(jié)束,其余的消息均被攔截后調(diào)用相應的處理函數(shù)。但在封裝了,API,的,MFC,中,消息似乎變的有些復雜了,我們看不到熟悉的,switch case,語句了,取而代之的是一個叫消息映射的東西。,消息,在現(xiàn)在的程序開發(fā)活動中,一個程序是否擁有多個窗體,主窗口就算只有一個,那菜單、工具條、控件這些都是子窗口,需要寫很多個,switch case,,并且還要為每個消息分配一個消息處理函數(shù),這樣做非常復雜。因此,MFC,采用了一種新的機制。利用一個數(shù)組,將窗口消息和相對應的消息處理函數(shù)進行映射,你可以理解成這是一個表。這種機制就是消息映射。這張表在窗口基類,CWnd,定義,派生類的消息映射表如果你沒有動作它是空的,也就是說如果你不手工的增加消息處理函數(shù),則當派生窗口接受一個消息時會執(zhí)行父類的消息處理函數(shù)。這樣做顯然是高效的。,消息映射,1,、,Windows,消息 此類消息主要包括以前綴,WM_,開頭的消息,,WM_COMMAND,除外。,Windows,消息由窗口和視圖處理。此類消息往往帶有用于確定如何處理消息的參數(shù)。,消息,類別,2,、控件通知 此類消息包括從控件和其他子窗口發(fā)送到其父窗口的,WM_COMMAND,通知消息。例如,當用戶在編輯控件,(Edit Control),中執(zhí)行可能更改文本的操作后,該編輯控件,(Edit Control),將向其父級發(fā)送包含,EN_CHANGE,控件通知代碼的,WM_COMMAND,消息。該消息的窗口處理程序以某種適當?shù)姆绞巾憫送ㄖ?,例如在控件中檢索該文本??蚣芟駛魉推渌?WM_,消息一樣傳送控件通知消息。但是有一個例外的情況,即當用戶單擊按鈕時由按鈕發(fā)送的,BN_CLICKED,控件通知消息。該消息被作為命令消息特別處理,并像其他命令一樣傳送。,消息,類別,3,、命令消息 此類消息包括用戶界面對象(菜單、工具欄按鈕和快捷鍵)發(fā)出的,WM_COMMAND,通知消息??蚣芴幚砻畹姆绞脚c處理其他消息不同,可以使用更多種類的對象處理命令。,消息,類別,Windows,消息和控件通知消息由窗口來處理(窗口是從,CWnd,類派生的類的對象)。包括,CFrameWnd,、,CMDIFrameWnd,、,CMDIChildWnd,、,CView,、,CDialog,以及從這些基類派生的您自己的類。這些對象封裝了,HWNDWindows,窗口的句柄。命令消息可以由范圍更廣的對象(文檔、文檔模板以及應用程序?qū)ο蟊旧恚┨幚恚粌H僅由窗口和視圖處理。當某一命令直接影響到某個特定對象時,應當讓該對象處理此命令。例如,“文件”菜單中的“打開”命令在邏輯上與應用程序相關聯(lián):該應用程序接收到此命令時會打開指定的文檔。因此“打開”命令的處理程序是應用程序類的成員函數(shù)。命令消息比較常見的便是菜單項和工具條了,它的消息映射宏和窗口消息不太一樣,一般的形式是這樣的,ON_COMMAND(id,memberFxn),。,消息,處理,還有一種消息叫通知消息。例如樹型控件的等一些復雜的控件在單擊后需要傳遞更多的信息,例如光標的位置和當前項的一個結(jié)構,所以,MFC,為控件的每個通知消息也定義了一個宏,它如下:,ON_CONTROL(EN_CHANGE,id,memberFxn),。,消息,處理,MFC,定義了下面的兩個主要結(jié)構,:AFX_MSGMAP_ENTRYstruct AFX_MSGMAP_ENTRYUINT nMessage;,/Windows,消息的,ID,號,UINT nCode;,/,控制消息的通知,UINT nID;,/Windows,控制消息的,ID,UINT nLastID;,/,表示是一個指定范圍的消息被映射的范圍,UINT nSig;,/,表示消息的動作標識,AFX_PMSG pfn;,/,指向消息處理函數(shù)的指針,;,MFC,提供的消息結(jié)構,AFX_MSGMAPstruct AFX_MSGMAP#ifdef _AFXDLLconst AFX_MSGMAP*(PASCAL*pfnGetBaseMap)();#elseconst AFX_MSGMAP*pBaseMap;#endifconst AFX_MSGMAP_ENTRY*lpEntries;/AFX_MSGMAP,可以得到基類的消息映射入口地址和得到,/,本身的消息映射入口地址。,1,、,_AfxCbtFilterHook,截獲消息(這是一個鉤子函數(shù)),2,、,_AfxCbtFilterHook,把窗口過程設定為,AfxWndProc,。,3,、函數(shù),AfxWndProc,接收,Windows,操作系統(tǒng)發(fā)送的消息。,4,、函數(shù),AfxWndProc,調(diào)用函數(shù),AfxCallWndProc,進行消息處理。,5,、函數(shù),AfxCallWndProc,調(diào)用,CWnd,類的方法,WindowProc,進行消息處理。,MFC,下消息的處理過程,一個標準的消息處理程序是這個樣子的在,CWnd,類中預定義了標準,Windows,消息,(WM_XXXX WM,是,WINDOW MESSAGE,的縮寫,),的默認處理程序。類庫基于消息名命名這些處理程序。例如,,WM_PAINT,消息的處理程序在,CWnd,中被聲明為:,afx_msg void OnPaint();afx_msg,關鍵字通過使這些處理程序區(qū)別于其他,CWnd,成員函數(shù)來表明,C+virtual,關鍵字的作用。但是請注意,這些函數(shù)實際上并不是虛擬的,而是通過消息映射實現(xiàn)的。所有能夠進行消息處理的類都是基于,CCmdTarget,類的,也就是說,CCmdTarget,類是所有可以進行消息處理類的父類。,CCmdTarget,類是,MFC,處理命令消息的基礎和核心。,如何添加自己的消息?,若要重寫基類中定義的處理程序,只需在派生類中定義一個具有相同原型的函數(shù),并創(chuàng)建此處理程序的消息映射項。通過,ClassWizard,可以建立大多數(shù)窗口消息或自定義的消息,通過,ClassWizard,可以自動建立消息映射,和消息處理函數(shù)的框架,我們只需要把我們要做的事情填空,添加你要做的事情到處理函數(shù)。但是也許需要添加一些,ClassWizard,不支持的窗口消息或自定義消息,那么就需要親自動手建立消息映射和消息處理的框架,通常步驟如下:,步驟,第一步:定義消息。,Microsoft,推薦用戶自定義消息至少是,WM_USER+100,,因為很多新控件也要使用,WM_USER,消息。,#define WM_MYMESSAGE(WM_USER+100),第二步:實現(xiàn)消息處理函數(shù)。該函數(shù)使用,WPRAM,和,LPARAM,參數(shù)并返回,LPESULT,。,LPESULT CMainFrame:OnMyMessage(WPARAM wParam,LPARAM lParam)/TODO:,處理用戶自定義消息,填空就是要填到這里。,return 0;,第三步:在類頭文件的,AFX_MSG,塊中說明消息處理函數(shù):,/AFX_MSG(CMainFrame)afx_msg LRESULT OnMyMessage(WPARAM wParam,LPARAM lParam);/AFX_MSG DECLARE_MESSAGE_MAP(),第四步:在用戶類的消息塊中,使用,ON_MESSAGE,宏指令將消息映射到消息處理函數(shù)中。,ON_MESSAGE(WM_MYMESSAGE,OnMyMessage),可以看出,用戶自定義的消息和我們通過,ClassWizard,添加的消息一樣,都是利用了,ON_MESSAGE,宏,建立的消息映射。,步驟,1,)注冊窗口類,RegisterClassEx,2,)創(chuàng)建窗口,CreateWindowEx,3,)在桌面顯示窗口,ShowWindow,4,)更新窗口客戶區(qū),UpdateWindow,5,)進入無限的消息獲取和處理的循環(huán)。首先是獲取消息,GetMessage,,如果有消息到達,則將消息分派到回調(diào)函數(shù)處理,DispatchMessage,,如果是,WM_QUIT,,則,GetMessage,函數(shù)返回,FALSE,,整個消息循環(huán)結(jié)束。消息的具體處理過程在,MainWndProc,函數(shù)中進行。,顯示一個窗口的具體步驟,1,)注冊窗口類,RegisterClassEx,2,)創(chuàng)建窗口,CreateWindowEx,3,)在桌面顯示窗口,ShowWindow,4,)更新窗口客戶區(qū),UpdateWindow,5,)進入無限的消息獲取和處理的循環(huán)。首先是獲取消息,GetMessage,,如果有消息到達,則將消息分派到回調(diào)函數(shù)處理,DispatchMessage,,如果是,WM_QUIT,,則,GetMessage,函數(shù)返回,FALSE,,整個消息循環(huán)結(jié)束。消息的具體處理過程在,MainWndProc,函數(shù)中進行。,顯示一個窗口的具體步驟,typedef struct tagMSG,HWND,hwnd;,/,消息要發(fā)送的窗口句柄,UINT,message;/,消息標識符,以,WM_,開頭的預定義

    注意事項

    本文(windows程序設計004)為本站會員(dfg****19)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

    溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




    關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

    備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>