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);
*/
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);
*/