分享
 
 
 

工 具 条 的 停 靠 控 制

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

---- 在VC5.0 中 开 发 大 型 应 用 程 序 时, 工 具 条 通 常 是 程 序 中 必 不 可 少 的 功 能 因 素, 在 整 个 窗 口 的 停 靠 位 置 尤 其 关 键, 它 直 接 影 响 到 程 序 界 面 的 外 观 形 象。 本 文 介 绍 各 类 工 具 条 停 靠 位 置 的 控 制 技 巧, 供 参 阅。

---- 标 准 工 具 条 的 停 靠 控 制

---- VC5.0 应 用 程 序 向 导 生 成 的 框 架 代 码 中, 都 具 有 普 通 工 具 条 的 控 制 方 法。 正 常 情 况 下 工 具 条 类CToolBar 是 控 制 条 类CControlBar 的 派 生 类, 其 显 示 的 初 始 停 靠 位 置 是 通 过 调 用 继 承 的 函 数CControlBar::EnableDocking(DWORD dwStyle) 来 确 定 的, 其 参 数dwStyle 用 来 指 定 停 靠 的 具 体 位 置, 与 本 文 有 关 的 格 式 如 下( 其 余 请 参 阅VC5.0 的 联 机 文 档):

---- CBRS -ALIGN -TOP 停 靠 在 框 架 窗 口 客 户 区 域 顶 部;

---- CBRS -ALIGN -BOTTOM 停 靠 在 框 架 窗 口 客 户 区 域 底 部;

---- CBRS -ALIGN -LEFT 停 靠 在 框 架 窗 口 客 户 区 域 左 边;

---- CBRS -ALIGN -RIGHT 停 靠 在 框 架 窗 口 客 户 区 域 右 边;

---- CBRS -ALIGN -ANY 停 靠 在 框 架 窗 口 客 户 区 域 任 何 位 置。

---- 在 利 用 应 用 程 序 向 导AppWizard 生 成 的 应 用 程 序 中, 其 控 制 代 码 默 认 的 停 靠 位 置 为CBRS -ALIGN -ANY, 即 允 许 停 靠 在 框 架 窗 口 客 户 区 域 的 任 何 边 上。 工 具 条 在 正 常 显 示 时 停 靠 在 窗 口 客 户 区 域 的 顶 部, 控 制 指 令 为EnableDocking(CBRS_ALIGN_ANY) 或m_wndToolBar. EnableDocking(CBRS_ALIGN_ANY), 注 意 在 实 际 程 序 控 制 时 前 者 必 须 处 于 所 有 其 他 控 制 代 码 的 前 面, 否 则 浮 动 工 具 条 或 特 殊 工 具 条 等 部 分 代 码 可 能 无 法 奏 效。 具 体 控 制 方 法 请 参 考 利 用 应 用 程 序 向 导 生 成 的 任 何 一 个 程 序 实 例 框 架 代 码 部 分 中 建 立 的 函 数ONCREATE()。

---- 应 用 程 序 的 单 文 档 和 多 文 档 的 窗 口 框 架 类 均 由CFrameWnd::EnableDocking(DWORD dwDockS tyle) 来 实 现 的, 其 可 选 的 参 数 除 上 述 五 种 之 外, 还 增 加 了CBRS FLOAT MULTI 参 数, 该 参 数 主 要 是 为 设 计 浮 动 工 具 条 而 增 加 的, 用 来 确 定 一 个 框 架 窗 口 中 允 许 存 在 多 个 浮 动 工 具 条。 同 样 利 用 应 用 程 序 向 导AppWizard 生 成 的 应 用 程 序, 其 默 认 的 停 靠 位 置 也 是CBRS -ALIGN -A NY, 即 允 许 工 具 条 停 靠 在 框 架 窗 口 的 任 何 边 上, 其 默 认 的 初 始 位 置 为 框 架 窗 口 的 顶 部, 即En ableDocking(CBRS_ALIGN_ANY) 或m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)。

---- 浮 动 工 具 条 的 停 靠 控 制

---- 当 一 个 框 架 窗 口 中 存 在 多 个 标 准 或 浮 动 工 具 条 时, 则 需 要 利 用 函 数void DockControlBar(CC ontrolBar *pBar,UINT nDockBarID=0,LPCRECT lpRect=NULL) 来 确 定 要 控 制 停 靠 位 置 的 工 具 条, 它 也 是CFrameWnd 类 的 成 员 函 数。 其 中 参 数pBar 用 来 指 向 被 控 制 停 靠 位 置 的 工 具 条 对 象 指 针, 参 数nDockBarID 用 来 确 定 工 具 条 停 靠 在 框 架 窗 口 的 哪 条 边 上, 其 控 制 的 具 体 取 值 为:

---- AFX -IDW -DOCKBAR -TOP 停 靠 在 框 架 窗 口 的 顶 部;

---- AFX -IDW -DOCKBAR -BOTTOM 停 靠 在 框 架 窗 口 的 底 部;

---- AFX -IDW -DOCKBAR -LEFT 停 靠 在 框 架 窗 口 的 左 边;

---- AFX -IDW -DOCKBAR -RIGHT 停 靠 在 框 架 窗 口 的 右 边。

---- 当 参 数nDockBarID 的 取 值 为0 时, 则 工 具 条 可 停 靠 在 框 架 窗 口 中 的 任 何 一 个 可 停 靠 的 边 上, 其 默 认 的 初 始 位 置 为 窗 口 顶 部。

