亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mfc教程14_ mfc工具條和狀態欄.htm

?? 此文件是將MFC在線教程的14個網頁打包
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0042)http://www.vczx.com/tutorial/mfc/mfc13.php -->
<HTML><HEAD><TITLE>MFC教程_ MFC工具條和狀態欄</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3157" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<OL start=13>
  <P align=justify>
  <LI><A name=_Toc452641006></A><A name=_Toc457299135></A><B>MFC工具條和狀態欄</B> 
  <P></P>
  <OL>
    <P align=justify>
    <LI><B><A name=_Toc452641007></A><A name=_Toc457299136></A>Windows控制窗口</B> 
    <P></P></LI></OL></LI></OL>
<P align=justify>Windows (Windows95或者以上版本) 
提供了系列通用控制窗口,其中包括工具條(ToolBar)、狀態欄(StatusBar)、工具條提示窗口(ToolTip)。</P>
<P 
align=justify>Windows在一個DLL加載時注冊個控制窗口的“窗口類”。例如,工具條的“窗口類”是“ToolbarWindow32”,狀態欄的“窗口類”是“msctls_statusbar32”,工具條提示窗口的“窗口類”是“tooltips_class32”。為了保證該DLL被加載,使用控制“窗口類”前,應該首先調用函數InitCommonControl。MFC在窗口注冊函數AfxDeferRegisterClass中實現了這一點。見2.2.1節MFC下窗口的注冊。</P>
<P 
align=justify>創建通用控制窗口,可以使用專門的創建函數,如創建工具條的函數::CreateToolBarEx,創建狀態欄的函數::CreateStatusBarEx。也可以調用窗口創建函數::CreateWindowEx,但是需要指定預定義的“窗口類”,必要的話還要其他步驟,如使用“ToolbarWindow32”“窗口類”創建工具欄后,還需要在工具欄中添加或者插入按鈕。</P>
<P 
align=justify>一般,通用控制可以指定控制窗口風格(Style)。例如,具備風格CCS_TOP,表示該控制窗口放到父窗口客戶區的頂部,具備CCS_BOTTOM,表示該控制窗口在客戶區的底部。具體的控制窗口類可以有特別的適合于自己的風格,例如,TTS_ALWAYSTIP表示只要光標落在工具欄的按鈕上,ToolTip窗口不論激活與否都會顯示出來。</P>
<P align=justify>每一控制窗口類都有自己的窗口過程來處理自己的窗口消息,實現特定的功能??刂拼翱陬惖拇翱谶^程由Windows提供。</P>
<UL>
  <P align=justify>
  <LI>工具條 
  <P></P></LI></UL>
