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;
}
05-08 08:07