关于在View中动态创建Toolbar,急!

xpf_2000 2006-12-13 04:29:01
我需要在View中动态创建一个Toolbar,我的做法是在View中动态创建一个Static,然后再把动态创建的Toolbar放到Static中,代码如下:
if (!m_clToolBar.Create( this ) ||
!m_clToolBar.LoadToolBar(IDR_PALETTE_BAR))
{
TRACE0("Failed to create toolbar1\n");
return; // fail to create
}
m_clToolBar.SetBarStyle(CBRS_ALIGN_RIGHT);
m_clTBHolder.Create("", 0, CRect( LEFT_OF_TOOLBAR, TOP_OF_TOOLBAR,
RIGHT_OF_TOOLBAR, m_iToolBarHieght), this );
WINDOWPLACEMENT wndPlmnt;
m_clTBHolder.GetWindowPlacement(&wndPlmnt);

m_pBar = &m_clToolBar.GetToolBarCtrl();
int i = m_pBar->SetWindowPlacement(&wndPlmnt);
现在遇到的问题是Debug下能显示出来,Release下却显示不出来,非常急,请兄弟们帮忙。
...全文
187 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpf_2000 2006-12-14
  • 打赏
  • 举报
回复
找到原因了,Toolbar支持动态添加按钮,添加后我根据当天滚动条的位置吧窗口移到相应的位置,因为在没有滚动条的时候,Debug下GetScrollInfo取到的当前位置是一个很大的负数,因此我判断如果是负数,说明没有滚动条,就不进行移动窗口了,而在Release下,这个数变为了很大的一个正数,此时移动窗口,会根本看不见,因此出现了我描述的问题,多谢以上几位,初始值害死人啊,真想扁一顿写Scrollbar的,嘿嘿
happyness44 2006-12-13
  • 打赏
  • 举报
回复
我试了一下,可以显示啊,不是这段代码的原因

int CLabView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
if (!m_clToolBar.Create( this ) ||
!m_clToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar1\n");
return 0; // fail to create
}
m_clToolBar.SetBarStyle(CBRS_ALIGN_RIGHT);

m_clTBHolder.Create("", 0, CRect( 0, 0,
30, 200), this );
WINDOWPLACEMENT wndPlmnt;
m_clTBHolder.GetWindowPlacement(&wndPlmnt);

m_pBar = &m_clToolBar.GetToolBarCtrl();
int i = m_pBar->SetWindowPlacement(&wndPlmnt);

return 0;
}
xpf_2000 2006-12-13
  • 打赏
  • 举报
回复
assert的话,Debug应该能发现啊,我先跟一跟,多谢!
qiujian5628 2006-12-13
  • 打赏
  • 举报
回复
我觉得该从debug 和 release的区别入手找到错误
你可以搜索assert 然后看看哪个assert可能会出错
xpf_2000 2006-12-13
  • 打赏
  • 举报
回复
多谢帮顶!
myfriend023 2006-12-13
  • 打赏
  • 举报
回复
沙发
帮顶!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