一个打印预览问题----高分请教(在线等 ... ...)

automic 2005-03-18 09:39:54
采用MFC进行打印预览出现如下的错误:
Debug Assertion Failed!

File: bardlg.cpp
Line: 48

跟踪到出问题的地方是:

pView->m_pToolBar = new CDialogBar;
if (!pView->m_pToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource),
CBRS_TOP, AFX_IDW_PREVIEW_BAR))

请问如何解决问题该问题



调用的代码如下:

void CNo3ListView::OnFilePrintPreview()
{
// TODO: Add your specialized code here and/or call the base class
CListView::OnFilePrintPreview();
}

主窗口代码如下:

int CNo3Frame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetPaneInfo(1,ID_SEPARATOR,SBPS_NORMAL,200);

m_wndToolBar.LoadToolBar(IDR_TOLB_FY);

CNo3ListView *m_pView = new CNo3ListView;
if (!m_pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
{
TRACE0("Failed to create view window\n");
return -1;
}
SetActiveView((CView*)m_pView);

return 0;
}
...全文
127 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
automic 2005-03-18
  • 打赏
  • 举报
回复
谢谢楼上
我怎样指定父窗口呢
adamx 2005-03-18
  • 打赏
  • 举报
回复
可能你创建的时候没有指定父窗口.
automic 2005-03-18
  • 打赏
  • 举报
回复
楼上你好
好象是为空,应该怎么解决呢?
adamx 2005-03-18
  • 打赏
  • 举报
回复
Debug Assertion Failed!

pView->m_pToolBar = new CDialogBar;
if (!pView->m_pToolBar->Create(pParent, MAKEINTRESOURCE(nIDResource),
CBRS_TOP, AFX_IDW_PREVIEW_BAR))



Assert 那条语句呢?

是不是 pParent 为空?
automic 2005-03-18
  • 打赏
  • 举报
回复
楼上你好
参考的是关于对话框的,现在的问题是关于VIEW的
54783szg 2005-03-18
  • 打赏
  • 举报
回复
可以参考这个:http://www.vckbase.net/document/viewdoc/?id=1270
automic 2005-03-18
  • 打赏
  • 举报
回复
// dialog template must exist and be invisible with WS_CHILD set
if (!_AfxCheckDialogTemplate(lpszTemplateName, TRUE))
{
ASSERT(FALSE); // invalid dialog template name <<=====问题所在
PostNcDestroy(); // cleanup if Create fails too soon
return FALSE;
}
以上是跟踪到的问题所在
automic 2005-03-18
  • 打赏
  • 举报
回复
CString Title;
Title.LoadString(IDR_MAINFRAME);
CWnd *pwnd = CWnd::FindWindow(NULL,Title);
g_pAlarmUnitFrame->Create(NULL,"设备信息", WS_OVERLAPPEDWINDOW, CRect(40,60,830,460), pwnd);
这样指定父窗口可以吗
问题依然存在

15,978

社区成员

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

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