<P 
align=justify>工具條的窗口過程處理了必要的消息,提供了標準工具條的功能,例如,工具條對客戶化特征提供內在的支持,用戶可以通過一個客戶化對話框來添加、修改、刪除或者重新安排工具條按鈕。這些特征是否可以被用戶所用或者用到什么地步是可以由程序控制的。</P>
<P 
align=justify>工具條的窗口過程將自動設置工具條的尺寸大小和位置,如果指定了控制窗口風格CCS_TOP或者CCS_BOTTOM,則窗口過程把工具條放到父窗口客戶區的頂部或者底部。窗口過程任何時候只要收到WM_SIZE或者TB_AUTOSIZE消息就自動地調整工具條的大小和位置。</P>
<P align=justify>工具條的按鈕被選中后,會產生一個命令消息,它的窗口過程把該消息送給父窗口的窗口過程處理。</P>
<P 
align=justify>工具條中的按鈕并不以子窗口的形式出現,而是以字符或者位圖按鈕的方式顯示,每個按鈕大小相同,缺省是24*22個像素。每個按鈕都有一個索引,索引編號從0開始。每個按鈕包括如下屬性:</P>
<P align=justify>按鈕的字符串索引,位圖索引,風格,狀態,命令ID</P>
<P 
align=justify>按鈕可以有兩種風格TBSTYLE_BUTTON和TBSTYLE_CHECK,前者像一個標準按鈕那樣響應用戶的按擊,后者響應每一次按擊,在按下和跳起兩種狀態之間切換。按鈕響應用戶的動作,給父窗口發送一個包含了該按鈕對應命令ID的命令消息。一般一個按鈕的命令ID對應一個菜單項。</P>
<P 
align=justify>工具條維護兩個列表,分別用來存放工具條按鈕使用的字符串或者位圖,列表中的位圖或者字符串從0開始編號,編號和按鈕的索引相對應。</P>
<P align=justify>工具條可以是Dockable(泊位)或者Floatable(漂浮)的。</P>
<P 
align=justify>工具條可以有TBSTYLE_TOOLTIPS風格,如果具有這種風格,則創建和管理一個Tooltip控制,這是一個小的彈出式窗口,用來顯示描述按鈕的文本,平時該窗口隱藏,當鼠標落到按鈕上面并停留約一秒后才彈出,在鼠標附近顯示。</P>
<P 
align=justify>由于Tooltip窗口平時是隱藏的,所以不能接收鼠標消息來決定何時顯示本窗口。這樣,接收鼠標的窗口必須把鼠標消息送給Tooltip窗口,這是通過給Tooptip窗口發送消息TTM_RELAYEVENT來實現的。</P>
<UL>
  <P align=justify>
  <LI>狀態欄 
  <P></P></LI></UL>
<P align=justify>狀態欄類似于工具條,有自己的窗口過程,可以泊位、漂浮。不過,習慣上狀態欄都位于屏幕底部。每個狀態條分成若干格(Status 
bar panes),每格從0開始編號,編號作為格的索引。每一個格,如同工具條的按鈕一樣,并不是一個Windows窗口。</P>
<OL>
  <OL>
    <P align=justify>
    <LI><A name=_Toc452641008></A><A name=_Toc457299137></A><B>MFC的工具條和狀態欄類</B> 
    <P></P></LI></OL></OL>
<P 
align=justify>MFC使用CToolBarCtrl、CStatusBarCtrl和CToolTipCtrl窗口類分別對工具條、狀態欄、Tooltip控制窗口進行了封裝。</P>
<P 
align=justify>但是,直接使用這些類還不是很方便。MFC提供了CToolBar、CStatusBar來處理狀態欄和工具條,CToolBar、CStatusBar功能更強大,靈活。這兩個類都派生于CControlBar。</P>
<P 
align=justify>在MFC下,建議這些控制條子窗口ID介于AFX_IDW_TOOLBARFIRST(0xE800)和AFX_IDW_CONTROLBAR_LAST(0Xe8FF)之間。這256個ID中,前32個又有其特殊性,用于MFC的打印預覽中。</P>
<P 
align=justify>CControlBar派生于CWnd類,是控制條窗口類的基類,它派生出CToolBar、CStatusBar、CDockBar、CDialogBar、COleResizeBar類。CControlBar實現了以下功能:</P>
<UL>
  <P align=justify>
  <LI>和父窗口(邊框窗口)的頂部或者底部或者其他邊對齊。 
  <P></P>
  <P align=justify></P>
  <LI>可以包含子條目,這些條目或者是基于HWND的子窗口,或者是基于非HWND的條目。負責分配條目數組。 
  <P></P>
  <P align=justify></P>
  <LI>支持CBRS_TOP(缺省,控制條放在頂部),CBRS_BOTTOM(放在底部),CBRS_NOALIGN(父窗口大小變化時不重新放置控制條)等幾種控制風格。 

  <P></P>
  <P align=justify></P>
  <LI>支持派生類的實現。幾個派生類有一定的共性,或者其中兩個有一定的共性,這樣CControlBar實現的函數一部分只適用于某個派生類,一部分適用于兩個或者多個派生類,還有一部分適用于所有的派生類。所謂適用,這里指派生類直接繼承了CControlBar的實現,或者覆蓋了其實現但是建立在擴展其實現的基礎上。類似地,CControlBar的成員變量也不是為所有派生類所共同適用的。 

  <P></P></LI></UL>
