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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【MFC】对话框中创建工具栏

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

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 案例概述
    • 02. 開發(fā)環(huán)境
    • 03. 關(guān)鍵技術(shù)
    • 04. 程序設(shè)計
    • 05. 秘笈心法
    • 06. 源碼下載
    • 07. 附錄

01. 案例概述

使用MFC向?qū)Э梢詣?chuàng)建基于文檔視圖結(jié)構(gòu)的應(yīng)用程序也可以創(chuàng)建基于對話框的應(yīng)用程序,向?qū)J(rèn)生成的文檔視圖結(jié)構(gòu)的應(yīng)用程序帶有工具欄,而對話框的應(yīng)用程序沒有帶任何工具欄,本實(shí)例演示如何在對話框中創(chuàng)建工具欄,效果如下圖所示。

02. 開發(fā)環(huán)境

系統(tǒng)環(huán)境:Windows 10

開發(fā)環(huán)境:Visual Studio 2019

03. 關(guān)鍵技術(shù)

MFC提供了工具欄類CToolBarCtrl來創(chuàng)建工具欄。創(chuàng)建工具欄使用Create方法,向工具欄中添加按鈕使用AddButtons方法。

Create方法:

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 返回值:如果成功則返回非零值;否則返回零。參數(shù): dwStyle 指定工具條控件的風(fēng)格。工具條必須總是具有WS_CHILD風(fēng)格。另外,你可以為工具條指定在說明部分描述的工具條風(fēng)格和窗口風(fēng)格的任意組合。 rect 隨意指定該工具條控件的尺寸和位置。它可以是一個CRect對象或一個RECT結(jié)構(gòu)。 pParentWnd 指定工具條控件的父窗口。它不能是NULL。 nID 指定工具條控件的ID。

AddButtons方法

BOOL AddButtons( int nNumButtons, LPTBBUTTON lpButtons ); 功能該方法是用來設(shè)置工具欄上的按鈕。 參數(shù)描述nNumButtons:工具欄按鈕的數(shù)量。lpButtons:TBBUTTON結(jié)構(gòu)體類型的指針。TBBUTTON結(jié)構(gòu)體中包含了工具欄按鈕的命令I(lǐng)D值、圖標(biāo)索引、按鈕名稱等數(shù)據(jù)成員。

04. 程序設(shè)計

(1)新建一個基于對話框的應(yīng)用程序。

(2)在CDialogToolBarDlg類中定義一個CToolBarCtrl對象和一個CImageList對象。

private:CToolBarCtrl m_ToolBarCtrl;CImageList m_ImageList;

(3)在自定義函數(shù)InitToolBar中動態(tài)創(chuàng)建工具欄,函數(shù)實(shí)現(xiàn)代碼如下。

