为什么第二次调用CToolBar::LoadToolBar(ID)时失败

wiw 2007-05-29 12:44:45
我的程序原是个独立的程序(基于对话框的,加工具条),后加到主程序中才出现这个问题。当第二次打开对话框时,工具条还是可以显示的(调用 CToolBar::LoadToolBar(ID)失败后不返回,返回了就显示不出来了),也能响应消息,只是图标不能显示。调试时 CToolBar::LoadToolBar(ID)失败,有那位知道请指教,这二十分我双手赠送
...全文
562 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq335702318 2011-05-21
  • 打赏
  • 举报
回复
感谢你的答案!谢谢!!!
cleverwyq 2007-05-29
  • 打赏
  • 举报
回复
合乎lz意愿的demo

dlg.cpp
BOOL CTDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

m_wndToolBar.MoveWindow(0,0, 100, 40,TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}


///////// SDI ,单击鼠标弹出dlg
// CRightWiderView message handlers

void CRightWiderView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
Dlg = new CTDlg;//Dlg is member pointer
Dlg->DoModal();
delete Dlg;
CView::OnLButtonDown(nFlags, point);
}

想弹多少次都ok正确

关键是用指针,不要用对象
wiw 2007-05-29
  • 打赏
  • 举报
回复
可能是因为关闭对话框的时候,工具栏并没有被销毁,只是看不见了。可以我加了Invilidate仍然显示不出来
wiw 2007-05-29
  • 打赏
  • 举报
回复
没有冲突,只是工具条上的图标显示不出来了
sycnick 2007-05-29
  • 打赏
  • 举报
回复
检查ID先
拿节 2007-05-29
  • 打赏
  • 举报
回复
独立程序的时候好使?
加到主程序的时候就不好使了!
是不是资源ID存在冲突啊?
你可以仔细看看Resource.h下ID的定义!

15,979

社区成员

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

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