同一段代码在win98下能正确打印,但在win2000下打印的却非常小
编号:QA004413
建立日期: 2001年9月17日 最后修改日期:2001年9月17日
所属类别:
罗现朋:
操作系统:win98/2000
编程工具:vc
问题:同一段代码在win98下能正确打印,但在win2000下打印的却非常小,不知什么原因,希望能得到您的指导,谢谢!
//设置显示模式
::SetStretchBltMode(hDC,COLORONCOLOR);
//判断是调用StretchDIBits()还是SetDIBitsToDevice()来绘制对象
//原始大小,不用拉伸
bSuccess = ::SetDIBitsToDevice(hDC,//hDC
目标x,
目标y,
目标宽度,
目标高度,
源x,
源y,
0,//nStartScan
扫描的总线数,//nNumScans
存储位图的地址指针,//lpBits
位图信息,//lpBitsInfo
DIB_RGB_COLORS);
水平: 中级
回答:
对于我问的那个问题,我后来找到了一点眉目。发现在OnPrepareDC()中添加如下一段后不能打印,去掉后可以打印(在win2000下)
void CxxxView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_ANISOTROPIC);//转换坐标映射方式
//各向异性,在这种坐标方式下,X轴和Y轴的逻辑单位
//可以进行任意的缩放
CSize size = CSize(800, 560);
pDC->SetWindowExt(size);//确定窗口大小
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)size.cx * xLogPixPerInch/96 ;
long yExt = (long)size.cy * yLogPixPerInch/96 ;
//确定视口大小
pDC->SetViewportExt((int)xExt,(int)yExt);
CScrollView::OnPrepareDC(pDC, pInfo);
}
此问题由李海回答。
| |
|
|
| |
|
|