打印预览问题!能不能不用MFC的View类,直接用API实现?如能解决另开帖子300相送!! 打印预览的API代码无非就是一些GDI函数的使用罢了将各种信息显示在一个窗口中,只不过你自己要控制确保预览出的效果与打印效果一致(其实只是DC不同罢了)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看CDC::StartDoc(应该就是这个名字,记不太清楚了) 那个好像中只是打印呀 CDC dc; CPrintDialog printDlg( FALSE ); if( printDlg.DoModal() != IDOK ) // Get printer settings from user return; else { dc.Attach( printDlg.GetPrinterDC() ); // attach a printer DC dc.m_bPrinting = TRUE; CString strTitle; strTitle.LoadString( AFX_IDS_APP_TITLE ); DOCINFO di; // Initialise print doc details memset( &di, 0, sizeof(DOCINFO) ); di.cbSize = sizeof( DOCINFO ); di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc( &di ); // Begin a new print job CPrintInfo Info; Info.m_rectDraw.SetRect( 0, 0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES) ); OnBeginPrinting( &dc, &Info ); // Initialise printing for( UINT page = Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK; page++ ) { dc.StartPage(); // begin new page Info.m_nCurPage = page; OnPrint( &dc, &Info ); // Print page bPrintingOK = (dc.EndPage() > 0); // end page } OnEndPrinting( &dc, &Info ); // Clean up after printing if( bPrintingOK ) dc.EndDoc(); // end a print job else dc.AbortDoc(); // abort job. dc.Detach(); // detach the printer DC } 你可以照MFC的思路啊,把用MFC类的地方全换成SDK就是了因为MFC是SDK的一个封装~~~~~ 呵呵,你真想知道看一下MFC源代码不就OK了。 向系统菜单添加一个菜单项(OnHelp2)后,咋不响应消息处理函数? 急问大虾:dll文件的存放位置!!在线等!!---实时错误'53':文件未找到:RTXHook.dll 郁闷,散分!最近公司被Borland盯上了,死活说我们盗用了他们的软件! 一个简单的问题??? 安装VC 6.0的奇怪问题!!! 如何从oracle导出数据到dbf中? Close process of ICQ 初学vc的编译问题! 谁能详细告诉我TEXTMETRIC结构 到底什么时候需要在com客户端里面声明一个CAtlComModule实例? 有关Tree控件!——初学者的问题 请问如何得到一个字符串的长度(象素)。
CPrintDialog printDlg( FALSE ); if( printDlg.DoModal() != IDOK ) // Get printer settings from user
return;
else
{
dc.Attach( printDlg.GetPrinterDC() ); // attach a printer DC
dc.m_bPrinting = TRUE; CString strTitle;
strTitle.LoadString( AFX_IDS_APP_TITLE ); DOCINFO di; // Initialise print doc details
memset( &di, 0, sizeof(DOCINFO) );
di.cbSize = sizeof( DOCINFO );
di.lpszDocName = strTitle; BOOL bPrintingOK = dc.StartDoc( &di ); // Begin a new print job CPrintInfo Info;
Info.m_rectDraw.SetRect( 0, 0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES) ); OnBeginPrinting( &dc, &Info ); // Initialise printing
for( UINT page = Info.GetMinPage(); page <= Info.GetMaxPage() && bPrintingOK; page++ )
{
dc.StartPage(); // begin new page
Info.m_nCurPage = page;
OnPrint( &dc, &Info ); // Print page
bPrintingOK = (dc.EndPage() > 0); // end page
}
OnEndPrinting( &dc, &Info ); // Clean up after printing if( bPrintingOK )
dc.EndDoc(); // end a print job
else
dc.AbortDoc(); // abort job. dc.Detach(); // detach the printer DC
}