《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章

上傳人:san****019 文檔編號(hào):21183140 上傳時(shí)間:2021-04-25 格式:PPT 頁(yè)數(shù):75 大?。?99.05KB
收藏 版權(quán)申訴 舉報(bào) 下載
《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章_第1頁(yè)
第1頁(yè) / 共75頁(yè)
《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章_第2頁(yè)
第2頁(yè) / 共75頁(yè)
《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章_第3頁(yè)
第3頁(yè) / 共75頁(yè)

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《《面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言-C+》課件-第6章(75頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、返 回 1 第 六 章 菜 單 、 工 具 欄 和 狀 態(tài) 欄 本 章 導(dǎo) 讀 掌 握 菜 單 的 創(chuàng) 建 步 驟 和 方 法 , 如 何 進(jìn) 行 命 令 消 息 的 映射 和 編 寫(xiě) 相 應(yīng) 的 程 序 代 碼 。 掌 握 CMenu類(lèi) 及 其 常 用 成 員 函 數(shù) 的 功 能 和 使 用 方 法 , 掌握 利 用 這 些 成 員 函 數(shù) 創(chuàng) 建 快 捷 菜 單 和 實(shí) 現(xiàn) 動(dòng) 態(tài) 增 加 或 減少 菜 單 項(xiàng) 。 掌 握 工 具 欄 的 創(chuàng) 建 方 法 和 步 驟 , 如 何 將 工 具 欄 的 功 能與 菜 單 的 功 能 相 對(duì) 應(yīng) 。 掌 握 創(chuàng) 建 狀 態(tài) 欄 的 方 法 和 步

2、 驟 。 學(xué) 習(xí) 和 掌 握 CMenu類(lèi) 、 CStatusBar類(lèi) 、 CToolBar類(lèi) 、CCmdUI類(lèi) 及 常 用 成 員 函 數(shù) 的 功 能 和 使 用 。 菜 單 、 工 具 欄 和 狀 態(tài) 欄 是 Windows應(yīng) 用 程 序 中 最 重 要 的三 個(gè) 用 戶(hù) 界 面 元 素 , 是 應(yīng) 用 程 序 設(shè) 計(jì) 中 不 可 缺 少 的 步 驟 。 返 回 2 6.1 創(chuàng) 建 菜 單 菜 單 是 一 系 列 命 令 的 列 表 , 是 最 常 用 的 命 令 輸 入 方 式 。在 Windows中 , 幾 乎 所 有 的 命 令 操 作 都 與 菜 單 有 關(guān) 。 Windows應(yīng)

3、用 程 序 中 的 菜 單 是 按 照 一 定 層 次 來(lái) 進(jìn) 行 組織 的 , 包 括 菜 單 項(xiàng) 和 彈 出 菜 單 , 其 中 彈 出 菜 單 又 可 以 包括 菜 單 項(xiàng) 和 其 他 的 彈 出 菜 單 。1.創(chuàng) 建 菜 單 資 源 菜 單 中 的 每 一 個(gè) 菜 單 項(xiàng) 都 由 菜 單 項(xiàng) 名 和 命 令 ID號(hào) 兩 個(gè)基 本 要 素 組 成 。 在 菜 單 資 源 中 , 每 個(gè) 菜 單 項(xiàng) 都 必 須 有 一個(gè) 唯 一 的 命 令 ID號(hào) 來(lái) 對(duì) 它 進(jìn) 行 標(biāo) 識(shí) , 這 個(gè) ID號(hào) 是 系 統(tǒng) 在對(duì) 菜 單 項(xiàng) 進(jìn) 行 識(shí) 別 時(shí) 使 用 的 。 對(duì) 于 用 戶(hù) 而 言 ,

4、菜 單 項(xiàng) 的標(biāo) 識(shí) 是 利 用 它 所 屬 的 彈 出 菜 單 和 菜 單 項(xiàng) 的 句 子 來(lái) 標(biāo) 識(shí) 的 ,比 如 ID_FILE_OPEN, 其 所 屬 的 彈 出 菜 單 是 【 文 件 】 , 菜單 項(xiàng) 名 稱(chēng) 為 【 打 開(kāi) 】 。 返 回 3 創(chuàng) 建 菜 單 可 以 有 幾 種 方 法 , 最 簡(jiǎn) 單 的 方 法 是 用 菜 單 資源 編 輯 器 進(jìn) 行 設(shè) 計(jì) 。 在 這 里 , 我 們 把 第 五 章 關(guān) 于 模 式 對(duì)話(huà) 框 的 例 子 進(jìn) 行 改 造 , 使 對(duì) 話(huà) 框 的 彈 出 方 式 由 在 窗 口 中雙 擊 鼠 標(biāo) 改 為 由 單 擊 某 個(gè) 菜 單 命 令 實(shí)

5、現(xiàn) 。 具 體 步 驟 如 下 :步 驟 一 : 在 Visual C+ 6.0中 , 選 【 File】 菜 單 中 的 【 Open Workspace】 菜 單 項(xiàng) , 打 開(kāi) 已 創(chuàng) 建 的 “ Dialog.dsw”文 件 。步 驟 二 : 在 工 作 區(qū) 窗 口 中 選 擇 【 Resource View】 選 項(xiàng) 卡 ,展 開(kāi) 【 Dialog Resources】 目 錄 , 再 展 開(kāi) 【 Menu】 文 件 ,將會(huì) 看 到 菜 單 IDR_MAINFRAME。 步 驟 三 : 雙 擊 IDR_MAINFRAME, 將 在 菜 單 資 源 編 輯 器中 打 開(kāi) 菜 單 資 源

6、 。步 驟 四 : 在 主 菜 單 中 增 加 一 個(gè) 【 顯 示 】 菜 單 。 用 鼠 標(biāo) 雙擊 主 菜 單 最 右 邊 的 空 菜 單 項(xiàng) , 或 者 用 鼠 標(biāo) 右 擊 , 在 彈 出的 快 捷 菜 單 中 選 擇 【 Properties】 菜 單 項(xiàng) 。 系 統(tǒng) 將 彈 出 屬性 對(duì) 話(huà) 框 。 返 回 4 在 【 Caption】 欄 中 輸 入 “ 顯 示 ( afx_msg void OnDisplayData(); /ClassWizard自 動(dòng) 添 加 的/AFX_MSGDECLARE_MESSAGE_MAP(); 返 回 14 其 中 :/AFX_MSG(CDialog

7、View)/AFX_MSG 是 ClassWizard分 別 用 來(lái) 識(shí) 別 命 令 消 息 處 理 函 數(shù) 定 義 的 起始 標(biāo) 記 和 結(jié) 束 標(biāo) 記 , 在 AFX_MSG(CDialogView)后 面 括 號(hào)內(nèi) 的 CDialogView表 示 是 處 理 該 消 息 的 類(lèi) 。2. 在 CDialogView類(lèi) 的 實(shí) 現(xiàn) 文 件 DialogView.cpp中 的 消 息映 射 部 分 也 進(jìn) 行 了 一 些 修 改 :BEGIN_MESSAGE_MAP(CDialogView, CView)/AFX_MSG_MAP(CDialogView) 返 回 15 ON_WM_LBUTT

8、ONDBLCLK()ON_COMMAND(ID_DISPLAY_DATA, OnDisplayData) /ClassWizard自 動(dòng) 添 加 的/AFX_MSG_MAPEND_MESSAGE_MAP()其 中 :/AFX_MSG_MAP(CDialogView)/AFX_MSG_MAP是 ClassWizard標(biāo) 識(shí) 命 令 消 息 處 理 映 射 機(jī) 制 的 起 始 標(biāo) 記 和 結(jié)束 標(biāo) 記 。 返 回 16 3. 在 DialogView.cpp文 件 中 編 寫(xiě) OnDisplayData函 數(shù) 的 代 碼 。 把 DialogView.cpp文 件 中 響 應(yīng) 雙 擊 窗 口 的

9、函 數(shù) OnLButtonDBLCLK()的 代 碼 復(fù) 制 到 OnDisplayData()函 數(shù)中 , 具 體 代 碼 如 下 :void CDialogView:OnDisplayData() / TODO: Add your command handler code hereCMydataDialog dlg;dlg.m_radio_m=0;dlg.m_edit_name=;CString msg;if(dlg.DoModal()=IDOK)msg=按 鈕 被 按 下 ! ; Else msg=按 鈕 被 按 下 ! ; 返 回 17 msg+=rn;msg+=姓 名 : ;msg+

10、=dlg.m_edit_name;msg+=rn;msg+=性 別 : ;switch(dlg.m_radio_m)case 0:msg+=男 ; break;case 1:msg+=女 ; break; msg+=rn;msg+=最 高 學(xué) 歷 : ;msg+=dlg.m_combo_school;msg+=rn; msg+=愛(ài) 好 : ; 返 回 18 if(dlg.m_check_art=TRUE)msg+=藝 術(shù) ;if(dlg.m_check_music=TRUE)msg+=音 樂(lè) ;if(dlg.m_check_sport=TRUE)msg+=體 育 ;AfxMessageBox(

11、msg); 步 驟 五 : 編 譯 運(yùn) 行 并 測(cè) 試 此 應(yīng) 用 程 序 。 當(dāng) 選 擇 【 顯 示 】菜 單 中 的 【 個(gè) 人 資 料 】 菜 單 項(xiàng) , 或 單 擊 Ctrl+D鍵 時(shí) , 將 彈出 【 個(gè) 人 資 料 】 對(duì) 話(huà) 框 , 在 對(duì) 話(huà) 框 內(nèi) 可 以 進(jìn) 行 各 種 設(shè) 置 ,然 后 單 擊 【 確 認(rèn) 】 或 【 取 消 】 按 鈕 退 出 。 可 以 看 到 其 效果 與 雙 擊 應(yīng) 用 程 序 窗 口 是 一 樣 的 。 返 回 19 4. CMenu類(lèi) 及 其 常 用 成 員 函 數(shù) 介 紹 Visual C+的 MFC提 供 的 菜 單 類(lèi) Cmenu的 對(duì)

12、象 可 以 用 來(lái)表 示 各 種 Windows菜 單 , 其 中 包 括 頂 層 菜 單 項(xiàng) 及 其 相 應(yīng) 的彈 出 式 菜 單 。 并 且 該 類(lèi) 可 以 在 程 序 運(yùn) 行 時(shí) 處 理 有 關(guān) 菜 單的 操 作 , 如 創(chuàng) 建 菜 單 、 裝 入 菜 單 、 刪 除 菜 單 項(xiàng) 、 獲 取 或設(shè) 置 菜 單 項(xiàng) 的 狀 態(tài) 等 。創(chuàng) 建 菜 單 CMenu類(lèi) 的 成 員 函 數(shù) CreateMenu和 CreatePopupMenu分 別用 來(lái) 創(chuàng) 建 一 個(gè) 菜 單 或 子 菜 單 框 架 , 其 函 數(shù) 原 型 如 下 :BOOL CreateMenu(); /產(chǎn) 生 一 個(gè) 空

13、菜 單BOOL CreatePopupMenu(); /產(chǎn) 生 一 個(gè) 空 彈 出 式 子 菜 單 返 回 20 裝 入 菜 單 CMenu類(lèi) 的 成 員 函 數(shù) LoadMenu可 用 來(lái) 將 菜 單 資 源 裝 入 應(yīng)用 程 序 中 , 它 的 函 數(shù) 原 型 有 兩 種 , 如 下 所 示 :BOOL LoadMenu(LPCTSTR lpszResourceName);BOOL LoadMenu(UNIT nIDResource);其 中 : 形 參 lpszResourceName表 示 菜 單 資 源 的 名 稱(chēng) , 形 參nIDResource為 菜 單 資 源 的 ID號(hào) 。添

14、 加 菜 單 項(xiàng)當(dāng) 菜 單 創(chuàng) 建 后 , 可 以 調(diào) 用 CMenu類(lèi) 提 供 的 成 員 函 數(shù)AppendMenu或 InsertMenu來(lái) 向 菜 單 中 添 加 一 些 菜 單 項(xiàng) ,但 每 次 添 加 時(shí) , 函 數(shù) AppendMenu是 將 菜 單 項(xiàng) 添 加 在 菜 單的 末 尾 處 , 而 InsertMenu是 在 指 定 的 位 置 處 插 入 菜 單 項(xiàng) ,并 將 后 面 的 菜 單 項(xiàng) 依 次 下 移 。 它 們 的 函 數(shù) 原 型 如 下 : 返 回 21 BOOL AppendMenu(UNIT nFlags, UNIT nIDNewItem,const CBi

15、tmap * pBmp);BOOL AppendMenu(UNIT nFlags, UNIT nIDNewItem=0,LPCTSTR lpszNewItem=NULL);BOOL InsertMenu(UNIT nPosition, UNIT nFlags, UNIT nIDNewItem,const CBitmap *pBmp);BOOL InsertMenu(UNIT nPosition, UNIT nFlags, UNIT nIDNewItem=0,LPCTSTR lpszNewItem=NULL); 其 中 : 形 參 nIDNewItem表 示 新 增 菜 單 項(xiàng) 的 資 源 ID

16、號(hào) ,形 參 lpszNewItem表 示 新 增 菜 單 項(xiàng) 的 標(biāo) 題 內(nèi) 容 , 形 參pBmp是 新 增 菜 單 項(xiàng) 的 位 圖 指 針 , 形 參 nPosition表 示 新 增菜 單 項(xiàng) 要 插 入 的 菜 單 項(xiàng) 的 位 置 , nFlags表 示 要 增 加 的 菜單 項(xiàng) 的 狀 態(tài) 信 息 , 其 取 值 的 不 同 會(huì) 影 響 其 他 參 數(shù) 的 含 義 ,見(jiàn) 表 6.3。 返 回 22 nFlags的 取 值 含 義 nPosition值 nIDNewItem值 lpszNewItem值MF_BYCOMMAND MF_BYPOSITION MF_POPUPMF_SEPA

17、RATORMF_OWNERDRAWMF_STRINGMF_CHECKED MF_UNCHECKED MF_DISABLEDMF_ENABLEDMF_GRAYED 菜 單 項(xiàng) 以 ID號(hào) 來(lái) 標(biāo) 識(shí)菜 單 項(xiàng) 以 位置 來(lái) 標(biāo) 識(shí)菜 單 項(xiàng) 有 彈出 式 子 菜 單分 隔 線(xiàn)自 畫(huà) 菜 單 項(xiàng)字 符 串 標(biāo) 志設(shè) 置 菜 單 項(xiàng)的 選 中 標(biāo) 記取 消 菜 單 項(xiàng)的 選 中 標(biāo) 記禁 用 菜 單 項(xiàng) 菜 單 項(xiàng) 可 用菜 單 項(xiàng) 變 灰 菜 單 項(xiàng) 資源 ID菜 單 項(xiàng) 的位 置 彈 出 式 菜 單 句柄 忽 略 忽 略自 畫(huà) 所 需 的 數(shù) 據(jù)字 符 串 指 針 返 回 23 注 意 :( 1

18、) 當(dāng) 形 參 nFlags為 MF_BYPOSITION時(shí) , nPosition表 示新 菜 單 項(xiàng) 要 插 入 的 位 置 , 該 位 置 為 0時(shí) 表 示 新 菜 單 項(xiàng) 插 入到 第 一 個(gè) 菜 單 項(xiàng) , 為 1時(shí) 表 示 新 菜 單 項(xiàng) 插 入 到 第 二 個(gè) 菜 單項(xiàng) , 當(dāng) 為 -1時(shí) , 表 示 新 菜 單 項(xiàng) 插 入 到 菜 單 的 末 尾( 2) 在 形 參 nFlags中 , 可 以 用 按 位 或 運(yùn) 算 符 “ |”將 某 些 取值 組 合 起 來(lái) , 如 : MF_CHECKED|MF_STRING等 。 但 有些 組 合 是 不 允 許 的 , 如 : MF_

19、DISABLED、MF_ENABLED和 MF_GRAYED等 。( 3) 當(dāng) 利 用 以 上 函 數(shù) 向 菜 單 中 新 增 菜 單 后 , 不 管 菜 單 所在 的 窗 口 是 否 改 變 , 都 應(yīng) 調(diào) 用 CWnd類(lèi) 的 成 員 函 數(shù)CWnd:DrawMenuBar來(lái) 更 新 菜 單 , 函 數(shù) DrawMenuBar的原 型 為 :void DrawMenuBar(); 返 回 24 刪 除 菜 單 項(xiàng) 當(dāng) 要 刪 除 指 定 的 菜 單 項(xiàng) 時(shí) , 可 利 用 CMenu類(lèi) 的 成 員 函數(shù) DeleteMenu來(lái) 完 成 , 該 函 數(shù) 的 原 型 為 :BOOL Delete

20、Menu(UNIT nPosition,UNIT nFlags); 其 中 : 形 參 nPosition的 值 表 示 要 刪 除 的 菜 單 項(xiàng) 的 位 置 ,其 值 的 選 取 要 受 到 形 參 nFlags的 取 值 的 影 響 。 當(dāng) nFlags的取 值 為 MF_BYCOMMAND時(shí) , nPosition表 示 要 刪 除 的 菜單 項(xiàng) 的 ID號(hào) , 而 當(dāng) nFlags的 取 值 為 MF_BYPOSITION時(shí) ,nPosition表 示 要 刪 除 的 菜 單 項(xiàng) 的 位 置 ( 第 一 個(gè) 菜 單 項(xiàng) 的 位置 為 0, 第 二 個(gè) 菜 單 項(xiàng) 的 位 置 為 1,

21、) 。注 意 : 當(dāng) 調(diào) 用 DeleteMenu函 數(shù) 刪 除 某 個(gè) 菜 單 項(xiàng) 后 , 不 管 菜 單所 依 附 的 窗 口 是 否 改 變 , 也 必 須 調(diào) 用 CWnd類(lèi) 的 成 員 函 數(shù)CWnd:DrawMenuBar來(lái) 更 新 菜 單 。 返 回 25 獲 取 菜 單 項(xiàng) 可 以 利 用 CMenu類(lèi) 的 以 下 三 個(gè) 成 員 函 數(shù) 分 別 獲 得 菜 單的 項(xiàng) 數(shù) 、 菜 單 項(xiàng) 的 ID號(hào) 以 及 彈 出 式 子 菜 單 的 句 柄 。( 1) GetMenuItemCount函 數(shù)該 函 數(shù) 的 原 型 為 :UNIT GetMenuItemCount() cons

22、t; 該 函 數(shù) 的 功 能 是 取 得 菜 單 中 的 菜 單 項(xiàng) 數(shù) , 如 果 調(diào) 用 失敗 則 返 回 值 為 -1。( 2) GetMenuItemID函 數(shù)該 函 數(shù) 的 原 型 是 :UNIT GetMenuItemID(int nPos) const; 該 函 數(shù) 的 功 能 是 返 回 由 參 數(shù) nPos所 指 定 的 菜 單 項(xiàng) 位 置的 菜 單 項(xiàng) 的 ID號(hào) , 若 nPos所 指 定 的 位 置 處 為 分 隔 線(xiàn) , 則該 函 數(shù) 的 返 回 值 為 -1。 返 回 26 ( 3) GetSubMenu函 數(shù)該 函 數(shù) 的 原 型 為 :CMenu *GetSub

23、Menu(int nPos) const; 該 函 數(shù) 的 功 能 是 獲 得 指 定 菜 單 的 彈 出 式 菜 單 的 菜 單 句柄 。 該 彈 出 式 菜 單 位 置 由 參 數(shù) nPos給 定 , 開(kāi) 始 的 位 置 為 0,若 菜 單 不 存 在 , 則 創(chuàng) 建 一 個(gè) 臨 時(shí) 的 菜 單 指 針 。 此 外 , 在 主 框 架 CMainFrame類(lèi) 中 , 可 以 利 用 該 類(lèi) 的 成員 函 數(shù) CMainFrame:GetMenu來(lái) 獲 得 主 菜 單 句 柄 。 該 函 數(shù)的 原 型 為 :CMenu *GetMenu(); 返 回 27 5. 快 捷 菜 單 的 實(shí) 現(xiàn)

24、利 用 MFC提 供 的 CMenu類(lèi) 的 TrackPopupMenu成 員 函 數(shù)可 以 用 來(lái) 顯 示 一 個(gè) 彈 出 式 菜 單 , 該 函 數(shù) 的 原 型 為 : BOOL TrackPopupMenu(UNIT nFlags,int x,int y,CWnd *pWnd,LPCRECT lpRect=0); 其 中 : ( 1) 形 參 nFlags表 示 菜 單 在 屏 幕 上 顯 示 的 位 置以 及 鼠 標(biāo) 的 按 鈕 狀 態(tài) , 具 體 見(jiàn) 表 6.4所 示 。 其 中 前 三 個(gè) 值可 分 別 與 后 兩 個(gè) 值 用 “ |”運(yùn) 算 符 進(jìn) 行 組 合 。nFlags的

25、值 含 義 及 作 用TPM_CENTERALIGNTPM_LEFTALIGNTPM_RIGHTALIGNTPM_LEFTBUTTON TPM_RIGHTBUTTON 決 定 菜 單 的 屏 幕 位 置 , 水 平 中 心 位 置 由 x坐 標(biāo) 確 定決 定 菜 單 的 屏 幕 位 置 , 菜 單 的 左 邊 位 置 由 x坐 標(biāo) 確 定決 定 菜 單 的 屏 幕 位 置 , 菜 單 的 右 邊 位 置 由 x坐 標(biāo) 確 定鼠 標(biāo) 按 鈕 標(biāo) 志 , 當(dāng) 用 戶(hù) 單 擊 左 鍵 時(shí) 彈 出 快 捷 菜 單鼠 標(biāo) 按 鈕 標(biāo) 志 , 當(dāng) 用 戶(hù) 單 擊 右 鍵 時(shí) 彈 出 快 捷 菜 單 返 回

26、 28 ( 2) 形 參 x和 y表 示 菜 單 的 水 平 坐 標(biāo) 和 菜 單 的 頂 端 的 垂 直坐 標(biāo) 。( 3) pWnd表 示 彈 出 菜 單 的 窗 口 , 此 窗 口 將 收 到 菜 單 全部 的 WM_COMMAND消 息 。( 4) lpRect是 一 個(gè) RECT結(jié) 構(gòu) 或 CRect類(lèi) 的 對(duì) 象 指 針 , 它表 示 一 個(gè) 矩 形 區(qū) 域 , 用 戶(hù) 單 擊 這 個(gè) 區(qū) 域 時(shí) , 彈 出 菜 單 不消 失 , 而 當(dāng) lpRect為 NULL時(shí) , 則 當(dāng) 用 戶(hù) 單 擊 菜 單 外 面 時(shí) ,菜 單 會(huì) 立 刻 消 失 。 下 面 , 我 們 在 上 例 的 基

27、 礎(chǔ) 上 , 添 加 一 個(gè) 快 捷 菜 單 , 并使 其 能 夠 完 成 與 與 雙 擊 應(yīng) 用 程 序 窗 口 或 選 擇 【 顯 示 】 菜單 中 的 【 個(gè) 人 資 料 】 菜 單 項(xiàng) 一 樣 的 功 能 。 具 體 步 驟 如 下 :步 驟 一 : 在 Visual C+ 6.0中 , 選 擇 【 File】 菜 單 中 的【 Open Workspace】 菜 單 項(xiàng) , 打 開(kāi) 上 例 中 的 “ Dialog.dsw” 返 回 29 步 驟 二 : 添 加 一 個(gè) 新 的 菜 單 資 源 。 選 擇 【 Insert】 菜 單 中的 【 Resource】 菜 單 項(xiàng) , 或

28、直 接 按 Ctrl+R鍵 , 在 打 開(kāi) 的【 Insert Resource】 對(duì) 話(huà) 框 窗 口 中 選 擇 【 Menu】 , 單 擊【 New】 按 鈕 。步 驟 三 : 在 工 作 區(qū) 窗 口 中 選 擇 【 Resource View】 選 項(xiàng) 卡 ,展 開(kāi) 【 Dialog Resources】 目 錄 , 再 展 開(kāi) 【 Menu】 文 件 夾 ,將 會(huì) 看 到 菜 單 IDR_MENU1( 這 是 系 統(tǒng) 給 該 菜 單 資 源 的 缺省 ID號(hào) ) 。 雙 擊 IDR_ MENU1, 將 在 菜 單 資 源 編 輯 器 中打 開(kāi) 菜 單 資 源 。 用 鼠 標(biāo) 雙 擊 主

29、 菜 單 最 右 邊 的 空 菜 單 項(xiàng) ,或 者 用 鼠 標(biāo) 右 鍵 單 擊 它 , 在 彈 出 的 快 捷 菜 單 中 選 擇【 Properties】 菜 單 項(xiàng) 。 在 出 現(xiàn) 的 “ Menu Item Properties”對(duì) 話(huà) 框 中 的 【 Caption】 欄 中 任 意 輸 入 一 個(gè) 標(biāo) 題 , 最 后 按回 車(chē) 鍵 退 出 該 對(duì) 話(huà) 框 。 返 回 30 步 驟 四 : 在 快 捷 菜 單 中 增 加 菜 單 項(xiàng) 。 在 菜 單 資 源 編 輯 器中 用 鼠 標(biāo) 右 鍵 單 擊 【 顯 示 】 菜 單 中 的 空 菜 單 項(xiàng) , 在 出 現(xiàn)的 快 捷 菜 單 中 選

30、 擇 【 Properties】 選 項(xiàng) 。 在 出 現(xiàn) 的 “ Menu Item Properties”屬 性 對(duì) 話(huà) 框 的 【 Caption】 欄 中 輸 入“個(gè) 人資 料 ( dlg.m_radio_m=0;dlg.m_edit_name=;CString msg;if(dlg.DoModal()=IDOK) msg=按 鈕 被 按 下 ! ; else msg=按 鈕 被 按 下 ! ; 返 回 33 msg+=rnn;msg+=姓 名:;msg+=dlg.m_edit_name;msg+=rn;msg+=性 別:;switch(dlg.m_radio_m)case 0:msg+

31、=男; break;case 1:msg+=女; break;msg+=rn;msg+=最高學(xué)歷:;msg+=dlg.m_combo_school; msg+=rn;msg+=愛(ài) 好:; 返 回 34 if(dlg.m_check_art=TRUE)msg+=藝 術(shù) ;if(dlg.m_check_music=TRUE)msg+=音 樂(lè) ;if(dlg.m_check_sport=TRUE)msg+=體 育 ;AfxMessageBox(msg);步 驟 九 : 選 擇 【 View】 菜 單 中 的 【 ClassWizard】 菜 單 項(xiàng) .在 出 現(xiàn) 的 【 MFC ClassWizar

32、d】 對(duì) 話(huà) 框 中 , 選 擇【 Message Maps】 選 項(xiàng) 卡 。 在 【 Class name】 下 拉 列 表 框中 , 選 擇 類(lèi) CMainFrame; 在 【 Object Ids】 中 選 擇CMainFrame選 項(xiàng) ; 在 【 Messages】 欄 中 選 擇WM_CONTEXTMENU。 單 擊 對(duì) 話(huà) 框 右 側(cè) 的 【 Add Function】 返 回 35 按 鈕 , 系 統(tǒng) 將 會(huì) 彈 出 【 Add Member function】 對(duì) 話(huà) 框 。系 統(tǒng) 將 自 動(dòng) 生 成 一 個(gè) 缺 省 名 稱(chēng) 為 OnContextMenu的 映 射 函數(shù) ,

33、單 擊 【 OK】 按 鈕 。 單 擊 【 Edit Code】 按 鈕 退 出【 MFC ClassWizard】 對(duì) 話(huà) 框 , 并 對(duì) OnContextMenu函 數(shù)進(jìn) 行 如 下 編 輯 :void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) / TODO: Add your message handler code hereCMenu menu;menu.LoadMenu(IDR_MENU1);menu.GetSubMenu(0)-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,po

34、int.x,point.y,this); 返 回 36 步 驟 十 : 編 譯 運(yùn) 行 并 測(cè) 試 此 應(yīng) 用 程 序 。 當(dāng) 在 應(yīng) 用 程 序 窗口 中 , 單 擊 鼠 標(biāo) 右 鍵 時(shí) , 會(huì) 彈 出 快 捷 菜 單 , 選 擇 其 中 的【 個(gè) 人 資 料 】 菜 單 項(xiàng) , 則 彈 出 【 個(gè) 人 資 料 】 對(duì) 話(huà) 框 。 在對(duì) 話(huà) 框 內(nèi) 可 以 進(jìn) 行 各 種 設(shè) 置 , 然 后 單 擊 【 確 認(rèn) 】 或 【 取消 】 按 鈕 退 出 。 可 以 看 到 其 效 果 與 雙 擊 應(yīng) 用 程 序 窗 口 或選 擇 【 顯 示 】 菜 單 中 的 【 個(gè) 人 資 料 】 菜 單 項(xiàng)

35、 是 一 樣 的 。 6. 動(dòng) 態(tài) 向 菜 單 中 添 加 新 的 菜 單 項(xiàng)下 面 , 我 們 在 上 例 的 基 礎(chǔ) 上 , 向 程 序 中 動(dòng) 態(tài) 增 加 一 個(gè) 新的 菜 單 項(xiàng) , 具 體 步 驟 如 下 :步 驟 一 : 在 Visual C+ 6.0中 , 選 擇 【 File】 菜 單 中 的【 Open Workspace】 菜 單 項(xiàng) , 打 開(kāi) 上 例 中 的 【 Dialog.dsw】文 件 。步 驟 二 : 選 擇 【 View】 菜 單 中 的 【 Resource Symbols】 菜單 項(xiàng) , 則 會(huì) 出 現(xiàn) 【 Resource View】 對(duì) 話(huà) 框 。 返

36、 回 37 步 驟 三 : 單 擊 對(duì) 話(huà) 框 中 【 New】 按 鈕 , 則 出 現(xiàn) “ New Symbol”對(duì) 話(huà) 框 。 在 該 對(duì) 話(huà) 框 中 的 Name文 本 框 中 , 輸 入一 個(gè) 用 于 菜 單 項(xiàng) 的 ID號(hào) , 如 : 在 本 例 中 輸 入“ ID_NEW_MENUITEM”。 在 Value文 本 框 中 輸 入 對(duì) 在 該ID號(hào) 的 ID值 , 系 統(tǒng) 缺 省 為 101, 用 戶(hù) 也 可 以 自 行 修 改 成 新值 , 新 值 必 須 處 在 1561440之 間 。 在 此 取 系 統(tǒng) 默 認(rèn) 值 ,單 擊 【 OK】 按 鈕 。步 驟 四 : 利 用 V

37、isual C+的 工 作 區(qū) 窗 口 , 打 開(kāi)CMainFrame類(lèi) 的 實(shí) 現(xiàn) 文 件 MainFrm.cpp文 件 , 在CMainFrame:OnCreate函 數(shù) 體 中 添 加 如 下 代 碼 :int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)/ 前 一 部 分 在 此 省 略 返 回 38 CMenu *pMainMenu=GetMenu();CMenu *pSubMenu=pMainMenu-GetSubMenu (4);CString StrOfNewMenuItem(新 建 菜 單 項(xiàng) );pSubMenu-Ap

