我使用CSplitterWnd::CreateStatic拆分出两个窗格。其中一个窗格是由CListView派生的,我想在这个窗格中添加一个属于这个窗格的工具栏。使用的是:if (!m_List_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_List_ToolBar.LoadToolBar(IDR_TOOLBAR2))。
其中:
class CDList_ToolBar : public CToolBar
CDList_ToolBar m_List_ToolBar;没有报错,但是也没有显示工具栏。向诸位请教:
1、SDI 静态拆分出的窗格中是否可以添加单独的工具栏。
2、怎样实现。另:我在主视图中添加的工具栏可以正常使用。
谢谢
其中:
class CDList_ToolBar : public CToolBar
CDList_ToolBar m_List_ToolBar;没有报错,但是也没有显示工具栏。向诸位请教:
1、SDI 静态拆分出的窗格中是否可以添加单独的工具栏。
2、怎样实现。另:我在主视图中添加的工具栏可以正常使用。
谢谢
解决方案 »
- 为什么《精通Visual c++.Net图像处理编程》里面的方法还是用MFC编的呀?
- 使用SentMessage发送WM_SIZE,使窗口最小化,如何给SentMessage付参,请不吝指教?
- 声明函数参数时,怎么不能几个参数一起声明? func(int a,int b) 怎么不能为 func(int a,b) ?
- GDI绘图程序文件外,怎么调用重绘?
- 请问这个是什么?
- 高手请进!在线结贴!!
- 简单问题:怎样动态的到对话框的句柄
- 哪儿有比较全面一点的国家/地区--代码查询?比如中国-86,台湾886,美国1.....送分啦!
- DEBUG和RELEASE的问题?
- 请问:使用CFileDialog调用打开对话框,如何设置一个初始路径?比如"d:\app\" 谢谢
- VS2005和VC6.0的区别
- 高分求《visual C++系统开发实例精选》光盘内容?
在主视图中加很多个工具栏都没问题。将任何一个工具栏试图建在窗格中都是不显示,也不报错。
CDListView* PList=(CDListView*)CSplitterWnd_2.GetPane(0,0); //我做了两次拆分。//添加 工具栏
if (!m_List_ToolBar.CreateEx(PList, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_List_ToolBar.LoadToolBar(IDR_TOOLBAR2)) //CreateEx是成功的
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
CDListView* PList=(CDListView*)CSplitterWnd_2.GetPane(0,0);
//添加 工具栏
if (!m_List_ToolBar_m.CreateEx(PList, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_List_ToolBar_m.LoadToolBar(IDR_TOOLBAR2))
如果在DListView.cpp中在OnCreate
//添加 工具栏
if (!m_List_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_List_ToolBar.LoadToolBar(IDR_TOOLBAR2))在SDI拆分出的一个View中添加一个ToolBar是允许的吗?我现在一直比较怀疑。哪位朋友实际做过?
在框架中我们要停靠一个工具栏 并不是简单的一个CreateEX就行了,我们还要让它的父窗口接受他的停靠,自己也要让自己具有停靠才行,在框架中我们不是常常见到这几个个函数吗
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
我没有试过,你可以试一下
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_List_ToolBar.LoadToolBar(IDR_TOOLBAR2))
m_List_ToolBar.MoveWindow(0,0,100,40);试验下
在CDListView::OnCreate中
if (!m_List_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_BOTTOM
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_List_ToolBar.LoadToolBar(IDR_TOOLBAR2))
{
TRACE0("未能创建工具栏\n");
return -1; // 未能创建
}
在CDListView::OnSize中
if(::IsWindow(m_List_ToolBar.m_hWnd))
{
m_List_ToolBar.MoveWindow(0,cy-18,cx,cy);
}
就是我要的效果了,多谢gotooker。
多谢joimson,不过你得方法还没有试。目前对“停靠”还没有一个透彻的理解。
这就结贴了。