日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【MFC】CFrameWnd类详解

發(fā)布時間:2024/4/24 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MFC】CFrameWnd类详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 概述
    • 02. 數(shù)據(jù)成員
    • 03. 成員方法
    • 04. 命令處理
    • 05. 附錄

01. 概述

CFrameWnd類提供Windows單文檔界面重疊或彈出式框架窗口,以及管理窗口的成員。

CObject └CCmdTarget └CWnd └CFrameWnd

要為應(yīng)用構(gòu)造有用的框架窗口,可從CFrameWnd中派生類。向派生類加入成員變量,以便存儲指定給應(yīng)用的數(shù)據(jù)。在派生類中實現(xiàn)消息處理成員函數(shù)和消息映射,指定當(dāng)消息指向窗口時的動作。

  • 用Create直接構(gòu)造。
  • 用LoadFrame直接構(gòu)造。
  • 用文檔模板間接構(gòu)造。

當(dāng)調(diào)用Create和LoadFrame時,必須在堆中構(gòu)造一個框架窗口(使用C++ New操作)。調(diào)用Create之前,也可以用AfxRegisteerWndClass全局函數(shù)登記一個窗口類來設(shè)置框架的圖表和類風(fēng)格。
使用Create成員函數(shù)傳遞框架構(gòu)造參數(shù)作為立即參數(shù)。

LoadFrame需要比Create少的參數(shù),而從資源中獲取大多數(shù)缺省值,例如框架標(biāo)題,圖標(biāo)、加速表、菜單。為了能被LoadFrame訪問,所有的資源必須有相同的ID(例如,IDR_MAINFRAME)。

當(dāng)一個CFrameWnd對象包含視圖和文檔時,它們由框架間接構(gòu)造而不是直接由程序員直接構(gòu)造。CDocTemplate對象將框架構(gòu)造、包含視圖的構(gòu)造、視圖與文檔相連接等混在一起。CDocTemplate構(gòu)造函數(shù)的參數(shù)指定了三種類(文檔、框架、視圖)的CRuntimeClass。當(dāng)用戶指定新框架時(例如,使用File New命令或MDI Windows New 命令),CRuntimeclass對象被框架用于動態(tài)建立新的框架。

一個從CFrameWnd中派生出的框架窗口類必須由DECLARE_DYNCREATE聲明以使上面的RUNTIME_CLASS機制正確運行。
CFrameWnd包含缺省實現(xiàn),用來執(zhí)行Windows典型應(yīng)用的主窗口的以下功能:

  • 一個CFrameWnd框架窗口追蹤一個與Windows活動窗口無關(guān)的窗口或當(dāng)前輸入焦點。當(dāng)框架再次被激活時,活動視圖通過CView::OnActivateView得到通知。
  • 命令消息和一些常用框架通知消息由一個CFrameWnd框架發(fā)送到當(dāng)前活動視圖,包括CWnd中由OnSetFocus,OnHScroll,OnVScroll管理的消息。
  • 當(dāng)前活動窗口(或在MDI框架中當(dāng)前活動的MDI子框架窗口)可以判斷框架窗口的標(biāo)題,這種特征可以由關(guān)閉框架窗口的FMS_ADDTOTITLE風(fēng)格位使之無效。
  • CFrameWnd框架窗口管理控件條、視圖、框架窗口用戶區(qū)的其它子窗口的位置。一個框架窗口也更新工具條和其它控件條按鈕。CFrameWnd框架窗口也有缺省命令功能來打開和關(guān)閉工具條和狀態(tài)條。
  • CFrameWnd框架窗口管理主菜單條。當(dāng)一個彈出式菜單條顯示時,框架
    窗口使用UPDATE_COMMAND_UI機制來決定哪一菜單項目可用、無效、復(fù)選。當(dāng)用戶選擇了菜單項目時,框架窗口用那個命令的消息字符串更新狀態(tài)條。
  • CFrameWnd框架窗口有可選的加速器表格來自動譯出鍵盤加速器。
  • CFrameWnd框架窗口有一個與LoadFrame一起設(shè)置的可選幫助ID,用于上下文敏感幫助。一個框架窗口是一個象上下文敏感幫助(SHIFT+F1)和打印預(yù)覽模式那樣的半模態(tài)的樂隊。
  • CFrameWnd框架窗口可以打開一個從文件管理器拖出的文件并放置在框架窗口上。如果一個文件擴展名被登記并與應(yīng)用有關(guān),框架窗口應(yīng)對動態(tài)數(shù)據(jù)交換(DDE)開放請求作出應(yīng)答,此請求在用戶從文件管理器中打開一個文件或調(diào)用ShellExecute函數(shù)時發(fā)生。
  • 如果框架窗口是應(yīng)用的主窗口(即CWinThread::m_pMainWnd),當(dāng)用戶關(guān)閉應(yīng)用時,框架窗口讓用戶存儲改變過的文檔(用OnClose和OnQueryEndSession)。
  • 如果框架窗口是應(yīng)用的主窗口,框架窗口是運行WinHelp的上下文。關(guān)閉框架窗口時,如果它是為應(yīng)用提供幫助,則會關(guān)閉WINHELP.EXE。