38、pendMenu (MF_SEPARATOR);pSubMenu-AppendMenu (MF_STRING,ID_NEW_MENUITEM,StrOfNewMenuItem);m_bAutoMenuEnable=FALSE;pMainMenu-EnableMenuItem (ID_NEW_MENUITEM,MF_BYCOMMAND|MF_ENABLED);DrawMenuBar();return 0; 返 回 39 步 驟 五 : 選 擇 【 View】 菜 單 中 的 【 ClassWizard】 菜 單 項(xiàng) ,在 出 現(xiàn) 的 【 MFC ClassWizard】 對(duì) 話(huà) 框 中 , 選

39、擇 【 Message Maps】 選 項(xiàng) 卡 。 在 【 Class name】 下 拉 列 表 框 中 , 選 擇 類(lèi)CMainFrame; 在 【 Object Ids】 中 選 擇 CMainFrame選 項(xiàng) ; 在 【 Messages】 欄 中 選 擇 OnCommand。 單 擊 對(duì) 話(huà) 框 右 側(cè) 的【 Edit Code】 按 鈕 , 系 統(tǒng) 將 會(huì) 進(jìn) 入 CMainFrame:OnCommand編 輯 窗 口 , 輸 入 以 下 黑 體 部 分 代 碼 :BOOL CMainFrame:OnCommand(WPARAM wParam, LPARAM lParam) / T

