下面的代碼示例將使用打印機設置CDC對象上的GetDeviceCaps()返回當前打印機的頁面大小和CView派生類的成員函數:
/*需要編譯選項:無
*/
BOOL cmy view::get pagesize(CSize & amp;nRetVal)
{
print DLG FAR * pPrintDlg = new print DLG;
BOOL bRet = FALSE
//獲取當前打印機的設置。
if(AfxGetApp()-& gt;GetPrinterDeviceDefaults(pPrintDlg))
{
//獲取指向兩個設置結構的指針。
DEVNAMES FAR *lpDevNames =
(DEVNAMES FAR *)::global lock(pPrintDlg-& gt;hdev names);
DEVMODE FAR *lpDevMode =
(DEVMODE FAR *)::global lock(pPrintDlg-& gt;hdev mode);
//獲取具體的驅動信息。
CString SZ driver((LPTSTR)lpDevNames+
lpDevNames-& gt;wDriverOffset);
CString SZ device((LPTSTR)lpDevNames+
lpDevNames-& gt;wDeviceOffset);
CString SZ output((LPTSTR)lpDevNames+
lpDevNames-& gt;wOutputOffset);
//根據當前設置創建CDC對象。
CDC pDC
pDC。CreateDC(szDriver,szDevice,szOutput,lpDevMode);
//查詢此CDC對象以獲取當前的寬度和高度
//頁面。
nRetVal.cx = pDC。GetDeviceCaps(HORZSIZE);
nRetVal.cy = pDC。GetDeviceCaps(VERTSIZE);
//去掉CDC對象。
pDC。DeleteDC();
//解鎖指向設置結構的指針。
* global unlock(pPrintDlg-& gt;hdev names);
* global unlock(pPrintDlg-& gt;hdev mode);
bRet = TRUE
}
刪除pPrintDlg
返回bRet
}