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

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;
}
...全文
97 点赞 收藏 8
写回复
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);
这样指定父窗口可以吗
问题依然存在
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告