我没有写过基于对话框的ToolBar,不过我觉得如果跟踪到CControlBar中看看,一定会有收获。我觉得你能不能换一种方式来解决你的问题?你是想关掉你的ToolBar吗?
解决方案 »
- 这个地方很奇怪,不知道什么原理,请指教!!!!!!!!!!
- 关于断点
- 请问,我在MFC画图的时候,调用invalidateRect函数时只是我计算方框的一部分是咋回事啊?有什么好的方法?
- 如何判断指针非法?
- 我在做文件分割的时候遇到的问题
- ■■■■如何定义COM接口 如何在客户端使用该接口?■■■■
- 如何对一个表中的一个数值列进行AVERAGE,并将结果赋给一个变量.求救!!!
- SMTP邮件发送系统,DATA命令发不出去是怎么回事
- 如何实现两个View里面相同大小的两个Rect的显示内容的拷贝
- 到哪里找到改变路径的对话框,就像安装程序时选择安装路径时的对话框!
- 如何在程序中删除掉IE历史记录,是否有API函数?
- 为什么不能从CMainFrame里调用CHtmlView里的成员?
到msdn去查吧,一查就有。
对于CControlBar来说,显示与隐藏不用ShowWindow,而是用ShowControlBar函数,里面的参数就不用解释了吧。
GoodLuck!
在CDialog中其实是GetDockingFrame()得到指针调用ShowControlBar.
GetDockingFrame是在bar固定时,得到框架的指针,而浮动时就返回NULL.
所以浮动时就隐藏不了bar???
这么菜的问题还敢说“群雄束手”?呵呵。 在CFrameWnd里面有一个指针数组,记录着所有的ControlBar。当你调用CFrameWnd::ShowControlBar的时候,它就调用ShowWindow把那个ControlBar显示/隐藏掉。 当ControlBar浮动时(脱离主框架),这时它的停靠框架是浮动的框架CMiniFrameWnd。你说的那个小按钮属于这个框架,而不是ControlBar本身。事实上,ControlBar是一个没有标题栏的窗口,怎么会有这些东西呢? 如果你要在对话框中使用的话,最好直接使用CToolBarCtrl等控件,而不是使用MFC框架结构里面的那些。说实在的,我是头一次听说有人在对话框里加入框架,又加入ControlBar的。
我不能实现的是:当工具条浮动时,按小按钮让它隐藏的功能!!
你可以试试,当它浮动后,CFW窗口不会自动刷新,工具条无法隐藏...
请继续指点.
ft,你还没明白?!你说的那个小按钮属于这个框架,而不是ControlBar本身。事实上,ControlBar是一个没有标题栏的窗口,怎么会有这些东西呢? 你用工具条是无法处理这一消息的,除非你重载CMiniFrameWnd。
我重载OnClose就可以,但在toobar中就不行.而在一个单纯的文档视我根本就不用考虑这些鬼问题.:(
当工具条被拖出来时,主窗口会建立一个新的子窗口,就是浮动的那个,而它本身的工具条窗口会隐藏,用的是SetWindowsPos函数,参数cy=0(零高度的窗口,当然看不见拉),因为我看到了WM_WINDOWPOSCHANGED消息。停靠的过程将建立的子窗口 Destroy,恢复工具条的尺寸。所以按下浮动窗口上的关闭按钮还是产生了WM_CLOSE消息,子窗口出现时有WM_CREATE消息
当工具条被拖出来时,创建的是CMiniFrameWnd(派生于CFrameWnd),然后把那个toolbar停到它里面。至于详细的过程,直接看看MFC源代码就完了,需要什么spy++吗?呵呵。 我发现回答这个问题的人多半没有看过MFC源代码。
andygood:那怎么控制CMiniFrameWnd的那个按扭呢?如果能得到控制,
我简单的加个showwindow就可以解决问题...高手们指点啊!!
完全可以是做一个dialogbar大小等于小按钮大小(完全承载一个按钮)
然后m_dlgwnd->MoveWindow...把这个dialogbar移动到CControlBar上面你所需要的位置。
重载RecalcLayout在里面Move这个dialogbar就行,反正toolbar也是在客户区的。这样小按钮的消息就能接收到了。