CPrintDialog dlg(FALSE); if (!dlg.GetDefaults()) AfxMessageBox(_T("You have no default printer!")); else ...{ // attach to the DC we were given CDC dc; dc.Attach(dlg.m_pd.hDC); // ask for the measurements int nHorz = dc.GetDeviceCaps(LOGPIXELSX); int nVert = dc.GetDeviceCaps(LOGPIXELSY); // almost always the same in both directions, but sometimes not! /**//*CString str; if (nHorz == nVert) str.Format(_T("Your printer supports %d pixels per inch"), nHorz); else str.Format(_T("Your printer supports %d pixels per inch ") _T("horizontal resolution, and %d pixels per inch vertical ") _T("resolution"), nHorz, nVert); */ // tell the user this->m_PageWidth = (float) dc.GetDeviceCaps(PHYSICALWIDTH)/nHorz; this->m_PageHeight = (float) dc.GetDeviceCaps(PHYSICALHEIGHT)/nVert; /**//* AfxMessageBox(str); str.Format(_T("实际可打印的区域 width:%f height:%f"),this->m_PageWidth,this->m_PageHeight); AfxMessageBox(str); */ this->m_MarginLeft = (float) dc.GetDeviceCaps(PHYSICALOFFSETX)/nHorz; this->m_MarginTop = (float) dc.GetDeviceCaps(PHYSICALOFFSETY)/nVert; /**//*str.Format(_T("可打印区的水平/垂直偏移 width:%f height:%f"),this->m_MarginLeft,this->m_MarginTop); AfxMessageBox(str); */ this->m_PageActWidth = (float) dc.GetDeviceCaps(HORZRES)/nHorz; this->m_PageActHeight = (float) dc.GetDeviceCaps(VERTRES)/nVert; /**//*str.Format(_T("纸张大小 width:%f height:%f"),this->m_PageActWidth,this->m_PageActHeight); AfxMessageBox(str); */ this->m_MarginRight =this->m_PageWidth -this->m_MarginLeft -this->m_PageActWidth; this->m_MarginBottom =this->m_PageHeight-this->m_MarginTop -this->m_PageActHeight; /**//* str.Format(_T("纸张右边距,下边距 width:%f height:%f"),this->m_MarginRight,this->m_MarginBottom); AfxMessageBox(str); */
CPrintDialog dlg(FALSE); if (!dlg.GetDefaults()) AfxMessageBox(_T("You have no default printer!")); else ...{ // attach to the DC we were given CDC dc;