UINT BASED_CODE DockTool[]={ID_NEWGAME,ID_SAVE,ID_OPEN,ID_SEPARATOR,ID_COPYFEN,ID_PASTEFEN,ID_SEPARATOR,IDC_ABORT,IDC_ABORT,ID_SEPARATOR,ID_SOUNDEFECT};
// CChnChessDlg 消息处理程序
BOOL CChnChessDlg::DrawToolBar(UINT nResID,CSize size,DWORD dwStyle){
//创建工具栏
BOOL bRt = m_wndToolBar.Create(this,dwStyle);
if(bRt)
{
/* 创建自定义位图的工具栏初始化工作 ***************************************************/
//定义工具栏上的按钮的所对应的标识 //加载工具栏要用的位图
CBitmap bitmap;
bitmap.LoadBitmapW(nResID);
//建立工具栏中的图片列表
static CImageList m_ilToolBar;
m_ilToolBar.Create(size.cx,size.cy,ILC_COLOR32,,);//以多少像素来切割图片
m_ilToolBar.Add(&bitmap,(CBitmap*)NULL);
//设置工具栏按钮图片
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBar); //设置工具栏的按钮大小,和按钮中位图大小(注意: 按钮大小必须大于按钮中位图大小)
SIZE sbutton;
sbutton.cx= size.cx + ;
sbutton.cy=size.cy + ;
m_wndToolBar.SetSizes(sbutton,size);
//设置工具栏上按钮的所对应的标识,和按钮个数
UINT nButtonNum = sizeof(DockTool)/sizeof(UINT);
m_wndToolBar.SetButtons(DockTool,nButtonNum);
TRACE(_T("\r\n sizeof(DockTool)/sizeof(UINT) = %d"),sizeof(DockTool)/sizeof(UINT)); /* 前期准备工作 *************************************************************************/
CRect rcClientOld;
CRect rcClientNew;
// 用 rcClientOld 获取客户区间
GetClientRect(rcClientOld);
// 用 rcClientNew 获得除了 ToolBar 区的对话框客户区
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,,reposQuery,rcClientNew);
//获得在加入 ToolBar 后控件应该移动的偏移偏移量
CPoint ptOffset(rcClientNew.left-rcClientOld.left,rcClientNew.top-rcClientOld.top); /* 重新设置对话框的窗体区间 *************************************************************/
//得到对话框窗体区间
CRect rcWindow;
GetWindowRect(rcWindow);
//修改对话框宽度和高度,即让对话框添加上 ToolBar 的高度和适应 ToolBar 的高度
rcWindow.right += rcClientOld.Width() - rcClientNew.Width();
rcWindow.bottom += rcClientOld.Height() - rcClientNew.Height();
//移动对话框
MoveWindow(rcWindow,FALSE); /* 调整控件位置 *************************************************************************/
CRect rcChild;
//获得窗口控件
CWnd* pwndChild = GetWindow(GW_CHILD);
//遍历控件
while(pwndChild)
{
//获得控件区间
pwndChild->GetWindowRect(rcChild);
//将屏幕坐标转换为客户区坐标
ScreenToClient(rcChild);
//将控件移动相对位置
rcChild.OffsetRect(ptOffset);
//移动控件
pwndChild->MoveWindow(rcChild,FALSE);
//获得下个控件句柄
pwndChild = pwndChild->GetNextWindow();
}
//显示 ToolBar
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,);
}
return bRt;
}

在对话框中利用CToolBar类添加工具条的方法的更多相关文章

  1. Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:

    Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...

  2. SpringBoot中Service实现类添加@Service却任然无法注入的问题

    最近一直在研究Spring Boot.从GitHub上下载了一个my-Blog源码,一边看,一边自己尝试去实现,结果掉在坑了,研究了近一周才爬出来,特地来这博客园记录下来,一是避免自己在放这样的错误, ...

  3. QT中添加工具条QToolBar

    项目用的QT5.3,设计师中没有直接拖工具条的控件,那要怎么加工具条呢? 其实.ui文件是xml类型的文本文件,用uedit或记事本打开,找到之前有的工具条段落,复制粘贴一个,保存,再在vs中用设计师 ...

  4. Entity Framework中的实体类添加复合主键

    使用Code First模式实现给实体类添加复合主键,代码如下: using System; using System.Collections.Generic; using System.Compon ...

  5. javascript中利用柯里化函数实现bind方法

    柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预 ...

  6. Android中的基类—抽取出来公共的方法

    在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类 ...

  7. (转)Android中的基类—抽取出来公共的方法

    在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类 ...

  8. wxWidgets:给窗口添加工具条

    请先看上一篇<wxWidgets入门>. 修改MyFrame.h: #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wxprec.h ...

  9. Android中利用画图类和线程画出闪烁的心形

                                                        本文讲解主要涉及的知识点: 1.线程控制 2.画图类 3.心形函数 大家先看图片: <ig ...

随机推荐

  1. ansible批量分发免密钥登陆python脚本

    最近看了看强大的号称自动化运维的三大利器之一的--ansible,ok,亲测之后,确实感觉,对于我们这种DBA工作者来说,确实很受益. 值得注意的是ansible要求被管理服务器python版本不低于 ...

  2. zabbix java api

    zabbix java api zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api Zabbix功能 概观 Zab ...

  3. jQuery之jquery.lazyload.js插件用法

    研究背景:网站中如果图片过多,就会因为加载图片而等待很长时间,此时我们就用到图片延时加载插件jquery.lazyload.js,这个插件可以让我们在向下滚动的时候加载图片.让网页首屏尽可能快的加载进 ...

  4. SpringBoot构建RESTful service完成Get和Post

    一个基本的RESTfule service最进场向外提供的请求Method就是Get和Post. 在Get中,常用的都会在请求上带上参数,或者是路径参数.响应Json. 在Post中,常用的会提交fo ...

  5. RMAN数据库恢复测试

    RMAN恢复实践   RMAN> list backup; using target database control file instead of recovery catalog List ...

  6. 解读java同步类CountDownLatch

    同步辅助类: CountDownLatch是一个同步辅助类,在jdk5中引入,它允许一个或多个线程等待其他线程操作完成之后才执行. 实现原理 : CountDownLatch是通过计数器的方式来实现, ...

  7. JackSon将java对象转换为JSON字符串

    JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的writeValueA ...

  8. Navicat查询哪些表有指定字段名

    通常需要查询某个字段来自于哪张表,在navicat中没有直接查哪些表有指定字段名的功能,只能用sql来查. 1.(按字段名查表)查询哪些表有指定字段名(比如查字段名article_id)的SQL: S ...

  9. 【Hadoop】NameNode

    一.背景介绍 当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到多台单独的计算机上.管理网络中跨多台计算机存储的文件系统称为分布式文件系统(dist ...

  10. 区别jquery对象和dom对象及转换方法

    一.jquery对象 由$() 获取,例如 var div = $("#id"); 这个div是jquery对象,它里面没有dom对象自带的方法.常见的dom对象自带的方法, 例如 ...