40、ODO: Add your specialized code here and/or call the base classif (LOWORD(wParam)=ID_NEW_MENUITEM) MessageBox(您 選 中 了 新 的 菜 單 項(xiàng) );return CFrameWnd:OnCommand(wParam, lParam); 此 步 中 完 成 了 對(duì) 新 增 菜 單 項(xiàng) 的 消 息 映 射 功 能 。步 驟 六 : 編 譯 運(yùn) 行 并 測(cè) 試 此 應(yīng) 用 程 序 。 返 回 40 6.2 創(chuàng) 建 工 具 欄 工 具 欄 是 一 系 列 工 具 按 鈕 的 組 合 , 也 是

41、 一 種 常 用 的 命令 輸 入 方 式 。 可 以 說(shuō) , 工 具 欄 是 菜 單 的 一 種 快 捷 方 式 。1 .創(chuàng) 建 工 具 欄 的 方 法 和 步 驟創(chuàng) 建 工 具 欄 資 源 在 這 里 , 我 們 將 對(duì) 上 一 節(jié) 的 例 子 進(jìn) 行 擴(kuò) 充 , 增 加 一 個(gè)工 具 欄 。 當(dāng) 用 鼠 標(biāo) 選 擇 工 具 欄 上 的 某 個(gè) 按 鈕 時(shí) , 顯 示 出【 個(gè) 人 資 料 】 對(duì) 話(huà) 框 。 具 體 步 驟 如 下 :步 驟 一 : 打 開(kāi) 上 一 節(jié) 創(chuàng) 建 的 Dialog例 子 。步 驟 二 : 在 工 作 區(qū) 窗 口 中 選 擇 【 Resource View】