//初始化工具欄 void CMy3ToolBarDlg::InitToolBar() {CString strPath;HICON hIcon;//創(chuàng)建圖像列表m_ImageList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0);//向圖像列表中添加圖標(biāo)for (int i = 0; i < 10; i++){//獲取圖片的路徑strPath.Format(TEXT(".\\res\\ico\\%02d.ico"), i);//加載圖標(biāo)hIcon = (HICON)::LoadImage(NULL, strPath, IMAGE_ICON, 32, 32, LR_LOADFROMFILE);m_ImageList.Add(hIcon);}//創(chuàng)建工具欄m_ToolBarCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, 154231);//工具欄支持自動化m_ToolBarCtrl.EnableAutomation();//設(shè)置工具欄的圖像列表m_ToolBarCtrl.SetImageList(&m_ImageList);TBBUTTON button[11];for (int j = 0; j < 11; j++){button[j].dwData = 0;//工具欄按鈕為可用button[j].fsState = TBSTATE_ENABLED;//工具欄按鈕樣式button[j].fsStyle = TBSTYLE_BUTTON;}//設(shè)置工具欄按鈕的命令I(lǐng)D值button[0].idCommand = ID_ADDDATA;//設(shè)置圖標(biāo)索引button[0].iBitmap = 0;//設(shè)置工具欄按鈕名稱button[0].iString = m_ToolBarCtrl.AddStrings(TEXT("添加"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[1].idCommand = ID_UPDATEDATA;//設(shè)置圖標(biāo)索引button[1].iBitmap = 1;//設(shè)置工具欄按鈕名稱button[1].iString = m_ToolBarCtrl.AddStrings(TEXT("修改"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[2].idCommand = ID_DELETEDATA;//設(shè)置圖標(biāo)索引button[2].iBitmap = 2;//設(shè)置工具欄按鈕名稱button[2].iString = m_ToolBarCtrl.AddStrings(TEXT("刪除"));button[3].fsStyle = TBSTYLE_SEP;//設(shè)置工具欄按鈕的命令I(lǐng)D值button[4].idCommand = ID_FIRSTDATA;//設(shè)置圖標(biāo)索引button[4].iBitmap = 3;//設(shè)置工具欄按鈕名稱button[4].iString = m_ToolBarCtrl.AddStrings(TEXT("第一條"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[5].idCommand = ID_PREVIOUSDATA;//設(shè)置圖標(biāo)索引button[5].iBitmap = 4;//設(shè)置工具欄按鈕名稱button[5].iString = m_ToolBarCtrl.AddStrings(TEXT("上一條"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[6].idCommand = ID_NEXTDATA;//設(shè)置圖標(biāo)索引button[6].iBitmap = 5;//設(shè)置工具欄按鈕名稱button[6].iString = m_ToolBarCtrl.AddStrings(TEXT("下一條"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[7].idCommand = ID_LASTDATA;//設(shè)置圖標(biāo)索引button[7].iBitmap = 6;//設(shè)置工具欄按鈕名稱button[7].iString = m_ToolBarCtrl.AddStrings(TEXT("末一條"));button[8].fsStyle = TBSTYLE_SEP;//設(shè)置工具欄按鈕的命令I(lǐng)D值button[9].idCommand = ID_SAVEDATA;//設(shè)置圖標(biāo)索引button[9].iBitmap = 7;//設(shè)置工具欄按鈕名稱button[9].iString = m_ToolBarCtrl.AddStrings(TEXT("保存"));//設(shè)置工具欄按鈕的命令I(lǐng)D值button[10].idCommand = ID_CANCELDATA;//設(shè)置圖標(biāo)索引button[10].iBitmap = 8;//設(shè)置工具欄按鈕名稱button[10].iString = m_ToolBarCtrl.AddStrings(TEXT("取消"));//向工具欄中添加按鈕m_ToolBarCtrl.AddButtons(11, button);//自動調(diào)整工具欄的大小m_ToolBarCtrl.AutoSize();//設(shè)置工具欄的樣式m_ToolBarCtrl.SetStyle(TBSTYLE_FLAT | CCS_TOP);}BOOL CMy3ToolBarDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 將“關(guān)于...”菜單項(xiàng)添加到系統(tǒng)菜單中。// IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 設(shè)置此對話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動// 執(zhí)行此操作SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo)// TODO: 在此添加額外的初始化代碼InitToolBar();return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE }

05. 秘笈心法

工具欄的創(chuàng)建方法

CToolBarCtrl類是創(chuàng)建工具欄控件的類,而CToolBar類是創(chuàng)建工具欄的類,CToolBar類包含了CToolBarCtrl類,文檔視圖結(jié)構(gòu)通常使用CToolBar類來創(chuàng)建工具欄,CToolBar類可以直接通過加載位圖來生成工具欄,也可以調(diào)用CToolBarCtrl對象進(jìn)行工具欄的設(shè)置。

06. 源碼下載

下載:對話框中創(chuàng)建工具欄.rar

07. 附錄

總結(jié)

以上是生活随笔為你收集整理的【MFC】对话框中创建工具栏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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