我想做一个打印预览的界面,类似于word,但功能要求很简单,只要能把打印机上要显示的先显示在一个新的最大化窗口里就行。
我是这样创建最大化窗口的:
CFrameWnd *pFWnd = new CFrameWnd;
pFWnd->Create(....);
往窗口中画图时出现了异常:
HDC hdc = GetDC(AfxGetMainWnd()->GetSafeHwnd());
LineTo(200,200);
ReleaseDC(...);
以上语句没有实现在新建的窗口中画图。
问题:
1。我应该怎样在这个新开的窗口中画图?
2。我如果想在窗口顶部加几个按钮,(类似word的打印预览界面)应该怎样实现?
3。如果大家有实现的好想法,欢迎给我emai:[email protected]
我是这样创建最大化窗口的:
CFrameWnd *pFWnd = new CFrameWnd;
pFWnd->Create(....);
往窗口中画图时出现了异常:
HDC hdc = GetDC(AfxGetMainWnd()->GetSafeHwnd());
LineTo(200,200);
ReleaseDC(...);
以上语句没有实现在新建的窗口中画图。
问题:
1。我应该怎样在这个新开的窗口中画图?
2。我如果想在窗口顶部加几个按钮,(类似word的打印预览界面)应该怎样实现?
3。如果大家有实现的好想法,欢迎给我emai:[email protected]
void CMyReportView::OnFileOpen()
{
char Filter[] = "Crystal Report files(*.rpt)|*.rpt|All files(*.*)|*.*||";
CRect rect;
CFileDialog OpenDlg(TRUE,0,0,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,(LPCTSTR)Filter,NULL);
if(OpenDlg.DoModal()!=IDOK) ///显示文件对话框
return;
CString m_fName=OpenDlg.GetPathName(); ///取得文件名
if(m_CrystalReport)
m_CrystalReport.DestroyWindow();
GetClientRect(rect);
///////////////////创建控件///////////////
if (!m_CrystalReport.Create(AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),WS_CHILD|WS_VISIBLE,rect,this,IDC_CRYSTALREPORT1))
{
AfxMessageBox("控件创建失败!");
return ;
}
m_CrystalReport.SetWindowParentHandle((long)(this->m_hWnd));///设置父窗口
m_CrystalReport.SetWindowBorderStyle(0); ///设置为没有边框
m_CrystalReport.SetWindowLeft(0); ///左空间
m_CrystalReport.SetWindowTop(0); ///顶部空间
m_CrystalReport.SetWindowControls(FALSE); ///不显示工具条
m_CrystalReport.SetReportFileName(m_fName); ///设置报表文件
m_CrystalReport.SetWindowWidth(rect.Width()); ///设置窗口宽度
m_CrystalReport.SetWindowHeight(rect.Height()); ///设置窗口高度
m_CrystalReport.SetFormulas(0, "Company=\"VC知识库\""); ///将报表中的Company变量的值设置为VC知识库
m_CrystalReport.SetDestination(0); ///设置输出对象是屏幕
m_CrystalReport.PrintReport(); ///显示报表
}
void CMyReportView::OnFilePrint()
{
if(m_CrystalReport && m_CrystalReport.GetReportFileName() != "")
{
m_CrystalReport.SetDestination(1); ///设置输出对象是打印机
m_CrystalReport.PrintReport(); ///打印------------
請看:http://passmatlab.myetang.com/vc/dat/18.htm
http://www.vckbase.com/code/downcode.asp?id=386
你设置mainwnd了吗?