在对话框中利用CToolBar类添加工具条的方法
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类添加工具条的方法的更多相关文章
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...
- SpringBoot中Service实现类添加@Service却任然无法注入的问题
最近一直在研究Spring Boot.从GitHub上下载了一个my-Blog源码,一边看,一边自己尝试去实现,结果掉在坑了,研究了近一周才爬出来,特地来这博客园记录下来,一是避免自己在放这样的错误, ...
- QT中添加工具条QToolBar
项目用的QT5.3,设计师中没有直接拖工具条的控件,那要怎么加工具条呢? 其实.ui文件是xml类型的文本文件,用uedit或记事本打开,找到之前有的工具条段落,复制粘贴一个,保存,再在vs中用设计师 ...
- Entity Framework中的实体类添加复合主键
使用Code First模式实现给实体类添加复合主键,代码如下: using System; using System.Collections.Generic; using System.Compon ...
- javascript中利用柯里化函数实现bind方法
柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预 ...
- Android中的基类—抽取出来公共的方法
在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类 ...
- (转)Android中的基类—抽取出来公共的方法
在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类 ...
- wxWidgets:给窗口添加工具条
请先看上一篇<wxWidgets入门>. 修改MyFrame.h: #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wxprec.h ...
- Android中利用画图类和线程画出闪烁的心形
本文讲解主要涉及的知识点: 1.线程控制 2.画图类 3.心形函数 大家先看图片: <ig ...
随机推荐
- WordCount去除标点方法之一
package com.bw.day10;import java.io.IOException;import java.util.StringTokenizer;import org.apache.h ...
- 在django中集成ckeditor富文本
目前用的比较多的富文本插件有百度的ueditor.ckeditor.kindeditor等,其中ueditor和kindeditor比较美观,ckeditor的皮肤较少.但是ueditor加载较慢,k ...
- JavaScript基础知识(一)
一.JavaScript基础 1.JavaScript用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...
- Python集合(set)类型的操作
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
- Leetcode Pasacl'sTriangle
对于Vector的用法,实在是知道的太少,算法思想比较简单,核心也就一行代码,但是实现错误就显示平时代码的不熟悉. Given numRows, generate the first numRows ...
- DVWA笔记之二:Command Injection
命令注入 1.Low级别 <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUE ...
- Jenkins : 邮件通知
目录 全局配置 为项目添加邮件通知 邮件模板 Pipeline 支持 总结 Jenkins 内置了 Mailer 插件用于发送邮件通知,但是 Mailer 插件的功能比较简单,无法按照用户的需求进行邮 ...
- python 用户登录
要求: 1.用户在登录之前要判断密码文件是否已经是锁定状态,如果是提示不让登录 2.登录用户密码输入错误3次,就锁定改用户,并更新文件内容 3.登录正确,提示欢迎登录信息 data.txt 文件内容: ...
- Coursera无法正常提交作业
如下图,upload服务貌似被墙了,想要提交作业的话需要临时科学上网.
- Sublime Text3 最常用快捷键
软件快捷键再多,平时常用的也就那么几个,先总结如下: 全选:Ctrl+A 复制:Ctrl+C 粘贴:Ctrl+V 删除:Ctrl+X 快速复制到下一行:Ctrl+Shift+D 快速向上移动代码:Ct ...