42、選 項(xiàng) 卡 ,展 開(kāi) 【 Dialog Resources】 文 件 夾 , 由 于 我 們 在 用AppWizard生 成 應(yīng) 用 程 序 時(shí) , 沒(méi) 有 選 擇 生 成 工 具 欄 , 因 此在 【 Dialog Resources】 文 件 夾 中 , 找 不 到 Toolbar文 件 夾 。 返 回 41 步 驟 三 : 選 擇 【 Insert】 菜 單 中 的 【 Resource】 菜 單 項(xiàng) ,在 彈 出 菜 單 中 選 擇 【 Insert】 菜 單 項(xiàng) 。 系 統(tǒng) 將 彈 出【 Insert Resource】 對(duì) 話(huà) 框 , 在 對(duì) 話(huà) 框 中 選 擇 【 Toolbar

43、】 ,單 擊 【 New】 按 鈕 。步 驟 四 : 系 統(tǒng) 將 自 動(dòng) 在 【 Dialog Resounrces】 文 件 夾 中添 加 一 個(gè) 【 Toolbar】 文 件 夾 , 同 時(shí) 在 【 Toolbar】 文 件 夾中 添 加 了 一 個(gè) 名 為 IDR_TOOLBAR1的 文 件 。 屏 幕 上 同時(shí) 顯 示 工 具 欄 設(shè) 計(jì) 窗 口 。步 驟 四 : 鼠 標(biāo) 右 鍵 單 擊 【 Resource View】 中 【 Toolbar】文 件 夾 中 的 IDR_TOOLBAR1項(xiàng) 目 。 在 彈 出 菜 單 中 選 擇【 Properties】 菜 單 項(xiàng) , 系 統(tǒng) 將

