引用 1 楼 zgl7903 的回复: 我测试的没有问题
CPrintDialog dlg(FALSE);
if(dlg.DoModal() == PD_RESULT_PRINT)
{
HDC hDC = dlg.GetPrinterDC( );
int cx = GetDeviceCaps(hDC, HORZSIZE);
int cy = GetDeviceCaps(hDC, VERTSIZE);
TRACE(_T("cx=%d, cy=%d\n"), cx, cy);
DeleteDC(hDC);
}
我没有使用打印对话框,以下是过程:
通过枚举得到的打印机信息,根据选择的打印机,创建DC.
LPPRINTER_INFO_2 pTemp = m_pPrinter_info + nCursel;
HDC hPrintDC = CreateDC(pTemp->pDriverName,pTemp->pPrinterName,pTemp->pPortName,pTemp->pDevMode);
//成功后
CDC cCompatibleDC;
cCompatibleDC.Attach(hPrintDC);
int nPaper_W= cCompatibleDC.GetDeviceCaps(HORZSIZE); // 纸张宽度mm
int nPaper_H = cCompatibleDC.GetDeviceCaps(VERTSIZE); // 纸张高度mm
这里取宽高。我用100*100的纸测试,可以正常打印的。只是修改了纸张后,得不到修改后的。不知道是为什么。