我知道通过拖动可以使工具栏成为两列,但怎么在程序里面控制,使它一开始就显示为两列?
解决方案 »
- 再次提问同类问题!!!!!如何把当前内存中的BMP图片,保存到自己定义格式的file文件中去啊?以便于下次再重file文件中读取相关信息重构原图片.
- 含有ATL控件的测试页面放到server端后,不能正常显示!!!!
- 冒昧的问个问题。请看图片(这个工程是什么开发的)
- CList模板类的查询使用问题。
- 我要在一个函数中改变一个树型控件中一个节点前面的图象,应该怎么做呢?
- 有DSP高手吗,我想请一下,目前国内国外的dsp通讯技术的发展状况,以及国内的发展前景,我很想考通讯类的研究生,欢迎大家提提建议,谢谢
- CALLBACK 请教何为函数回调,其用法用处。
- 100分求你一点小小提示
- 这里有没有旅游的人哦,我们一共囿只囿4个人【一男三女】,有兴趣的加入偶们,只有15个名额。。。。
- 为什么加上ADO的控件后对话框不能显示
- 无标题对话框如何拖动?
- 超级奇怪,成员函数居然一引用静态变量,则编译通过,链接时报错
RecalcLayout();
CRect rect;
m_wndMyBar1.GetWindowRect(rect);
rect.OffsetRect(1, 0);//偏移一个位置
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM,rect);///也停靠在底部
如何将两个ControlBar停靠在同一列中 DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_RIGHT);///停靠在右边
RecalcLayout();
CRect rect;
m_wndMyBar1.GetWindowRect(rect);
rect.OffsetRect(0, 1);//看到这里的区别了吗
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_RIGHT,rect);///也停靠在右边
1.用MoveWindow()改变工具栏大小,希望它能自动根据大小调整按钮为两列。
结果:失败
现象:边框大小没变,可是里面的按钮区域好像变了,可能是工具栏的大小变了,可是在浮动状态下,用于包含工具栏的CDockedMiniFram...的边框没变。2.既然浮动时是包含在一个自动创建的框架中的,所以用GetParent(),再MoveWindow()父窗口。
结果:主应用程序的窗口大小变了,工具栏没变。3.在创建工具栏时指定CRect(0,0,40,300)。
结果:工具栏高度变为300,可是宽度不受40的影响,约为200,刚好显示下一行按钮。4.对工具栏的每个按钮应用TBSTATE_WRAP风格
结果:没影响5.期待中……^_^ 用了以上方法,都没把它搞成一个工具箱一样的多列工具栏,不知道是不是我的代码的位置不对(我在CMainFram::OnCreat里加的代码),还是这些方法都不行。
我把主要的思路讲一下:
比方说做一个两列的工具栏,
int nCount = GetToolBarCtrl().GetButtonCount();//获得工具栏按钮的个数
int nColumns=2;//两列
for(int i = 0; i < nCount; i++)
{
UINT nStyle = GetButtonStyle(i);
BOOL bWrap = (((i + 1) % nColumns) == 0);
if (bWrap)
nStyle |= TBBS_WRAPPED;
else
nStyle &= ~TBBS_WRAPPED; SetButtonStyle(i, nStyle);
}基本上就可以了,不行的化就去看看原码,
{
int nCount = tb.GetToolBarCtrl().GetButtonCount();
for (int i = 0; i < nCount; i++)
{
UINT nStyle = tb.GetButtonStyle(i);
BOOL bWrap = (((i + 1) % nColumns) == 0);
if (bWrap)
nStyle |= TBBS_WRAPPED;
else
nStyle &= ~TBBS_WRAPPED;
tb.SetButtonStyle(i, nStyle);
}
Invalidate();
RecalcLayout();
}
//ok
我用的方法如下:
CRect rcNew;m_wndMyToolBar.GetToolBarCtrl().SetRows(m_wndMyToolBar.GetCount()/2,true,&rcNew);
m_wndMyToolBar.EnableDocking(0);
FloatControlBar(&m_wndMyToolBar,CPoint(0,0), CBRS_ALIGN_RIGHT);SetRows()一定要在FloatControlBar前。