Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久久精品国产,国产精品亚洲综合久久,国产视频在线免费观看

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          C++入門必看:MFC CFile類的運(yùn)用

          File類提供了對(duì)文件進(jìn)行打開,關(guān)閉,讀,寫,刪除,重命名以及獲取文件信息等文件操作的基本功能,足以處理任意類型的文件操作。

          ??一個(gè)讀寫文件的例子:

          ??文件I/O

          ??雖然使用CArchive類內(nèi)建的序列化功能是保存和加載持久性數(shù)據(jù)的便捷方式,但有時(shí)在程序中需要對(duì)文件處理過程擁有更多的控制權(quán),對(duì)于這種文件輸入輸出(I/O)服務(wù)的需求,Windows提供了一系列相關(guān)的API函數(shù),并由MFC將其封裝為CFile類,提供了對(duì)文件進(jìn)行打開,關(guān)閉,讀,寫,刪除,重命名以及獲取文件信息等文件操作的基本功能,足以處理任意類型的文件操作。CFile類是MFC文件類的基類,支持無緩沖的二進(jìn)制輸入輸出,也可以通過與CArchive類的配合使用而支持對(duì)MFC對(duì)象的帶緩沖的序列化。

          ??CFile類包含有一個(gè)公有型數(shù)據(jù)成員m_hFile,該數(shù)據(jù)成員包含了同CFile類對(duì)象相關(guān)聯(lián)的文件句柄。如果沒有指定句柄,則該值為CFile::hFileNull。由于該數(shù)據(jù)成員所包含的意義取決于派生的類,因此一般并不建議使用m_hFile。

          ??通過CFile類來打開文件可以采取兩種方式:一種方式是先構(gòu)造一個(gè)CFile類對(duì)象然后再調(diào)用成員函數(shù)Open()打開文件,另一種方式則直接使用CFile類的構(gòu)造函數(shù)去打開一個(gè)文件。下面的語句分別演示了用這兩種方法打開磁盤文件“C:/TestFile.txt”的過程:

          C++代碼

          // 先構(gòu)造一個(gè)實(shí)例,然后再打開文件
          CFile file;
          file.Open(“C://TestFile.txt”, CFile::modeReadWrite);
          ……
          // 直接通過構(gòu)造函數(shù)打開文件
          CFile file(“C://TestFile.txt”, CFile::modeReadWrite);

          ??其中參數(shù)CFile::modeReadWrite是打開文件的模式標(biāo)志,CFile類中與之類似的標(biāo)志還有十幾個(gè),現(xiàn)集中列表如下:

          ??文件模式標(biāo)志 說明

          ??CFile::modeCreate 創(chuàng)建方式打開文件,如文件已存在則將其長度設(shè)置為0

          ??CFile::modeNoInherit 不允許繼承

          ??CFile::modeNoTruncate 創(chuàng)建文件時(shí)如文件已存在不對(duì)其進(jìn)行截?cái)?/span>

          ??CFile::modeRead 只讀方式打開文件

          ??CFile::modeReadWrite 讀寫方式打開文件

          ??CFile::modeWrite 寫入方式打開文件

          ??CFile::shareCompat 在使用過程中允許其他進(jìn)程同時(shí)打開文件

          ??CFile::shareDenyNone 在使用過程中允許其他進(jìn)程對(duì)文件進(jìn)行讀寫

          ??CFile::shareDenyRead 在使用過程中不允許其他進(jìn)程對(duì)文件進(jìn)行讀取

          ??CFile::shareDenyWrite 在使用過程中不允許其他進(jìn)程對(duì)文件進(jìn)行寫入

          ??CFile::shareExclusive 取消對(duì)其他進(jìn)程的所有訪問

          ??CFile::typeBinary 設(shè)置文件為二進(jìn)制模式

          ??CFile::typeText 設(shè)置文件為文本模式

          ??這些標(biāo)志可以通過“或”運(yùn)算符而同時(shí)使用多個(gè),并以此來滿足多種需求。例如,需要以讀寫方式打開文件,如果文件不存在就創(chuàng)建一個(gè)新的,如果文件已經(jīng)存在則不將其文件長度截?cái)酁?。為滿足此條件,可用CFile::modeCreate、CFile::modeReadWrite和CFile::modeNoTruncate等幾種文件模式標(biāo)志來打開文件:

          C++代碼

          CFile file ("C://TestFile.txt", CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate);

          ??在打開的文件不再使用時(shí)需要將其關(guān)閉,即可以用成員函數(shù)Close()關(guān)閉也可以通過CFile類的析構(gòu)函數(shù)來完成。當(dāng)采取后一種方式時(shí),如果文件還沒有被關(guān)閉,析構(gòu)函數(shù)將負(fù)責(zé)隱式調(diào)用Close()函數(shù)去關(guān)閉文件,這也表明創(chuàng)建在堆上的CFile類對(duì)象在超出范圍后將自動(dòng)被關(guān)閉。由于調(diào)用了對(duì)象的析構(gòu)函數(shù),因此在文件被關(guān)閉的同時(shí)CFile對(duì)象也被銷毀,而采取Close()方式關(guān)閉文件后,CFile對(duì)象仍然存在。所以,在顯式調(diào)用Close()函數(shù)關(guān)閉一個(gè)文件后可以繼續(xù)用同一個(gè)CFile對(duì)象去打開其他的文件。

          ??文件讀寫是最常用的文件操作方式,主要由CFile類成員函數(shù)Read()、Write()來實(shí)現(xiàn)。其函數(shù)原型分別為:

          C++代碼

          UINT Read( void* lpBuf, UINT nCount );
          void Write( const void* lpBuf, UINT nCount );

          ??參數(shù)lpBuf為指向存放數(shù)據(jù)的緩存的指針,nCount為要讀入或?qū)懭氲淖止?jié)數(shù),Read()返回的為實(shí)際讀取的字節(jié)數(shù),該數(shù)值小于或等于nCount,如果小于nCount則說明已經(jīng)讀到文件末尾,可以結(jié)束文件讀取,如繼續(xù)讀取,將返回0。因此通常可以將實(shí)際讀取字節(jié)數(shù)是否小于指定讀取的字節(jié)數(shù)或是否為0作為判斷文件讀取是否到達(dá)結(jié)尾的依據(jù)。下面這段代碼演示了對(duì)文件進(jìn)行一次性寫入和循環(huán)多次讀取的處理過程:

          C++代碼

          // 創(chuàng)建、寫入方式打開文件
          CFile file;
          file.Open("C://TestFile.txt", CFile::modeWrite | CFile::modeCreate);
          // 寫入文件
          memset(WriteBuf, 'a', sizeof(WriteBuf));
          file.Write(WriteBuf, sizeof(WriteBuf));
          // 關(guān)閉文件
          file.Close();
          // 只讀方式打開文件
          file.Open("C://TestFile.txt", CFile::modeRead);
          while (true)
          {
          // 讀取文件數(shù)據(jù)
          int ret = file.Read(ReadBuf, 100);
          ……
          // 如果到達(dá)文件結(jié)尾則中止循環(huán)
          if (ret < 100)
          break;
          }
          // 關(guān)閉文件
          file.Close();
          ??Write()和Read()函數(shù)執(zhí)行完后將自動(dòng)移動(dòng)文件指針,因此不必再顯示調(diào)用Seek()函數(shù)去定位文件指針。包含有文件定位函數(shù)的完整代碼如下所示:
          
          C++代碼
          // 創(chuàng)建、寫入方式打開文件
          CFile file;
          file.Open("C://TestFile.txt", CFile::modeWrite | CFile::modeCreate);
          // 寫入文件
          memset(WriteBuf, 'a', sizeof(WriteBuf));
          file.SeekToBegin();
          file.Write(WriteBuf, sizeof(WriteBuf));
          // 關(guān)閉文件
          file.Close();
          // 只讀方式打開文件
          file.Open("C://TestFile.txt", CFile::modeRead);
          while (true)
          {
          // 文件指針
          static int position = 0;
          // 移動(dòng)文件指針
          file.Seek(position, CFile::begin);
          // 讀取文件數(shù)據(jù)
          int ret = file.Read(ReadBuf, 100);
          position += ret;
          ……
          // 如果到達(dá)文件結(jié)尾則中止循環(huán)
          if (ret < 100)
          break;
          }
          // 關(guān)閉文件
          file.Close();

          補(bǔ)充:

          ??使用CFile類對(duì)文件進(jìn)行按結(jié)構(gòu)讀取,如:

          C++代碼

          CFile fileRead,fileWrite;
          fileRead.Open(_T("E://a.dat"),CFile::modeRead);//這里使用宏_T
          fileWrite.Open(_T("E://backup.txt"),CFile::modeCreate | CFile::modeWrite);
          VIDEOHEADER *videoheader=new VIDEOHEADER();
          fileRead.Read(videoheader,sizeof(VIDEOHEADER));
          char buf[sizeof(VIDEOHEADER)*8];
          sprintf(buf,"videoheader.cCommandID:%s ,videoheader->cCommandID);  //通過sprintf對(duì)我們需要寫入文件中的數(shù)據(jù)進(jìn)行格式化,這樣在文件中存儲(chǔ)的數(shù)據(jù)就是以這里定義的格式顯示的。
          fileWrite.Write(buf,strlen(buf));

          MFC擴(kuò)展類庫

          在平時(shí)練習(xí)的時(shí)候我們可以自己手動(dòng)進(jìn)行,但是一旦接受一些項(xiàng)目,應(yīng)用程序開發(fā)等,對(duì)界面的要求就會(huì)高出許多。這時(shí)候就有必要借助這些“半成品”實(shí)現(xiàn)界面美化提升效率。這里簡單介紹一下,具體可點(diǎn)進(jìn)去查看每個(gè)的詳情以及教程,案例!

          Toolkit Pro

          Codejock軟件公司的Xtreme Toolkit Pro是屢獲殊榮的VC界面庫,是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。

          BCGControlBar

          BCGControlBar ("Business Components Gallery ControlBar")是MFC擴(kuò)展庫,使您可以創(chuàng)建具有完全自定義選項(xiàng)(功能區(qū)、可自定義工具欄、菜單等)以及一組專業(yè)設(shè)計(jì)的豐富Microsoft Office和Microsoft Visual Studio的應(yīng)用程序 GUI控件,例如圖表、日歷、網(wǎng)格、編輯器、甘特圖和許多其他控件。
          BCGControlBar庫擁有500多個(gè)經(jīng)過全面設(shè)計(jì)、測試和充分記錄的MFC擴(kuò)展類。可以輕松地集成到你的應(yīng)用程序中,并為你節(jié)省數(shù)百個(gè)開發(fā)和調(diào)試時(shí)間。

          QtitanRibbon:

          QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技術(shù)的Ribbon UI組件,QtitanRibbon致力于為Windows、Linux和Mac OS X提供功能完整的Ribbon組件。

          本文轉(zhuǎn)載自:http://www.jizhuomi.com/software/500.html

          今天的內(nèi)容就是這些了,點(diǎn)擊下方“了解更多”獲取限時(shí)免費(fèi)教程、體驗(yàn)資格!

          isual c++ 供 了 功 能 強(qiáng) 大 的 類 庫, 基 本 上 應(yīng) 用 開 發(fā) 的 要 求, 但 對(duì) 于 某 特 殊 要 面, 如 圖 像 兼 文 字 的 按 , 列 表 框 中 入 圖 像, 中 國 報(bào) 表 等 等, 仍 得 力 不 從 心, 因 而 很 有 必 要 創(chuàng) 建 擴(kuò) 展MFC 類 庫, 以 滿 足 實(shí) 際 開 發(fā) 的 求。But,Toolkit Pro 是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件。 根據(jù)需要可進(jìn)行下載體驗(yàn)!

          本文通過實(shí)例說明MFC工具欄的創(chuàng)建、設(shè)計(jì)和使用方法,包括三個(gè)demo。

          demo1:創(chuàng)建一個(gè)工具欄

          C++代碼

          //摘抄自MSDN
          demo1 (創(chuàng)建一個(gè)工具欄)
          1.Create a toolbar resource.
          /*可以先插入一個(gè)新的工具欄資源
          添加分隔符,將按鈕向右拖動(dòng)一小下
          刪除按鈕,將按鈕拖動(dòng)出工具欄
          */
          2.Construct the CToolBar object.
          /*
          工具欄是 CToolBar 對(duì)象,聲明為應(yīng)用程序的 CMainFrame 類的數(shù)據(jù)成員。也就是說,工具欄對(duì)象嵌入到主框架窗口對(duì)象中。這意味著 MFC 在創(chuàng)建框架窗口時(shí)創(chuàng)建工具欄,在銷毀框架窗口時(shí)銷毀工具欄。
          */
          3.Call the Create (or CreateEx) function to create
          the Windows toolbar and attach it to the CToolBar object.
          4.Call LoadToolBar to load the toolbar resource.
          /*
          工具欄創(chuàng)建發(fā)生在 CMainFrame::OnCreate 中。MFC 在創(chuàng)建框架窗口之后且在窗口可見之前調(diào)用 OnCreate。
          在 OnCreate 中調(diào)用適當(dāng)?shù)暮瘮?shù)來停靠或浮動(dòng)工具欄、設(shè)置它的樣式等。
          應(yīng)用程序向?qū)А鄙傻哪J(rèn) OnCreate 執(zhí)行以下工具欄任務(wù):
          1.調(diào)用 CToolBar 對(duì)象的 Create 成員函數(shù)來創(chuàng)建基礎(chǔ) CToolBarCtrl 對(duì)象。
          2.調(diào)用 LoadToolBar 來加載工具欄資源信息。
          3.調(diào)用函數(shù)來啟用停靠、浮動(dòng)和工具提示。
          */
          class CMainFrame : public CMDIFrameWnd
          {
          // ...
          // Implementation
          // ...
          protected:  // control bar embedded members
          CStatusBar  m_wndStatusBar;
          CToolBar    m_wndToolBar;
          // Generated message map functions
          protected:
          afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
          DECLARE_MESSAGE_MAP()
          };
          int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
          {
          if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
          return -1;
          //框架類中m_wndMyToolBar成員變量先調(diào)用CreateEx函數(shù),再調(diào)用LoadToolBar函數(shù)
          if (! m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
          | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
          ! m_wndToolBar.LoadToolBar(IDR_MYTOOLBAR))
          {
          TRACE0("Failed to create toolbar\n");
          return -1;      // fail to create
          }
          //調(diào)用CToolBar中的成員函數(shù)設(shè)置工具欄可停靠的位置
          m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
          //調(diào)用框架類中的成員函數(shù)設(shè)置哪里可以被停靠
          EnableDocking(CBRS_ALIGN_ANY);
          //Points to the control bar to be docked.
          DockControlBar(&m_wndToolBar);
          return 0;
          }


          demo2:停靠和浮動(dòng)工具欄


          C++代碼


          demo2 (停靠和浮動(dòng)工具欄)
          /*
          如果使用“應(yīng)用程序向?qū)А眮砩蓱?yīng)用程序的主干,向?qū)⒁竽x擇是否想要可停靠的工具欄。
          默認(rèn)情況下,“應(yīng)用程序向?qū)А鄙纱a來執(zhí)行將可停靠工具欄放置在應(yīng)用程序中所需的三個(gè)操作:
          1.在框架窗口中啟用停靠。
          2.為工具欄啟用停靠。
          3.停靠工具欄(靠向框架窗口)。
          如果這些步驟中的任何一個(gè)缺少,應(yīng)用程序都將顯示標(biāo)準(zhǔn)工具欄。
          后兩個(gè)步驟對(duì)應(yīng)用程序中的每一個(gè)可停靠工具欄都必須執(zhí)行。
          */
          CFrameWnd::EnableDocking()//在框架窗口中啟用停靠
          /*
          若要將工具欄停靠到某個(gè)框架窗口,則必須啟用該框架窗口(或目標(biāo))以允許停靠。
          這可通過使用 CFrameWnd::EnableDocking 函數(shù)來實(shí)現(xiàn),該函數(shù)采用一個(gè) DWORD 參數(shù),這是一組指示框架窗口的哪一個(gè)邊接受停靠的樣式位。
          如果一個(gè)工具欄即將停靠并且有多個(gè)邊可以停靠,則在傳遞給 EnableDocking 的參數(shù)中指示的邊按以下順序使用:頂邊、底邊、左邊、右邊。
          如果希望能夠?qū)⒖刂茥l停靠在任意位置,請(qǐng)將 CBRS_ALIGN_ANY 傳遞給 EnableDocking。
          */
          CControlBar::EnableDocking()//為工具欄啟用停靠
          /*
          準(zhǔn)備好停靠目標(biāo)后,必須以相似的方式準(zhǔn)備工具欄(或源)。為想要停靠的每一個(gè)工具欄調(diào)用 CControlBar::EnableDocking,指定工具欄應(yīng)停靠的目標(biāo)邊。如果在 CControlBar::EnableDocking 調(diào)用中所指定的邊沒有一個(gè)與框架窗口中為停靠啟用的邊匹配,則工具欄無法停靠(它將浮動(dòng))。
          工具欄一旦浮動(dòng),將保持為浮動(dòng)工具欄,不能停靠到框架窗口。
          如果希望工具欄永久浮動(dòng),請(qǐng)調(diào)用參數(shù)為 0 的 EnableDocking。然后調(diào)用 CFrameWnd::FloatControlBar。工具欄將保持浮動(dòng),永遠(yuǎn)不能在任意位置停靠。
          */
          CFrameWnd::DockControlBar()//停靠工具欄
          /*
          當(dāng)用戶試圖將工具欄放置在允許停靠的框架窗口某一邊時(shí),框架調(diào)用 CFrameWnd::DockControlBar。
          另外,可以隨時(shí)調(diào)用該函數(shù)將控制條停靠在框架窗口中。這通常在初始化過程中完成。
          框架窗口的具體某個(gè)邊上可停靠多個(gè)工具欄。
          */
          CFrameWnd::FloatControlBar()//浮動(dòng)工具欄
          /*
          從框架窗口分離可停靠工具欄稱為浮動(dòng)工具欄。調(diào)用 CFrameWnd::FloatControlBar 來執(zhí)行該操作。指定要浮動(dòng)的工具欄、將放置的點(diǎn)以及決定浮動(dòng)工具欄是水平還是垂直的對(duì)齊樣式。
          當(dāng)用戶拖動(dòng)工具欄離開停靠位置并將它放置在一個(gè)未啟用停靠的位置時(shí),框架調(diào)用該函數(shù)。
          這可以是框架窗口的內(nèi)部或外部的任意位置。同 DockControlBar 一樣,也可以在初始化過程中調(diào)用該函數(shù)。
          可停靠工具欄的 MFC 實(shí)現(xiàn)不提供一些支持可停靠工具欄的應(yīng)用程序中有的擴(kuò)展功能。諸如可自定義工具欄這樣的功能不提供。
          */
          int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
          {
          //...
          //部分代碼略
          //...
          //調(diào)用CToolBar中的成員函數(shù)設(shè)置工具欄可停靠的位置
          m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
          //調(diào)用框架類中的成員函數(shù)設(shè)置哪里可以被停靠
          EnableDocking(CBRS_ALIGN_ANY);
          //Points to the control bar to be docked.
          DockControlBar(&m_wndToolBar);
          return 0;
          }

          demo3:點(diǎn)擊菜單項(xiàng)顯示和隱藏工具欄

          C++代碼

          demo3 (點(diǎn)擊菜單項(xiàng)顯示和隱藏工具欄)
          CFrameWnd::ShowControlBar//顯示和隱藏菜單項(xiàng)
          void ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay );
          void CMainFrame::OnViewNewtool()
          {
          ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);//控制顯示和隱藏
          }
          void CMainFrame::OnUpdateViewNewtool(CCmdUI* pCmdUI)
          {
          // TODO: Add your command update UI handler code here
          pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());//為菜單項(xiàng)打標(biāo)記
          }

          MFC擴(kuò)展類庫

          在平時(shí)練習(xí)的時(shí)候我們可以自己手動(dòng)進(jìn)行,但是一旦接受一些項(xiàng)目,應(yīng)用程序開發(fā)等,對(duì)界面的要求就會(huì)高出許多。這時(shí)候就有必要借助這些“半成品”實(shí)現(xiàn)界面美化提升效率。這里簡單介紹一下,具體可點(diǎn)進(jìn)去查看每個(gè)的詳情以及教程,案例!

          Toolkit Pro

          Codejock軟件公司的Xtreme Toolkit Pro是屢獲殊榮的VC界面庫,是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。

          BCGControlBar ("Business Components Gallery ControlBar")是MFC擴(kuò)展庫,使您可以創(chuàng)建具有完全自定義選項(xiàng)(功能區(qū)、可自定義工具欄、菜單等)以及一組專業(yè)設(shè)計(jì)的豐富Microsoft Office和Microsoft Visual Studio的應(yīng)用程序 GUI控件,例如圖表、日歷、網(wǎng)格、編輯器、甘特圖和許多其他控件。
          BCGControlBar庫擁有500多個(gè)經(jīng)過全面設(shè)計(jì)、測試和充分記錄的MFC擴(kuò)展類。可以輕松地集成到你的應(yīng)用程序中,并為你節(jié)省數(shù)百個(gè)開發(fā)和調(diào)試時(shí)間。

          轉(zhuǎn)載自:http://www.jizhuomi.com/software/494.html

          關(guān)注我或者點(diǎn)擊下方“了解更多”獲取一手開發(fā)資訊哦!

          ibbon是類似于office2007樣 式的界面,它替代了傳統(tǒng)的MFC程序里的菜單和工具欄MFC默認(rèn)生成的Ribbon功能少,需要我們自己添加一些控件和圖片等元素使界面好看。看下面的一個(gè)界面,是示例里的

          ??看到它與默認(rèn)Ribbon樣式的區(qū)別:

          ??工具自己設(shè)計(jì),MFC提供的Ribbon控件基本都用上了;圖片(位圖)也是原資源沒有的

          ??那到底怎么實(shí)現(xiàn)呢?

          ??可以注意到的是:類別由面板組成,面板由按鈕或文本編輯框或進(jìn)度條等控件組成

          ??按鈕都是圖片和文字組成,按鈕通過按鈕集合可以產(chǎn)生類似于下拉菜單的作用

          ??觀察這些按鈕,可以發(fā)現(xiàn)有兩類:小圖標(biāo)的按鈕和大圖標(biāo)的按鈕

          ??小圖標(biāo):像素16×16,32位

          ??大圖標(biāo):像素32×32,32位

          ??關(guān)鍵問題是如何制作這些BitMap以及如何將他們加載到Ribbon界面中。

          有兩個(gè)方法:一是自己動(dòng)手制作,二是利用現(xiàn)成的組件ToolKit Pro,BCGControlBar,QitanRibbon后文會(huì)有詳細(xì)介紹!

          ?一、 制作工具欄BitMap

          ??在網(wǎng)上找了IconWorkshop這個(gè)軟件,很好用,可以制作icon圖標(biāo),也可以用多個(gè)icon圖標(biāo)制作位圖BitMap。這正是我想要的功能

          ??自己不會(huì)美工,所以在網(wǎng)上找了些素材,做了以下一個(gè)工具欄樣的32×32像素32位的BitMap

          ??看到木有,跟程序默認(rèn)生成的幾個(gè)位圖很像啊,內(nèi)牛滿面啊

          ??將這個(gè)位圖加載到資源中,ID改為IDB_BIG

          ?? 修改Ribbon內(nèi)的按鈕圖標(biāo)

          ??首先,修改類別屬性,Large Images和Small Images,Large Images就是大圖標(biāo),Small Images是小圖標(biāo)。在Large Images中的下拉菜單中選擇IDB_BIG

          ??然后修改面板中的按鈕屬性,在Large Images屬性選項(xiàng)中選擇一個(gè)合適的圖標(biāo)即可

          ??小圖標(biāo)也是一樣的道理,修改各自Small Images屬性即可

          ?實(shí)現(xiàn)下拉菜單

          ??按鈕屬性中有個(gè)行為的屬性,在里面添加相應(yīng)的菜單(或間隔符)即完成了類似下拉菜單

          ??還有一些快捷方式的按鍵(兩個(gè)向下的箭頭、最左上角的圖標(biāo)按鈕)也可以設(shè)置它們的功能項(xiàng)

          ??我做出來的界面如下所示

          ?? 將按鈕ID和菜單上的ID匹配

          ??Ribbon中的菜單ID是不能自己設(shè)置的,必須綁定在某個(gè)菜單上,對(duì)菜單的事件響應(yīng)就是對(duì)響應(yīng)的Ribbon上按鈕的響應(yīng),所以按了Ribbon界面上的某個(gè)按鈕就等同于按鈕對(duì)應(yīng)的某個(gè)菜單

          ??所以必須將菜單欄也制作完整,給其添加事件消息,將Ribbon中按鈕的ID改為對(duì)應(yīng)菜單的ID。菜單不在界面中顯示出來不代表它就沒用,沒它還不行,不知道以后能不能擺脫菜單直接在Ribbon按鈕上添加事件。

          ?? 修改最小化工具欄上的圖標(biāo)

          ??上圖雖然修改了左上角的按鈕圖標(biāo),但是電腦工具欄上還是現(xiàn)實(shí)的MFC圖標(biāo),使用下面代碼進(jìn)行修改

          C++代碼

          1. HICON m_hIcon;
          2. m_hIcon = AfxGetApp()->LoadIcon(IDI_HAHA);
          3. SetIcon(m_hIcon, TRUE); // Set small icon
          4. //SetIcon(m_hIcon, FALSE); // Set big icon

          二、利用組件

          在平時(shí)練習(xí)的時(shí)候我們可以自己手動(dòng)進(jìn)行,但是一旦接受一些項(xiàng)目,應(yīng)用程序開發(fā)等,對(duì)界面的要求就會(huì)高出許多。這時(shí)候就有必要借助這些“半成品”實(shí)現(xiàn)界面美化提升效率。這里簡單介紹一下,具體可點(diǎn)進(jìn)去查看每個(gè)的詳情以及教程,案例!

          Toolkit Pro

          Codejock軟件公司的Xtreme Toolkit Pro是屢獲殊榮的VC界面庫,是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。

          BCGControlBar

          BCGControlBar ("Business Components Gallery ControlBar")是MFC擴(kuò)展庫,使您可以創(chuàng)建具有完全自定義選項(xiàng)(功能區(qū)、可自定義工具欄、菜單等)以及一組專業(yè)設(shè)計(jì)的豐富Microsoft Office和Microsoft Visual Studio的應(yīng)用程序 GUI控件,例如圖表、日歷、網(wǎng)格、編輯器、甘特圖和許多其他控件。
          BCGControlBar庫擁有500多個(gè)經(jīng)過全面設(shè)計(jì)、測試和充分記錄的MFC擴(kuò)展類。可以輕松地集成到你的應(yīng)用程序中,并為你節(jié)省數(shù)百個(gè)開發(fā)和調(diào)試時(shí)間。

          QtitanRibbon:

          QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技術(shù)的Ribbon UI組件,QtitanRibbon致力于為Windows、Linux和Mac OS X提供功能完整的Ribbon組件。

          本文轉(zhuǎn)載自:http://www.jizhuomi.com/software/500.html

          今天的內(nèi)容就是這些了,點(diǎn)擊下方“了解更多”獲取限時(shí)免費(fèi)體驗(yàn)資格!


          主站蜘蛛池模板: 91久久精品国产免费一区| 亚洲无删减国产精品一区| 亚洲A∨精品一区二区三区| 国产无码一区二区在线| 韩国美女vip福利一区| 精品一区二区三区四区在线| 亚洲AV日韩综合一区尤物| 日韩精品无码免费一区二区三区| 中文字幕一区二区区免| 亚洲第一区在线观看| 91精品国产一区| 韩国福利一区二区美女视频| 午夜福利一区二区三区高清视频| 国产福利视频一区二区| 奇米精品一区二区三区在| 亚洲午夜精品第一区二区8050| 国产大秀视频一区二区三区| 亚洲AV网一区二区三区| 在线一区二区三区| 亚洲Av永久无码精品一区二区| 99精品国产高清一区二区麻豆| 亚洲电影一区二区三区| 久久精品黄AA片一区二区三区 | 一区二区三区精品| 亚洲乱色熟女一区二区三区丝袜| 久久se精品一区精品二区国产| 亚洲一区二区三区无码影院| 国产精品女同一区二区久久| 国产AV午夜精品一区二区三| 国精品无码一区二区三区在线 | 精品亚洲A∨无码一区二区三区| 亚洲日韩精品无码一区二区三区| 无码一区二区三区老色鬼| 中文字幕亚洲综合精品一区| 国产精品合集一区二区三区| eeuss鲁片一区二区三区| 精彩视频一区二区| 国产一区二区中文字幕| 国产日本一区二区三区| 尤物精品视频一区二区三区 | 高清一区二区三区免费视频|