不要使用C++ delete操作析構(gòu)一個框架窗口,而應(yīng)該用CWnd::DestroyWindow。CFrameWnd實現(xiàn)的PostNcDestroy會在窗體被析構(gòu)時刪除C++對象。當(dāng)用戶關(guān)閉框架窗口時,缺省OnClose處理會調(diào)用DestroyWindow。

要了解有關(guān)CFrameWnd的更多信息,可參閱聯(lián)機文檔“Visual C++程序員指南”中的“框架窗口主題”。

#include <afxwin.h> 參閱: CWnd, CMDIFrameWnd, CMIDChildWnd, CView, CDocTemplate, CRuntimeClass

02. 數(shù)據(jù)成員

數(shù)據(jù)成員 m_bAutoMenuEnable 自動控制使菜單項目可用或無效 rectDefault 當(dāng)構(gòu)造一個CFrameWnd對象時傳遞此靜態(tài)CRect作為參數(shù),使Windows選擇窗體的初始大小和位置

03. 成員方法

構(gòu)造函數(shù) CFrameWnd 構(gòu)造一個CFrameWnd對象 初始化 Create 調(diào)用以構(gòu)造和初始化一個與CFrameWnd對象有關(guān)的Windows框架窗口 LoadFrame 調(diào)用以從資源信息中動態(tài)構(gòu)造一個框架窗口 LoadAccelTable 裝入一個加速器表格 LoadBarState 復(fù)位控件條設(shè)置 SaveBarState 存儲控件條設(shè)置 ShowControlBar 顯示控件條 SetDockState 在主窗口中停靠框架窗口 GetDockState 獲取框架窗口的停靠狀態(tài) 操作 ActivateFrame 使框架對用戶可視并可用 InitialUpdateFrame在 調(diào)用的框架窗中使OnInitialUpdate成員函數(shù)屬于所有視圖 GetActiveFrame 返回活動CFrameWnd對象 SetActiveView 設(shè)置活動CView對象 GetActiveView 返回活動CView對象 CreateView 在框架中構(gòu)造一個非CView派生的視圖 GetActiveDocument 返回活動CDowment對象 GetControlBar 返回控件條 GetMessageString 獲得與命令I(lǐng)D相符的消息 IsTracking 確定分隔條是否正在移動 SetMessageText 設(shè)置標(biāo)準(zhǔn)狀態(tài)條的文本 EnableDocking 允許一個控件條停靠 DockControlBar 停靠一個控件條 FloatControlBar 浮動一個控件條 BeginModalState 將框架窗口設(shè)置為模態(tài) EndModalState 結(jié)束框架窗口的模態(tài)狀態(tài),用BeginModalState使無效的窗口可用 InModalState 返回一個表明框架窗口是否處于模態(tài)狀態(tài) ShowOwnedWindows 顯示所有CFrameWnd對象的后代窗口 RecalcLayout 重新設(shè)置CFrameWnd對象的控件條的位置 可重載函數(shù) OnCreateClient 為框架構(gòu)造一個用戶窗口 OnSetPreviewMode 設(shè)置應(yīng)用的主框架成為或退出預(yù)打印模式 GetMessageBar 返回一個屬于框架窗口的狀態(tài)條指針 NegotiateBorderSpace 調(diào)整框架窗口中的邊框空白

04. 命令處理

命令處理 OnContextHelp 處理相應(yīng)項的SHIFT+F1幫助

05. 附錄

5.1 官方參考文檔

網(wǎng)址:https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cframewnd-class?view=msvc-160

總結(jié)

以上是生活随笔為你收集整理的【MFC】CFrameWnd类详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。