44、彈 出 工 具 欄 屬 性 對(duì) 話(huà) 框 。在 屬 性 對(duì) 話(huà) 框 中 的 【 ID】 框 中 , 我 們 把 ID號(hào) 修 改 為IDR_MYTOOLBAR。 返 回 42 步 驟 五 : 添 加 按 鈕 和 制 作 按 鈕 圖 標(biāo) 。 我 們 可 以 利 用【 Graphic】 和 【 Color】 工 具 欄 上 提 供 的 設(shè) 計(jì) 工 具 , 根 據(jù)自 己 需 要 制 作 按 鈕 圖 標(biāo) 。 我 們 用 字 母 R作 為 按 鈕 的 圖 標(biāo) 。 工 具 欄 按 鈕 的 繪 制 是 一 個(gè) 個(gè) 分 開(kāi) 進(jìn) 行 的 , 在 畫(huà) 完 一 個(gè)按 鈕 后 , 該 按 鈕 的 實(shí) 際 效 果 立 刻

45、顯 示 出 來(lái) 。 在 【 Toolbar Button Properties】 工 具 欄 按 鈕 屬 性 對(duì) 話(huà) 框中 , 各 項(xiàng) 的 含 義 如 表 6.5所 示 。項(xiàng) 目 含 義IDWidthHeightPrompt 用 于 輸 入 或 從 下 拉 列 表 中 選 擇 工 具 欄 按 鈕 的 ID號(hào)用 于 輸 入 工 具 欄 按 鈕 的 寬 度 , 單 位 是 像 素用 于 輸 入 工 具 欄 按 鈕 的 高 度 , 單 位 是 像 素工 具 欄 按 鈕 文 本 返 回 43 注 : 要 使 選 擇 工 具 欄 按 鈕 的 功 能 與 選 擇 菜 單 的 功 能 一致 時(shí) , 應(yīng) 將