<P 
align=justify>CStatusBar和CControlBar一方面建立在CControlBar的基礎之上,另一方面以Windows的通用控制狀態欄和工具條為基礎。它們繼承了CControlBar類的特性,但是所封裝的窗口句柄是相應的Windows控制窗口的句柄,如同CFormView繼承了CSrcollView的視類特性,但是其窗口句柄是無模式對話框窗口句柄一樣。</P>
<P align=justify></P>
<P 
align=justify>典型地,如果在使用AppWizard生成應用程序時,指定了要求工具條和狀態欄的支持,則在主邊框窗口的OnCreate函數中包含一段如下的代碼,用來創建工具條、狀態欄和設置一些特性。</P>
<P align=justify>//創建工具欄</P>
<P align=justify>if (!m_wndToolBar.Create(this) 
||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))</P>
<P align=justify>{</P>
<DIR>
<P align=justify>TRACE0("Failed to create toolbar\n");</P>
<P align=justify>return -1; // fail to create</P></DIR>
<P align=justify>}</P>
<P align=justify>//創建狀態欄</P>
<P align=justify>if (!m_wndStatusBar.Create(this) ||</P>
<DIR>
<P align=justify>!m_wndStatusBar.SetIndicators(indicators, 
sizeof(indicators)/sizeof(UINT)))</P></DIR>
<P align=justify>{</P>
<DIR>
<P align=justify>TRACE0("Failed to create status bar\n");</P>
<P align=justify>return -1; // fail to create</P></DIR>
<P align=justify>}</P>
<P align=justify></P>
<P align=justify>// TODO: Remove this if you don't want tool tips or a 
resizeable toolbar</P>
<P align=justify>//對工具欄設置Tooltip特征</P>
<P align=justify>m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |</P>
<DIR>
<P align=justify>CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);</P>
<P align=justify></P></DIR>
<P align=justify>//使得工具欄可以泊位在邊框窗口</P>
<P align=justify>// TODO: Delete these three lines if you don't want the toolbar 
to</P>
<P align=justify>// be dockable</P>
<P align=justify>m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);</P>
<P align=justify>EnableDocking(CBRS_ALIGN_ANY);</P>
<P align=justify>DockControlBar(&amp;m_wndToolBar);</P>
<P align=justify></P>
<P 
align=justify>工具條除了Tooltip,Resizeable,Dockable特性外,還可以是Floatable。應用程序可以使用CFrameWnd::SaveBarState保存邊框窗口的控制條的有關信息到INI文件或者Windows 
Register庫,使用LoadBarSate從INI文件或者Register庫中讀取有關信息并恢復各個控制條的設置。</P>
<P 
align=justify>下文,將討論工具條等的創建、銷毀,從中分析CControlBar和派生類的關系,討論CControlBar如何實現共性,如何支持派生類的特定要求,派生類又如何實現自己的特定需求等。</P>
<OL>
  <OL>
    <OL>
      <P align=justify>
      <LI><A name=_Toc452641009></A><A name=_Toc457299138></A><B>控制窗口的創建</B> 
      <P></P>
      <P 
      align=justify>創建工具條、狀態條、對話框工具欄的方法是不同的,所以必須給每個派生類CToolBar、CStatusBar、CDialogBar設計和實現自己的窗口創建函數Create。但是,它們是也是有共性的,共性由CControlBar的PreCreateWindow處理。在窗口創建之后,各個派生類都要進行的處理(共性)由CControlBar的OnCreate完成,特別的處理通過派生類的OnNcCreate完成。</P>
      <OL>
        <P align=justify>
        <LI><A name=_Toc457299139></A><B>PreCreateWindow</B> 
        <P></P>
        <P align=justify>首先,討論CControlBar 類的PreCreateWindow的實現。</P>
        <P align=justify>BOOL CControlBar::PreCreateWindow(CREATESTRUCT&amp; 
        cs)</P>
        <P align=justify>{</P>
        <P align=justify>if (!CWnd::PreCreateWindow(cs))</P>
        <P align=justify>return FALSE;</P>
        <P align=justify></P>
        <P align=justify>//修改窗口風格,強制適用clipsliblings,以防重復繪制</P>
        <P align=justify>cs.style |= WS_CLIPSIBLINGS;</P>
        <P align=justify></P>
        <P align=justify>//default border style translation for Win4</P>
        <P align=justify>//(you can turn off this translation by setting 
        CBRS_BORDER_3D)</P>
        <P align=justify>if (afxData.bWin4 &amp;&amp; (m_dwStyle &amp; 
        CBRS_BORDER_3D) == 0)</P>
        <P align=justify>{</P>
        <P align=justify>DWORD dwNewStyle = 0;</P>
        <P align=justify>switch (m_dwStyle &amp; 
        (CBRS_BORDER_ANY|CBRS_ALIGN_ANY))</P>
        <P align=justify>{</P>
        <P align=justify>case CBRS_LEFT: //控制條在邊框窗口的左邊顯示</P>
        <P align=justify>dwNewStyle = CBRS_BORDER_TOP|CBRS_BORDER_BOTTOM;</P>
        <P align=justify>break;</P>
        <P align=justify>case CBRS_TOP://控制條在邊框窗口的頂部顯示</P>
        <P align=justify>dwNewStyle = CBRS_BORDER_TOP;</P>
        <P align=justify>break;</P>
        <P align=justify>case CBRS_RIGHT://控制條在邊框窗口的右邊顯示</P>
        <P align=justify>dwNewStyle = CBRS_BORDER_TOP|CBRS_BORDER_BOTTOM;</P>
        <P align=justify>break;</P>
        <P align=justify>case CBRS_BOTTOM://控制條在邊框窗口的底部顯示</P>
        <P align=justify>dwNewStyle = CBRS_BORDER_BOTTOM;</P>
        <P align=justify>break;</P>
        <P align=justify>}</P>
        <P align=justify></P>
        <P align=justify>// set new style if it matched one of the predefined 
        border types</P>
        <P align=justify>if (dwNewStyle != 0)</P>
        <P align=justify>{</P>
        <P align=justify>m_dwStyle &amp;= ~(CBRS_BORDER_ANY);</P>
        <P align=justify>m_dwStyle |= (dwNewStyle | CBRS_BORDER_3D);</P>
        <P align=justify>}</P>
        <P align=justify>}</P>
        <P align=justify>return TRUE;</P>
        <P align=justify>}</P>
        <P 
        align=justify>其中,afxData是一個全局變量,MFC用它來記錄系統信息,如版本信息等。這里afxData.bWin4表示Windows版本是否高于4.0。</P>
        <P 
        align=justify>CToolBar的PreCreateWindow函數修改了窗口風格,也修改狀態欄、工具欄等的CBRS_風格。CBRS_風格的改變不會影響窗口風格。因為這些CBRS_風格被保存在成員變量m_dwStyle中。</P>
        <P 
        align=justify>除了上述在程序中用到的影響工具條、狀態欄等顯示位置的CBRS_風格外,還有和泊位相關的CBRS_風格,CBRS_ALIGN_LEFT、CBRS_ALIGN_RIGHT、CBRS_ALIGN_BOTTOM、CBRS_ALIGN_TOP、CBRS_ALIGN_ANY,分別表示工具條可以在停泊在邊框窗口的左邊、右邊、底部、頂部或者所有這些位置;和漂浮相關的CBRS_風格CBRS_FLOAT_MULTI,表示多個工具條可以漂浮在一個微型邊框窗口中;和Tooltips相關的CBRS_風格CBRS_TOOLTIPS和CBRS_FLYBY。</P>
        <P 
        align=justify>派生類如果沒有特別的要求,可以不覆蓋PreCreateWindow函數。CStatusBar因為有更具體和特殊的風格要求,所以它覆蓋了PreCreateWindow。CStatusBar的覆蓋實現調用了CControlBar的實現。</P>
        <P 
        align=justify>派生類也可以在覆蓋實現中修改PreCreateWindow參數cs,改變窗口風格;修改m_dwStyle,改變CBRS_風格。</P>
        <P align=justify></P>
        <LI><A name=_Toc457299140></A><B>控制條的窗口創建</B> 
        <P></P></LI></OL></LI></OL></OL></OL>
