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

正文內(nèi)容

實(shí)踐教程第三章第二版-文庫吧資料

2025-01-27 23:38本頁面
  

【正文】 。列表框中列出了當(dāng)前工程中已存在的 ID,可為已有命令提供可視化的快捷操作方式。 工具欄資源由一組按鈕組成,每個按鈕是一個 16色位圖圖標(biāo),工具欄編輯器提供一個簡單的位圖編輯器 ,點(diǎn)擊某個圖標(biāo)即可編輯它。工具欄為菜單命令提供可視化的快捷操作方式,模擬大部分的菜單行為。在 Class Name列表框中選擇要響應(yīng)菜單命令的類名,在 Object IDs列表框中選擇菜單 ID,在 Message列表框中選擇 COMMAND或UPDATE_COMMAND_UI,然后按 Add Function 按鈕,彈出 AddMember Function對話框,可以修改函數(shù)名或接受缺省函數(shù)名,按 OK結(jié)束這個對話框,然后在 ClassWizard對話框中按 Edit Code按鈕,直接跳至新增函數(shù)的定義處。 3. 菜單消息的處理 定義好菜單項(xiàng)及其 ID后,為菜單命令添加響應(yīng)函數(shù),實(shí)現(xiàn)方法是借助 ClassWizard,在需要響應(yīng)菜單命令的類的消息映射表中增加一個入口,即定義一個命令消息 ON_COMMAND宏。如希望根據(jù)程序的執(zhí)行狀態(tài),激活或禁用某些菜單項(xiàng),設(shè)置選中標(biāo)記,或更改菜單項(xiàng)文字等,就要定義這一消息處理函數(shù)。 MFC程序可以處理兩種菜單消息 WM_COMMAND為菜單命令消息 ,當(dāng)選擇菜單項(xiàng)、工具欄按鈕或加速鍵之一會發(fā)出菜單命令消息, MFC依據(jù)一定的消息傳遞途徑將消息傳遞給相應(yīng)的處理函數(shù)進(jìn)行處理,如果在消息傳遞途徑的消息映射表中找不到相應(yīng)的處理函數(shù),該菜單項(xiàng)或按鈕會被禁止使用。 圖 菜單項(xiàng)設(shè)置 返回 定義菜單項(xiàng) 返回創(chuàng)建菜單加速鍵 選項(xiàng) 含義 ID 表示該菜單項(xiàng)的 ID值 Caption 表示該菜單項(xiàng)顯示的文本 Separator 表示該菜單項(xiàng)是一條分隔線 Checked 表示該菜單項(xiàng)被選中顯示一個標(biāo)志 Popup 選擇該菜單項(xiàng)顯示一個子菜單 選項(xiàng) 含義 Grayed 該菜單項(xiàng)變灰顯示,被禁止 Inactive 該菜單項(xiàng)不被激活 Help Help菜單,通常放在菜單的最右端 Break 選中該菜單項(xiàng)后就退出其所在菜單 Prompt 光標(biāo)移至該菜單項(xiàng)狀態(tài)欄顯示的文本 定義 Ctrl+O為 ID_FILE_OPEN的快捷方式,在 ID編輯框中輸入 ID_FILE_OPEN,在 Key中鍵入 O, 然后選中 Ctrl復(fù)選框即可定義了菜單項(xiàng)的快捷方式。雙擊它打開加速鍵表,在已有加速鍵表后面,有一個空白行,雙擊它打開加速鍵屬性對話框,如 圖 ,選擇某個菜單項(xiàng) ID,在 Key列表框選擇某個虛擬鍵作為菜單命令的快捷方式,或選擇 Next Key Typed按鈕,此后鍵盤輸入的按鍵組合即為菜單命令加速鍵。 在空白菜單項(xiàng)被定義后,該菜單的最下面又出現(xiàn)一個空白菜單項(xiàng),拖動該空白菜單項(xiàng)可在已定義的菜單內(nèi)任何位置插入新菜單項(xiàng)或新子菜單。 b) 增加一個子菜單 若在定義菜單項(xiàng)時選中 Popup選項(xiàng),則在該菜單項(xiàng)右邊出現(xiàn)一個三角形符號,同時右邊出現(xiàn)一個新的菜單,再定義這個菜單。F)”。符號,則菜單名該字符下顯示一個下畫線,可用 Alt加該字符作為選擇菜單的快捷方式。 a) 增加一個頂層菜單 在菜單屬性對話框中,選中 Popup選項(xiàng),可以定義一個頂層菜單,在 Caption編輯框中輸入菜單名,菜單名即顯示在菜單上。在 Resource View頁面,打開工程資源,選擇 Menu,然后雙擊主菜單資源IDR_MAINFRAME標(biāo)示,可打開菜單編輯器。 用戶定義的資源標(biāo)識符號常量定義在。 資源腳本文件中定義了各種資源的相關(guān)數(shù)據(jù) , Windows通過使用不同的資源標(biāo)識符前綴來區(qū)分不同資源類型 (如 表 所示 ) , 這樣做雖然不是必須的 , 但遵循這樣的規(guī)則 有利于提高程序的通用性和可讀性 。 資源定義在資源腳本 ( resource scirpt) 文件中 。 圖 例 資源是 windows應(yīng)用程序的一種特殊數(shù)據(jù) , 包括菜單 、 加速鍵 、光標(biāo) 、 位圖 、 圖標(biāo) 、 對話框 、 字符串 、 工具欄 、 狀態(tài)欄等 ,資源一般放在 exe或 DLL文件中 。 在文檔類構(gòu)造函數(shù)中對新增加的變量進(jìn)行初始化 。 圖 ClassView 圖 FileView (3).為文檔類增加數(shù)據(jù)成員。 文檔、視圖及應(yīng)用程序類名都以工程名開頭,后接對應(yīng)的類型名,這有助于在程序中有多個文檔視圖類時區(qū)分主視圖與其它視圖,區(qū)分主文檔與其它文檔類。 CEx3_1View 派生自 CView, 視圖類 。 CEx3_1App 派生自 CWinApp, 其全局對象 theApp 代表應(yīng)用程序本身 。 圖 New Project對話框 圖 AppWizard Step1 在 VC集成開發(fā)環(huán)境中看到 , 新工程生成了五個類 ,如 圖 在 class view頁面上可看到這些類 。 (2).在 AppWizard Step 1中,如圖 ,選擇 Single Document單 選按鈕,并選中 Document/ View architechure Support復(fù)選框, 表示使用文檔 /視圖結(jié)構(gòu),按 Finish按鈕。 1) 使用 AppWzard,根據(jù)實(shí)際需要,選擇創(chuàng)建合適的應(yīng)用程序框架 (是否使用文檔 /視圖結(jié)構(gòu),使用SDI或 MDI等 ) 2) 在文檔類中添加程序所處理的數(shù)據(jù),作為文檔類數(shù)據(jù)成員; 3) 在視圖類中取得文檔數(shù)據(jù),以合適的方式在窗口中顯示出來 例 3_1:創(chuàng)建一個包含文檔 /視圖結(jié)構(gòu)單文檔界面應(yīng)用的實(shí)例,為文檔類添加一個字符串?dāng)?shù)據(jù),在視圖窗口顯示出來。 對于 MDI應(yīng)用,使用 CMultiDocTemplate文檔模板。 在大多數(shù)情況下,程序不需要對這個類進(jìn)行修改。 2) 視圖類的成員函數(shù)訪問與其關(guān)聯(lián)的文檔類的方式 CDocTemplate類將框架、視圖、文檔對象及應(yīng)用 程序的資源捆綁在一起。 通過 GetDocument獲得與視圖關(guān)聯(lián)的文檔類指針,通過指針pDoc訪問文檔類的數(shù)據(jù)成員和函數(shù)成員,在視圖(窗口)中顯示文檔對象,當(dāng)用戶通過視圖改變文檔數(shù)據(jù)時,可設(shè)置自動更新文檔內(nèi)容。 1)視圖類實(shí)現(xiàn)特定視圖的特性的虛函數(shù) √GetDocument 返回指向相關(guān)聯(lián)文檔對象的指針 √OnDraw 支持打印、打印預(yù)覽和在屏幕上顯示,由 OnPaint(重畫 ), OnPrint(打印 )調(diào)用 √OnInitialUpdate 當(dāng)視圖第一次與文檔關(guān)聯(lián)時被調(diào)用,重定義這個函數(shù)對重新讀入或新創(chuàng)建文檔的視圖進(jìn)行初始化 √OnUpdate 當(dāng)文檔內(nèi)容發(fā)生變化,視圖需要更新時被調(diào)用,更新整個視圖。 CView的派生類可以多種方式顯示文檔類的信息,每個視圖類根據(jù)顯示的方式各自定義其顯示代碼。重定義這個函數(shù)在文檔關(guān)閉之前釋放文檔所占用的內(nèi)存和資源 √Serialize 由應(yīng)用程序框架調(diào)用對文檔進(jìn)行序列化,重定義這個函數(shù)實(shí)現(xiàn)特定文檔的序列化,以保存或讀入文檔數(shù)據(jù) 視圖類對象代表了應(yīng)用程序的窗口客戶區(qū) , 是文檔信息的一個顯示窗口 (視口 ), 它同時也是用戶與程序之間信息交互的橋梁 , 用戶對數(shù)據(jù)的編輯和修改需要通過鍵盤或鼠標(biāo)進(jìn)行 , 這些消息都由視圖類接受后再反映到文檔類 。重定義這個函數(shù)實(shí)現(xiàn)在新文檔創(chuàng)建之前初始化文檔對象,如為指針申請內(nèi)存空間 √OnOpenDocument 當(dāng)從磁盤讀入文檔時由應(yīng)用程序框架調(diào)用。 文檔類允許向其中增加 數(shù)據(jù)成員 , 應(yīng)用程序的數(shù)據(jù)可以是任何類型的 , 或者是任何自定義的數(shù)據(jù)結(jié)構(gòu) , 如結(jié)構(gòu)體 , 類或鏈表等 。 注 /視圖結(jié)構(gòu) 在基于文檔 /視圖結(jié)構(gòu)的應(yīng)用程序中,CDocument的派生對象負(fù)責(zé)讀入、保存和管理應(yīng)用程序的數(shù)據(jù)。 注 例如 , 當(dāng)用戶在視圖窗口中按下鼠標(biāo)左鍵時 , Windows發(fā)送WM_LBUTTONDOWN消息到應(yīng)用程序 , 假設(shè)視圖類需要響應(yīng)這些消息 , 在類的頭文件 (.h)中有 函數(shù) 聲明和 消息映射表 的聲明: Class CMyView: public CView { … afx_msg void OnLButtonDown(UINT nFlags,CPoint point)。 詳見第 2章 。 程序中類響應(yīng) windows消息的優(yōu)先順序: 取決于消息傳遞的順序 。當(dāng)某個事件發(fā)生后,系統(tǒng)向應(yīng)用程序消息隊列放入一個消息,CWinApp對象取得消息并按照消息映射表的定義將消息派送到某個類的相應(yīng)的消息處理函數(shù)進(jìn)行處理。 (3).對控件消息的響應(yīng) 控件消息由按鈕 (BN_)、編輯框 (EN_)、組合框(CBN_)、列表框 (LBN_)等產(chǎn)生,在消息名前加上ON_即構(gòu)成宏名, 舉例如下: ON_BN_CLICKED (按鈕 ID,響應(yīng)函數(shù) ) ON_CBN_DBCLK (組合框 ID,響應(yīng)函數(shù) ) ON_EN_SETFOCUS (組合框 ID,響應(yīng)函數(shù) ) ON_LBN_DBCLK (列表框 ID,響應(yīng)函數(shù) ) 分別表示選擇各個控件后,產(chǎn)生的消息由其后面定義 的函數(shù)進(jìn)行處理。 例如 消息宏: (1).對標(biāo)準(zhǔn) Windows消息的響應(yīng) 消息宏 ON_WM_XXX定義對標(biāo)準(zhǔn) Windows消息 WM_XXX的響應(yīng),所有派生自 CWnd的類均可響應(yīng)這類消息,系統(tǒng)默認(rèn)的響應(yīng)函數(shù)為 OnXxx,對應(yīng)關(guān)系見下面的表 : 宏名 消息 默認(rèn)處理函數(shù) ON_WM_CHAR WM_CHAR OnChar ON_WM_ CLOSE WM_ CLOSE OnClose ON_WM_CREATE WM_ CREATE OnCreate ON_WM_LBUTTONDOWN WM_ LBUTTONDOWN OnLButtonDown ON_WM_LBUTTONUP WM_ LBUTTONUP OnLButtonUp ON_ WM_MOUSEMOVE WM_ MOUSEMOVE OnMouseMove 由于有系統(tǒng)默認(rèn)的消息和處理函數(shù),在消息映射表中只寫宏名,如: ON_WM_CREATE() (2).對命令消息的的響應(yīng) 。 定義和使用消息映射表的步驟: ① 在頭文件的類聲明中添加DECLARE_MESSAGE_MAP宏聲明消息映射 。 消息映射將消息與應(yīng)用程序提供的處理該消息的成員函數(shù)聯(lián)系在一起,一組消息映射構(gòu)成消息映射表。 消息映射表: 消息是 Windows用來通知 MFC應(yīng)用程序事件發(fā)生的主要方式,應(yīng)用程序的行為取決于對消息的響應(yīng)方式。 (4).MFC應(yīng)用程序中看不到 WinMain()入口函數(shù),它被 封裝在應(yīng)用程序框架里,運(yùn)行時自動調(diào)用; 消息映射 (Message Map)機(jī)制 : 消息映射機(jī)制規(guī)定每個要響應(yīng)消息的類定義自己的消息映射表,將消息與處理消息的函數(shù)聯(lián)系在一起;當(dāng)事件發(fā)生產(chǎn)生消息時,在程序中各個類的消息映射表中查找,當(dāng)找到消息處理函數(shù)時,便將消息送至對應(yīng)的消息處理函數(shù)進(jìn)行處理。 幾點(diǎn)解釋: (1).每個 MFC應(yīng)用都有 ,由應(yīng)用程序向?qū)ё詣由桑? (2).每個 MFC應(yīng)用都應(yīng)包含頭文件 ,其內(nèi)部又包含了其他頭文件。 …}D e f W i n d o w P r o c ( )A f x W n d P r o c ( )圖 MFC應(yīng)用程序的執(zhí)行過程 WinMain中,通過 afxGetApp()獲得全局對象的指針pApp,調(diào)用全局函數(shù) AfxWinInit() ,為 CWinApp的成員 變量 m_hInstance, m_hPrevInstance, m_lpCmdLine, m_nCmdShow賦初值; 然后調(diào)用 pAppInitApplication() ,這是 CWinApp的虛函數(shù),一般不需要改寫; 調(diào)用 pAppInitInstance() ,每個程序都必需改寫這個函數(shù),進(jìn)行應(yīng)用程序初始化; InitInstance()函數(shù)中,先用 new構(gòu)造一個CFrameWnd派生類對象,其構(gòu)造函數(shù)又調(diào)用 Create(),創(chuàng)建主窗口, MFC依此自動為應(yīng)用程序注冊窗口類; 調(diào)用 ShowWindow()顯示窗口,調(diào)用 UpdateWindow(),發(fā)出 WM_PAINT消息; WinMain中,調(diào)用 pAppRun,進(jìn)入消息循環(huán),通過API函數(shù) GetMessage()獲得消息, TranslateMessage()處理消息, DispatchMessage()派送消息到CWnd::DefWindowProc() , DefWindowProc()按照消息映射表的定義將消息分發(fā)到各相應(yīng)消息處理函數(shù); 如消息隊列為空,則 Run調(diào)用 CWinApp::OnIdle()進(jìn)行空閑處
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1