46、工 具 欄 按 鈕 屬 性 對(duì) 象 框 中 的 ID號(hào) 設(shè) 置 為 與 某一 菜 單 項(xiàng) 的 ID號(hào) 相 同 。 值 得 一 提 的 是 , 在 創(chuàng) 建 工 具 欄 按 鈕 的 過(guò) 程 中 , 可 以 進(jìn) 行有 關(guān) 的 操 作 及 方 法 :( 1) 創(chuàng) 建 新 的 工 具 欄 按 鈕在 新 建 一 個(gè) 工 具 欄 的 過(guò) 程 中 , 在 工 具 欄 的 右 端 會(huì) 有 一 個(gè)空 按 鈕 , 用 鼠 標(biāo) 單 擊 該 按 鈕 , 則 該 按 鈕 的 周 圍 有 虛 的 方框 包 圍 , 同 時(shí) 在 編 輯 區(qū) 內(nèi) 顯 示 出 該 按 鈕 , 用 戶(hù) 可 以 在 其中 繪 制 圖 形 。( 2)

47、移 動(dòng) 工 具 欄 中 的 按 鈕在 編 輯 工 具 欄 的 過(guò) 程 中 , 可 以 根 據(jù) 用 戶(hù) 的 需 要 移 動(dòng) 工 具欄 中 的 按 鈕 , 將 某 個(gè) 按 鈕 放 置 到 所 需 要 的 位 置 上 。 返 回 44 ( 3) 復(fù) 制 工 具 欄 中 的 按 鈕在 工 具 欄 編 輯 窗 口 內(nèi) , 選 擇 待 移 動(dòng) 的 工 具 欄 按 鈕 , 在 按下 Ctrl鍵 的 同 時(shí) , 將 其 拖 動(dòng) 到 所 需 要 的 位 置 。( 4) 刪 除 工 具 欄 中 的 按 鈕方 法 是 用 鼠 標(biāo) 拖 動(dòng) 該 按 鈕 到 工 具 欄 以 外 的 位 置 。( 5) 在 工 具 欄 中

48、 的 按 鈕 間 插 入 空 格 可 以 根 據(jù) 需 要 在 某 個(gè) 按 鈕 的 左 邊 、 右 邊 或 兩 邊 插 入 一個(gè) 空 格 分 隔 符 , 方 法 是 : 如 果 某 按 鈕 左 邊 沒(méi) 有 任 何 空 格 , 拖 動(dòng) 該 按 鈕 向 右 移 動(dòng)并 當(dāng) 按 鈕 的 右 邊 界 接 觸 到 右 邊 按 鈕 時(shí) , 釋 放 鼠 標(biāo) 鍵 , 則可 以 此 按 鈕 的 左 邊 插 入 一 個(gè) 空 格 , 反 之 , 亦 然 。 如 果 某 按 鈕 的 左 邊 已 有 空 格 而 右 邊 沒(méi) 有 空 格 , 拖 動(dòng) 該按 鈕 向 左 移 動(dòng) 并 當(dāng) 按 鈕 的 左 邊 界 接 觸 到 左 邊