---- 并 列 工 具 条 的 停 靠 控 制

---- 很 多 大 型 应 用 程 序 中 都 存 在 将 多 个 工 具 条 同 时 并 列 停 靠 在 某 窗 口 的 某 一 条 边 上 的 情 况。 对 这 种 停 靠 方 法, 可 利 用 上 述 工 具 条 控 制 函 数DockControlBar 的lpRect 参 数, 通 过 控 制 工 具 条 的 停 靠 矩 形 区 域 的 方 法 来 实 现。 实 现 的 函 数 如 下:

---- 1. 在 实 现 文 件MainFrm.h 中 增 加 如 下 成 员 函 数 定 义:

---- void DockControlBarLeftOf(CToolBar *Bar,CToolBar * LeftOf);

---- 2. 在 实 现 文 件MainFrm.cpp 中 增 加 如 下 成 员 函 数:

---- void CMainFrame::DockControlBarLeftOf(CToolBar * Bar,CTooIBar * LeftOf)

---- {// 设 置 工 具 条 并 列 停 靠 在 同 一 条 边 上

---- CRect rect; // 矩 形 区 域 定 义

---- DWORD dw;

---- UINT n=0;

---- RecalcLayout(); // 重 新 显 示

---- LeftOf ->GetWindowRect( &rect);

---- rect.Offset(1,0); // 设 置 偏 移 植 以 停 靠 在 同 一 边 上

---- dw=LeftOf ->GetBarStyle();

---- n=(dw &CBRS_ALIGN_TOP)?AFX_IDW_DOCKBAR_TOP:n;

---- n=(dw &CBRS_ALIGN_BOTTOM & &n==0)?AFX_IDW_DOCKBAR_BOTTOM:n;

---- n=(dw &CBRS_ALIGN_LEFT & &n==0)?AFX_IDW_DOCKBAR_LEFT:n;

---- n=(dw &CBRS_ALIGN_RIGHT & &n==0)?AFX_IDW_DOCKBAR_RIGHT:n;

---- DockControlBar(Bar,n, &rect);

---- }

---- 在 这 个 函 数 中 应 注 意 对RecalcLayout() 函 数 和OffestRect() 函 数 的 调 用, 前 者 用 来 重 新 显 示 被 调 整 的 客 户 区 和 工 具 条, 后 者 用 来 重 新 确 定 矩 形 区 域, 这 相 当 于 利 用 鼠 标 将 第 二 个 工 具 条 窗 口 拖 动 到 前 一 个 工 具 条 上 然 后 释 放。

---- 3. 修 改 应 用 程 序 建 立 函 数OnCreate() 中 的 相 应DockControlBar() 函 数 为DockControlBarOf() 函 数, 并 正 确 设 置 工 具 条 对 象 的 指 针。 笔 者 在 实 现 程 序 中 的 控 制 代 码 如 下:

---- EnableDocking(CBRS_ALIGN_ANY);// 停 靠 位 置 必 须 在 最 前 面

---- / / 工 具 条 建 立 函 数

---- m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

---- m_wndTestToolBar.EnableDocking(CBRS_ALIGN_ANY);

---- DockControlBar( &m_wndToolBar,AFX_IDW_DOCKBAR_TOP);

---- / / 使 两 个 工 具 条 并 列 停 靠

---- DockControlBarLeftOf( &m_wndTestToolBar, &m_wndToolBar);

---- 工 具 条 的 顶 部 停 靠 控 制

---- 1. 打 开 菜 单 资 源 增 加 顶 部 位 置 控 制 菜 单 项IDD_DLGBARTOP;

---- 2. 在 实 现 文 件MainFrm.h 中 增 加 成 员 控 制 变 量m_bDialogTop:

---- BOOL m_bDialogTop;

---- 并 在 构 造 函 数 中 设 置 初 始 值;

---- 3. 利 用 类 向 导ClassWizard 为 菜 单 项 设 置 响 应 函 数;

---- 4. 在 实 现 文 件MainFrm.cpp 中 通 过 充 分 利 用SetWindowPos() 成 员 完 善 消 息 映 射 功 能。

void CMainFrame::OnButtonDIgbartop()

{// 定 制 工 具 条 顶 部 位 置 控 制 函 数

if (m_bDialogTop)

m_wndDIgBar.SetWindowPos( &m_wndStatusBar,0,0,0,0,

SWP_NOSIZE|SWP_NOMOVE);

// 顶 部 工 具 条 停 靠 在 窗 口 边, 左 右 工 具 条 停 靠 其 下

else

m_wndDIgBar.SetWindowPos( &wndTop,0,0,0,0,

SWP_NOSIZE|SWP_NOMOVE);// 停 靠 在 最 顶 部

RecalcLayout();// 重 新 显 示 窗 口

m_bDialogTop=!m_bDialogTop;// 改 变 变 量 标 志

}

void CMainFrame::OnUpdateButtonDIgbartop(CCmdUI * pCmdUI)

{// 设 置 菜 单 项 检 查 状 态 更 新 函 数

pCmdUI -SetCheck(m_bDialogTop);

}

---- 这 样, 就 可 利 用 菜 单 项 来 控 制 定 制 工 具 条 的 顶 部 停 靠 位 置。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有