<P 
align=justify>CControlBar派生類實現了自己的窗口創建函數Create,CControlBar的PreCreateWindow被派生類的Create函數直接或者間接地調用。以CToolBar為例討論窗口創建函數和創建過程。</P>
<OL>
  <P align=justify>
  <LI>CToolBar的窗口創建函數Create 
  <P></P>
  <P align=justify>Create函數實現如下:</P>
  <P align=justify>BOOL CToolBar::Create(CWnd* pParentWnd, DWORD dwStyle, UINT 
  nID)</P>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国理伦片一区二区三区在线播放| 亚洲色图丝袜美腿| 欧美性欧美巨大黑白大战| 9i在线看片成人免费| 懂色av中文字幕一区二区三区| 韩国av一区二区三区四区| 国产一二精品视频| 成人一区二区三区中文字幕| 成人网在线免费视频| 91一区二区三区在线播放| 一本大道久久a久久综合| 欧洲亚洲国产日韩| 88在线观看91蜜桃国自产| 精品国产乱码久久久久久影片| 日韩美女视频在线| 欧美国产一区二区| 亚洲乱码中文字幕| 日日夜夜一区二区| 国产乱人伦偷精品视频免下载| 成人福利视频网站| 欧美日韩激情一区二区三区| 日韩欧美aaaaaa| 国产精品视频线看| 亚洲高清免费观看高清完整版在线观看| 午夜精品视频一区| 国产精品一区二区三区四区| 色综合久久久久久久久久久| 欧美一区二区免费观在线| 国产天堂亚洲国产碰碰| 亚洲主播在线播放| 国产剧情一区二区三区| 欧美视频一区二| 欧美国产综合色视频| 午夜免费欧美电影| 国产成人av一区二区三区在线| 色综合 综合色| 日韩女优av电影在线观看| 亚洲日本丝袜连裤袜办公室| 美腿丝袜亚洲综合| 日本精品一区二区三区高清 | 国产精品一区免费视频| av毛片久久久久**hd| 91精品婷婷国产综合久久性色 | 色哟哟国产精品| 日韩欧美视频在线| 亚洲欧美国产高清| 国产精品一品二品| 欧美电影免费观看完整版| 一区二区三区日韩精品视频| 国产精品一区二区三区网站| 在线播放中文一区| 国产精品欧美一区喷水| 精品一区二区免费| 欧美精品 日韩| 亚洲综合丝袜美腿| 91啦中文在线观看| 国产精品视频你懂的| 国产一区二区主播在线| 欧美成人一级视频| 日韩中文字幕1| 欧美无砖砖区免费| 亚洲视频在线一区二区| 国产乱码精品一品二品| 日韩精品一区二区三区四区视频| 午夜电影一区二区| 欧美三级蜜桃2在线观看| 亚洲黄色性网站| 色伊人久久综合中文字幕| 综合久久综合久久| 91麻豆产精品久久久久久| 中文字幕成人网| thepron国产精品| 中文字幕一区二区三区在线观看| 国产成人亚洲精品青草天美| 久久精品亚洲精品国产欧美kt∨| 久久99国产精品久久| 精品欧美一区二区久久 | 精品人伦一区二区色婷婷| 奇米777欧美一区二区| 日韩三级视频在线观看| 美国av一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 久久99精品国产| 国产亚洲一区字幕| 99久久99精品久久久久久 | 日韩国产一区二| 日韩一级片在线观看| 欧美bbbbb| 久久婷婷国产综合精品青草 | 亚洲图片欧美一区| 欧美顶级少妇做爰| 精品一区二区三区在线观看国产| 久久日一线二线三线suv| 粉嫩av一区二区三区| 亚洲人快播电影网| 在线综合+亚洲+欧美中文字幕| 激情综合网av| 亚洲欧洲精品成人久久奇米网| 欧美性淫爽ww久久久久无| 另类综合日韩欧美亚洲| 国产精品网站在线播放| 欧美日韩国产一级片| 美国精品在线观看| 亚洲欧美日韩中文播放| 欧美日韩高清在线| 国产不卡高清在线观看视频| 亚洲老司机在线| 久久综合久久综合亚洲| 欧美亚洲综合色| 国产精品影视天天线| 亚洲精品ww久久久久久p站 | 国产91色综合久久免费分享| 18成人在线观看| 精品理论电影在线观看| 色综合久久88色综合天天6| 久久国产尿小便嘘嘘尿| 亚洲日韩欧美一区二区在线| 精品国产一区二区三区久久久蜜月| 成人成人成人在线视频| 久久电影网站中文字幕| 亚洲免费观看高清| 久久久综合视频| 91精品啪在线观看国产60岁| 成人av网站免费观看| 久久国产精品色| 亚洲一卡二卡三卡四卡| 国产精品二区一区二区aⅴ污介绍| 日韩一级黄色大片| 91黄色免费版| 色综合网色综合| 成人美女在线视频| 国产伦精品一区二区三区在线观看| 一区二区三区高清不卡| 亚洲天天做日日做天天谢日日欢| 欧美精品一区二区三区蜜桃| 欧美一区二区精品在线| 91九色最新地址| 色欧美片视频在线观看| 成人免费毛片app| 丰满岳乱妇一区二区三区| 激情文学综合丁香| 国产一区二区三区日韩| 精品一区二区三区免费观看 | 成人av资源在线| 国产成人av电影在线| 激情久久久久久久久久久久久久久久| 三级影片在线观看欧美日韩一区二区 | 国产精品自拍一区| 韩国精品在线观看| 国产乱理伦片在线观看夜一区| 精一区二区三区| 国产美女精品在线| 国产一区二区三区美女| 国产成人精品三级| 北条麻妃一区二区三区| 91在线丨porny丨国产| 不卡一二三区首页| 色综合色综合色综合色综合色综合| 成人一区二区三区视频在线观看| 大白屁股一区二区视频| 成人精品gif动图一区| av一区二区三区黑人| 色综合久久综合网| 在线电影院国产精品| 日韩欧美一二区| 国产日韩影视精品| 1024亚洲合集| 午夜精品影院在线观看| 久久99深爱久久99精品| 国产盗摄女厕一区二区三区| 99免费精品视频| 欧美日韩国产大片| 亚洲精品一线二线三线无人区| 国产色爱av资源综合区| 亚洲精品国产成人久久av盗摄| 亚洲国产精品久久一线不卡| 蜜臀91精品一区二区三区| 国产成人免费在线视频| 91久久精品一区二区二区| 91精品国产黑色紧身裤美女| 国产日韩精品一区二区三区 | 亚洲大片一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 懂色av一区二区夜夜嗨| 在线免费亚洲电影| 精品99一区二区| 亚洲久草在线视频| 国产一区视频导航| 色悠久久久久综合欧美99| 精品国产一区二区精华| 亚洲三级免费观看| 九九视频精品免费| 在线欧美日韩国产| 国产亚洲一区二区三区四区| 亚洲综合无码一区二区| 福利电影一区二区| 欧美成人a视频| 一区二区欧美精品| 成人免费视频播放| 精品嫩草影院久久|