49、 按 鈕 時(shí) , 釋放 鼠 標(biāo) 鍵 , 則 可 在 此 按 鈕 右 邊 插 入 一 個(gè) 空 格 。 返 回 45 如 果 某 按 鈕 的 左 右 兩 邊 都 有 空 格 , 拖 動(dòng) 該 按 鈕 向 右 移 動(dòng)并 接 觸 到 相 鄰 按 鈕 時(shí) , 則 此 按 鈕 左 邊 的 空 格 保 留 , 按 鈕 右邊 的 空 格 消 失 。 反 之 亦 然 。 實(shí) 現(xiàn) 工 具 欄 編 碼 實(shí) 現(xiàn) 工 具 欄 。 具 體 實(shí) 現(xiàn) 步 驟 如 下 :步 驟 一 : 在 工 作 區(qū) 中 窗 口 中 選 中 【 Class View】 選 項(xiàng) 卡 ,用 鼠 標(biāo) 右 鍵 單 擊 【 CmainFrame】 ,在

50、彈 出 的 菜 單 中 選 擇【 Add Member Variable】 菜 單 項(xiàng) , 系 統(tǒng) 將 彈 出 【 Add Member Variable】 對(duì) 話(huà) 框 。步 驟 二 : 在 【 Variable Type】 欄 中 輸 入 類(lèi) 型 名 稱(chēng) CToolBar,在 【 Variable Name】 欄 中 輸 入 變 量 名 稱(chēng) m_MyDataToolBar。單 擊 【 OK】 按 鈕 繼 續(xù) 。 此 時(shí) , Visual C+將 自 動(dòng) 在 主 框 架 中 的 類(lèi) 定 義 文 件MainFrm.h中 添 加 以 下 聲 名 : CToolBar m_MyDataToolBar

51、; 返 回 46 步 驟 三 : 選 擇 【 View】 菜 單 中 的 【 ClassWizard】 菜 單 項(xiàng) ,或 者 直 接 按 Ctrl+R鍵 , 彈 出 【 MFC ClassWizard】 對(duì) 話(huà) 框 。在 【 Class name】 列 表 框 選 擇 CmainFrame類(lèi) ; 在 【 Object Ids】 列 表 框 中 選 中 CMainFrame; 雙 擊 【 Messages】 列 表欄 中 的 WM_CREATE選 項(xiàng) , 或 者 選 中 WM_CREATE, 再單 擊 【 Add Function】 按 鈕 。 在 【 Member Function】 欄 中將

52、 會(huì) 出 現(xiàn) OnCreate()函 數(shù) 。步 驟 四 : 單 擊 【 Edit Code】 按 鈕 , ClassWizard將 自 動(dòng) 在框 架 類(lèi) 的 實(shí) 現(xiàn) 文 件 MainFrm.cpp中 添 加 成 員 函 數(shù)OnCreate()。 在 函 數(shù) 中 加 入 顯 示 工 具 欄 的 代 碼 。 具 體 代 碼如 下 , 其 中 粗 體 部 分 為 新 添 加 的 代 碼 。 返 回 47 Int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CFrameWnd:OnCreate(lpCreateStruct) = -1)

