freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第4章mfc基本應(yīng)用程序的建立-資料下載頁

2024-10-17 13:15本頁面

【導(dǎo)讀】[例Ex_HelloMsg]一個(gè)簡單的Windows應(yīng)用程序。{MessageBox(NULL,"你好,我的VisualC++世界!單擊Projects,選中Win32Application項(xiàng)。在ProjectName框中鍵入項(xiàng)目名稱Ex_HelloMsg。在Location下的編輯框中。直接鍵入文件夾名稱,或單擊Browse按鈕(...)選擇一個(gè)已有的文件夾。單擊[Finish],單擊[OK]系統(tǒng)將自動。單擊File標(biāo)簽,在左邊的列表框中選擇C++Source. File項(xiàng),在右邊的File框中鍵入,單擊[OK]。輸入上面的代碼,運(yùn)行程序,如圖。傳統(tǒng)的DOS程序以main函數(shù)作為進(jìn)入程序的初始入口點(diǎn),但在Windows應(yīng)。句柄是一個(gè)標(biāo)識Windows資源和設(shè)備等對象的變量,或者是一個(gè)對操作系統(tǒng)資源的間接引用。每一個(gè)Windows應(yīng)用程序都需要,它還包含了其他的一些。這些頭文件定義了Windows的所有數(shù)據(jù)類型、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)和符號常量。序接口)函數(shù),用來彈出一個(gè)對話框窗口,顯示短信息。用來指定父窗口句柄,即對話框所在的窗口句柄。調(diào)用相關(guān)API函數(shù)創(chuàng)建和顯示窗口,并進(jìn)行必要的初始化。創(chuàng)建已注冊窗口類的窗口。類就是充當(dāng)這些屬性的模板。如果接收到WM_QUIT消息,則退出應(yīng)用程序

  

【正文】 View,而在 Messages列表中選定 WM_LBUTTOMDOWN消息。 (4)雙擊 Messages列表中的 WM_LBUTTOMDOWN消息或單擊 [Add Function]按鈕,都會在 CEx_SDIHelloView類中添加該消息的映射函數(shù)OnLButtonDown,同時(shí)在 Member funcions列表中顯示這一消息映射函數(shù)和被映射的消息,如圖。 圖 映射 WM_LBUTTONDOWN消息 ClassWizard (5)單擊 [Edit Code],轉(zhuǎn)向文檔窗口,定位到 OnLButtonDown源代碼處。 (6)添加下列代碼: void CEx_SDIHelloView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default MessageBox (你好,我的 Visual C++世界! , 問候 , 0) 。 CView::OnLButtonDown(nFlags, point)。 } (7)程序運(yùn)行后,在窗口客戶區(qū)左擊,彈出一個(gè)消息對話框。 查看 CEx_SDIHelloView程序代碼,可以發(fā)現(xiàn): ClassWizard為WM_LBUTTOMDOWN的消息映射作了以下三個(gè)方面內(nèi)容的安排: ? 在頭文件 OnLButtonDown: protected: //{{AFX_MSG(CEx_SDIHelloView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point)。 //}}AFX_MSG DECLARE_MESSAGE_MAP() ClassWizard 在 ,添加映射宏: BEGIN_MESSAGE_MAP(CEx_SDIHelloView, CView) // 消息映射開始 //{{AFX_MSG_MAP(CEx_SDIHelloView) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP … END_MESSAGE_MAP() // 消息映射結(jié)束 在 ,框架: void CEx_SDIHelloView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CView::OnLButtonDown(nFlags, point)。 } 根據(jù) ClassWizard產(chǎn)生的上述消息映射過程,可以手動添加一些 ClassWizard不支持的消息映射函數(shù),以完成特定的功能。 ? 鼠標(biāo)和鍵盤消息各自都有相應(yīng)的消息處理宏和預(yù)定義消息處理函數(shù),因此消息映射函數(shù)名稱不再需要用戶重新定義。對于菜單和按鈕等命令消息來說,用 ClassWizard映射時(shí)會彈出一個(gè)對話框,用來指定消息映射函數(shù)的名稱。 ? 若指定的消息映射函數(shù)需要?jiǎng)h除,則需要先在 ClassWizard對話框的Messages列表中選定要?jiǎng)h除的消息映射函數(shù),然后單擊 [Delete Function]按鈕,最后關(guān)閉 ClassWizard對話框,并在該消息映射函數(shù)所在的類實(shí)現(xiàn)文件(.cpp)中將映射函數(shù)定義的代碼全部刪除。 ClassWizard ? 鍵盤和鼠標(biāo)消息 ? 按下一個(gè)鍵或組合鍵時(shí),將 WM_KEYDOWN或 WM_SYSKEYDOWN放入具有輸入焦點(diǎn)的應(yīng)用程序窗口的消息隊(duì)列中。鍵被釋放時(shí),把 WM_KEYUP或WM_SYSKEYUP消息放入消息隊(duì)列中。對字符鍵,會在這兩個(gè)消息之間產(chǎn)生WM_CHAR消息。, ? ClassWizard能自動添加了當(dāng)前類的 WM_KEYDOWN和 WM_KEYUP擊鍵消息處理函數(shù)的調(diào)用,它們具有下列函數(shù)原型: afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )。 afx_msg void OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags )。 afx_msg是 MFC用于定義消息函數(shù)的標(biāo)志,參數(shù) nChar表示虛擬鍵代碼,nRepCnt表示當(dāng)用戶按住一個(gè)鍵時(shí)的重復(fù)計(jì)數(shù), nFlags表示擊鍵消息標(biāo)志。 虛擬鍵代碼指與設(shè)備無關(guān)的鍵盤編碼。最常用的虛擬鍵代碼已被定義在。 ? MFC中的 ClassWizard也提供相應(yīng)的字符消息處理框架,并自動添加了當(dāng)前類的 WM_CHAR消息處理函數(shù)調(diào)用,它具有下列函數(shù)原型: afx_msg void OnChar( UINT nChar, UINT nRepCnt, UINT nFlags )。 nChar表示鍵的 ASCII碼, nRepCnt表示當(dāng)用戶按住一個(gè)鍵時(shí)的重復(fù)計(jì)數(shù),nFlags表示字符消息標(biāo)志。 ? 對鼠標(biāo)進(jìn)行操作時(shí)會產(chǎn)生對應(yīng)的消息。通常,只將鍵盤消息發(fā)送給具有輸入焦點(diǎn)的窗口,但鼠標(biāo)消息不受這種限制。只要鼠標(biāo)移過窗口的客戶區(qū)時(shí),就會向該窗口發(fā)送 WM_MOUSEMOVE(移動鼠標(biāo) )消息。 ClassWizard 這里的客戶區(qū)是指窗口中用于輸出文檔的區(qū)域。在窗口的客戶區(qū)中按下或釋放一個(gè)鼠標(biāo)鍵時(shí),還會產(chǎn)生如表所示的消息。 ClassWizard會將映射成類似 afx_msg void OnXXXX的消息處理函數(shù),原型: afx_msg void OnXXXX( UINT nFlags, CPoint point )。 point表示鼠標(biāo)光標(biāo)在屏幕的 (x,y)坐標(biāo); nFlags表示鼠標(biāo)按鈕和鍵盤組合情況,它可以是下列值的組合 (MK前綴表示 “ 鼠標(biāo)鍵 ” ): ? MK_CONTROL —— 鍵盤上的 Ctrl鍵被按下 ? MK_LBUTTON —— 鼠標(biāo)左按鈕被按下 ? MK_MBUTTON —— 鼠標(biāo)中按鈕被按下 ? MK_RBUTTON —— 鼠標(biāo)右按鈕被按下 ? MK_SHIFT —— 鍵盤上的 Shift鍵被按下 想知道某個(gè)鍵被按下,可用對應(yīng)的標(biāo)識與 nFlags進(jìn)行邏輯 “ 與 ” (amp。)運(yùn)算,所得結(jié)果若為 TRUE(非 0)時(shí),則表示該鍵被按下。 ClassWizard ? 映射計(jì)時(shí)器消息 有一種常用的輸入設(shè)備就是計(jì)時(shí)器,它周期性地按一定的時(shí)間間隔向應(yīng)用程序發(fā)送 WM_TIMER消息。由于它能實(shí)現(xiàn) “ 實(shí)時(shí)更新 ” 以及 “ 后臺運(yùn)行 ”等功能,因而在應(yīng)用程序中計(jì)時(shí)器是一個(gè)難得的程序方法。 應(yīng)用程序是通過 CWnd的 SetTimer函數(shù)來設(shè)置并啟動計(jì)時(shí)器的,函數(shù)原型: UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) )。 ? nIDEvent指定該計(jì)時(shí)器的標(biāo)識值 (不能為 0),應(yīng)用程序需要多個(gè)計(jì)時(shí)器時(shí)可多次調(diào)用該函數(shù),但每一個(gè)計(jì)時(shí)器的標(biāo)識值應(yīng)是唯一的,各不相同 ? nElapse表示計(jì)時(shí)器的時(shí)間間隔 (單位為毫秒 ), lpfnTimer是一個(gè)回調(diào)函數(shù)的指針,該函數(shù)由應(yīng)用程序來定義,用來處理計(jì)時(shí)器 WM_TIMER消息。一般情況下該參數(shù)為 NULL,此時(shí) WM_TIMER消息被放入到應(yīng)用程序消息隊(duì)列中供 CWnd對象處理。 ? SetTimer函數(shù)成功調(diào)用后返回新計(jì)時(shí)器的標(biāo)識值。應(yīng)用程序不再使用計(jì)時(shí)器時(shí),調(diào)用 CWnd:: KillTimer函數(shù)來停止 WM_TIMER消息的傳送,原型: BOOL KillTimer( int nIDEvent )。 nIDEvent和用戶調(diào)用 SetTimer函數(shù)設(shè)置的計(jì)時(shí)器標(biāo)識值是一致的。 對于 WM_TIMER消息, ClassWizard會將其映射成具有下列消息處理函數(shù): afx_msg void OnTimer( UINT nIDEvent )。 ClassWizard ? 其他窗口消息的映射 系統(tǒng)中,除了用戶輸入產(chǎn)生的消息外,還有許多系統(tǒng)根據(jù)應(yīng)用程序的狀態(tài)和運(yùn)行過程產(chǎn)生的消息,有時(shí)也需要用戶進(jìn)行處理。 (1)WM_CREATE消息 窗口對象創(chuàng)建后,向視圖發(fā)送的第一個(gè)消息;如果用戶有什么工作需要在初始化時(shí)處理,就可在該消息處理函數(shù)中加入所需代碼。由于 WM_CREATE消息發(fā)送時(shí),窗口對象還未完成,窗口還不可見,因此在該消息處理函數(shù)OnCreate內(nèi),不能調(diào)用那些依賴于窗口處于完成激活狀態(tài)的函數(shù)。(2)WM_CLOSE或 WM_DESTROY消息 從系統(tǒng)菜單中關(guān)閉窗口或者父窗口被關(guān)閉時(shí),都會發(fā)送 WM_CLOSE消息;而 WM_DESTROY消息是在窗口從屏幕消失后發(fā)送的,因此它緊隨WM_CLOSE之后。 (3)WM_PAINT消息 當(dāng)窗口的大小發(fā)生變化、窗口內(nèi)容發(fā)生變化、窗口間的層疊關(guān)系發(fā)生變化或調(diào)用函數(shù) UpdateWindow或 RedrawWindow時(shí),系統(tǒng)都將產(chǎn)生 WM_PAINT消息,表示要重新繪制窗口的內(nèi)容。該消息處理函數(shù)的原型是; afx_msg void OnPaint()。 用 ClassWizard映射該消息的目的是執(zhí)行自己的圖形繪制代碼。 ClassWizard 用 MFC ClassWizard給項(xiàng)目添加一個(gè)類通常是按下列步驟進(jìn)行的: (1)按快捷鍵 Ctrl+W啟動 MFC ClassWizard對話框。單擊 [Add Class],選擇New命令,如圖所示的 New Class對話框。 圖 New Class對話框 ClassWizard (2)對話框中, Name框是用來輸入用戶定義的類名,注意要以 “ C”字母打頭,以保持與 MFC標(biāo)識符命名規(guī)則一致; File Name是該類的源代碼文件名,單擊 [Change]按鈕可改變源文件名稱及其在磁盤中的位置; Base class框用來指定該類的基類; Dialog ID框是當(dāng)選擇 CDialog作為基類時(shí)指定對話框的資源 ID號。最下面的 Automation是用來設(shè)置對自動化的支持。 (3)單擊 [OK]按鈕,一個(gè)新類就會自動添加到項(xiàng)目中。 而當(dāng)添加的類需要?jiǎng)h除時(shí),則需要按下列步驟進(jìn)行: (1)將 Visual C++ 。 (2)將項(xiàng)目工作區(qū)窗口切換到 FileView頁面,展開 Source Files和 Header Files結(jié)點(diǎn),分別選定要?jiǎng)h除類的對應(yīng) .h和 .cpp文件,按下 Delete鍵,刪除這兩個(gè)文件。 (3)選擇 “ File”?“Close Workspace”菜單命令,關(guān)閉項(xiàng)目。 (4)從實(shí)際的文件夾中刪除對應(yīng)的 .h和 .cpp文件與 .clw文件。 需要注意的是,當(dāng)下一次打開 MFC ClassWizard對話框時(shí),就會彈出 Select Source Files對話框,這時(shí)只要單擊右下的 [Add All]按鈕即可。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1