53、return -1;/ TODO: Add your specialized creation code hereif (!m_MyDataToolBar.Create(this)|!m_MyDataToolBar.LoadToolBar(IDR_MYTOOLBAR) TRACE0(Failed to created toolbarn); return -1; return 0; 返 回 48 步 驟 五 : 編 譯 并 運(yùn) 行 該 程 序 。當(dāng) 單 擊 工 具 欄 上 的 新 建 按 鈕 , 窗 口 中 將 彈 出 【 個(gè) 人 資料 】 對(duì) 話(huà) 框 。 此 按 鈕 的 作 用 和 選 擇 【

54、 顯 示 】 菜 單 中 的【 個(gè) 人 資 料 】 菜 單 項(xiàng) 的 效 果 是 一 樣 的 。說(shuō) 明 :( 1) 在 上 例 創(chuàng) 建 工 具 欄 的 過(guò) 程 中 , 曾 用 到 了 CToolBar類(lèi)的 對(duì) 象 , CToolBar類(lèi) 是 由 CControlBar類(lèi) 派 生 而 來(lái) 的 , 它用 于 描 述 工 具 欄 。 其 中 , Create函 數(shù) 是 其 成 員 函 數(shù) , 該 函數(shù) 的 原 型 為 :BOOL Create(Cwnd *pParentWnd, DWORD wStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP, UNIT nID=AFX_IDW_TO

55、OLBAR);其 中 : 參 數(shù) pParentWnd是 指 向 父 窗 口 的 指 針 , dwStyle是工 具 欄 的 風(fēng) 格 , nID是 子 窗 口 的 ID號(hào) 。 返 回 49取 值 風(fēng) 格CBRS_TOPCBRS_BOTTOMCBRS_NOALIGNCBRS_TOOLTIPSCBRS_SIZE_DYNAMICCBRS_SIZE_FIXEDCBRS_FLOATINGCBRS_FLYBYCBRS_HIDE_INPLACE 在 框 架 窗 口 的 頂 部在 框 架 窗 口 的 底 部不 隨 父 窗 口 改 變 尺 寸顯 示 按 鈕 提 示尺 寸 可 改 變控 件 條 固 定浮 動(dòng) 狀

56、態(tài)狀 態(tài) 欄 中 顯 示 按 鈕 的 信 息不 顯 示 工 具 欄 表6.6 工具欄的部分風(fēng)格 返 回 50 ( 2) TRACE宏 TRACE宏 提 供 了 類(lèi) 似 與 printf函 數(shù) 的 輸 出 格 式 , 用 于 將某 一 信 息 ( 即 字 符 串 ) 輸 出 到 Dump的 設(shè) 備 環(huán) 境 DC中 。 該宏 只 在 調(diào) 試 狀 態(tài) 下 工 作 。 TRACE宏 的 限 制 是 一 次 最 多 輸出 512個(gè) 字 符 。 如 :int i = 1;char sz = one;TRACE( Integer = %d, String = %sn, i, sz );此 外 , 還 有 T

57、RACE0TRACE3這 樣 4個(gè) 獨(dú) 立 的 宏 , 分 別 用于 輸 出 純 字 符 串 字 符 串 +3個(gè) 參 數(shù) 。 它 們 的 原 型 分 別 為 :TRACE0( exp )TRACE1( exp, param1 ) TRACE2( exp, param1, param2 )TRACE3( exp, param1, param2, param3 ) 返 回 51 如 :TRACE0( Start Dump of MyClass members: );int i = 1;TRACE1( Integer = %dn, i ); / Output: Integer = 1int j =

58、1;char sz = one;TRACE2( Integer = %d, String = %sn,j, sz ); / Output: Integer = 1, String = one2. 如 何 實(shí) 現(xiàn) 工 具 欄 的 船 塢 化 所 謂 船 塢 化 工 具 欄 就 是 可 以 將 工 具 欄 拖 動(dòng) 到 屏 幕 的 任意 位 置 上 , 還 可 以 用 鼠 標(biāo) 改 變 工 具 欄 的 大 小 。 下 面 我 們就 來(lái) 實(shí) 現(xiàn) 工 具 欄 的 船 塢 化 。 返 回 52 首 先 要 通 過(guò) 調(diào) 用 C C o n t r o l B a r 的 成 員 函 數(shù)EnableDockin

59、g()使 工 具 欄 能 夠 船 塢 化 ; 然 后 通 過(guò) 調(diào) 用CFrameWnd類(lèi) 的 成 員 函 數(shù) EnableDocking( ) 確 保 邊 框 窗口 能 夠 船 塢 化 ; 最 后 調(diào) 用 CFrameWnd的 成 員 函 數(shù)DockControlBar( ) 使 工 具 欄 固 定 在 邊 框 窗 口 上 。 所 有 這 些 工 作 都 在 邊 框 窗 口 類(lèi) 的 成 員 函 數(shù) OnCreate()中完 成 。 這 三 個(gè) 函 數(shù) 的 原 型 為 :void CControlBar:EnableDocking( DWORD dwStyle );void CFrameWnd:

60、EnableDocking( DWORD dwDockStyle );void CFrameWnd:DockControlBar( CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL );其 中 : 參 數(shù) dwStyle和 dwDockStyle表 示 工 具 欄 的 風(fēng) 格 , 其取 值 見(jiàn) 表 6.6, pBar是 指 向 待 船 塢 化 的 工 具 欄 的 指 針 。 返 回 53 具 體 代 碼 如 下 , 其 中 粗 體 部 分 為 新 添 加 的 代 碼 。int CMainFrame:OnCreate(L

61、PCREATESTRUCT lpCreateStruct) if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1; / TODO: Add your specialized creation code here if (!m_MyDataToolBar.Create(this)| !m_MyDataToolBar.LoadToolBar(IDR_MYTOOLBAR) TRACE0(Failed to created toolbarn); return -1; 返 回 54m_MyDataToolBar.EnableDocking(CBRS_

62、ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(return 0; 編 譯 并 運(yùn) 行 該 應(yīng) 用 程 序 , 將 看 到 工 具 欄 已 經(jīng) 船 塢 化 了 ???以 用 鼠 標(biāo) 將 它 拖 動(dòng) 到 窗 口 的 任 意 位 置 。 返 回 55 6.3 創(chuàng) 建 狀 態(tài) 欄 狀 態(tài) 欄 位 于 應(yīng) 用 程 序 框 架 窗 口 的 底 部 , 它 可 以 分 割 成 幾個(gè) 窗 格 , 一 般 用 于 顯 示 一 些 文 本 信 息 , 比 如 : 工 具 欄 按 鈕的 提 示 信 息 、 Caps Lock鍵 及 Num Loc

63、k鍵 的 狀 態(tài) 等 等 。1 .創(chuàng) 建 狀 態(tài) 欄 資 源下 面 , 我 們 在 前 例 的 基 礎(chǔ) 上 , 為 應(yīng) 用 程 序 Dialog添 加 一 個(gè)狀 態(tài) 欄 , 用 來(lái) 顯 示 一 個(gè) 消 息 區(qū) 、 一 個(gè) 字 符 串 和 Num Lock鍵 的 狀 態(tài) 。 其 具 體 步 驟 如 下 :步 驟 一 : 為 狀 態(tài) 欄 的 內(nèi) 容 建 立 一 個(gè) ID號(hào) 。步 驟 二 : 在 對(duì) 話(huà) 框 中 單 擊 【 New】 按 鈕 , 彈 出 【 New S y m b o l 】 對(duì) 話(huà) 框 , 在 【 N a m e 】 欄 中 填 入ID_STATUSBAR_STR,在 【 Valu

64、e】 欄 中 的 數(shù) 字 是 系 統(tǒng) 為 用戶(hù) 提 供 的 ID數(shù) 值 。 單 擊 【 OK】 按 鈕 繼 續(xù) 。 返 回 56 步 驟 三 : 新 添 加 的 ID信 息 將 會(huì) 出 現(xiàn) 在 【 Resource Symbols】對(duì) 話(huà) 框 的 列 表 中 。 單 擊 【 Close】 按 鈕 關(guān) 閉 【 Resource Symbols】 對(duì) 話(huà) 框 。 此 時(shí) 完 成 創(chuàng) 建 ID的 工 作 。 步 驟 四 : 在工 作 區(qū) 窗 口 中 選 擇 【 Resource View】 選 項(xiàng) 卡 , 雙 擊【 String Table】 文 件 夾 中 的 【 String Table】 選

65、項(xiàng) , 窗 口 中將 顯 示 出 串 表 編 輯 器 。 在 編 輯 器 中 單 擊 鼠 標(biāo) 右 鍵 , 在 彈出 的 菜 單 中 選 擇 【 New String】 菜 單 項(xiàng) 。步 驟 五 : 系 統(tǒng) 彈 出 【 String Properties】 對(duì) 話(huà) 框 , 在 【 ID】框 中 選 擇 ID_STATUSBAR_STR項(xiàng) , 在 【 Caption】 框 中 輸入 字 符 串 “ 測(cè) 試 狀 態(tài) 欄 ! ” , 按 【 Enter】 鍵 確 認(rèn) 。 返 回 57 2. 實(shí) 現(xiàn) 狀 態(tài) 欄實(shí) 現(xiàn) 狀 態(tài) 欄 的 具 體 步 驟 如 下 :步 驟 一 : 在 工 作 區(qū) 窗 口 中

66、選 擇 【 Class View】 選 項(xiàng) 卡 , 用鼠 標(biāo) 右 鍵 單 擊 【 CMainFrame】 選 項(xiàng) , 在 彈 出 菜 單 中 選 擇【 Add Member Variable】 菜 單 項(xiàng) 。 彈 出 【 Add Member Variable】 對(duì) 話(huà) 框 ,在 【 Variable Type】 欄 中 輸 入 類(lèi) 型 名 稱(chēng)CStatusBar, 在 【 Variable Name】 欄 中 輸 入 類(lèi) 型 名 稱(chēng) 為m_MyStatusBar。 單 擊 【 OK】 按 鈕 繼 續(xù) 。此 時(shí) , Visual C+將 自 動(dòng) 在 主 框 架 的 類(lèi) 定 義 文 件MainFrm.h中 添 加 以 下 聲 明 :CStatusBar m_MyStatusBar;步 驟 二 : 在 MainFrm.cpp文 件 中 加 入 數(shù) 組 indicators的 定 義 ,具 體 代 碼 如 下 , 其 中 粗 體 部 分 為 新 增 加 的 代 碼 。 返 回 58 / CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)B

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!