프린트시 가로 제어에 대해
페이지 정보
본문
프린트 프로그래밍을 하고 있습니다. 그런데 가로로 프린트를 해야 하는데 있어서 문제가 발생했습니다. 코드는 다음과 같습니다.
DEVMODE dm;
memset(&dm, 0, sizeof(dm));
dm.dmSpecVersion = DM_SPECVERSION;
dm.dmSize = sizeof(dm);
dm.dmFields = DM_ORIENTATION;
dm.dmOrientation = DMORIENT_LANDSCAPE;
pDC->ResetDC(&dm);
이렇게 지정을 했는데 문제는 그 다음 페이지부터 가로로 인쇄가 된다는 것입니다. 그리고 윈도우 NT 환경에서는 이 작업이 진행되지 않습니다. 해결 방법을 알려주세요.
가로 인쇄 제어를 다음과 같은 방법으로 해 보세요.
CDC dc;
CPrintDialog dlg1(FALSE), dlg2(FALSE);
dlg1.GetDefaults();
LPDEVMODE pDM = dlg1.GetDevMode();
// ++
if(pDM == NULL) {
AfxMessageBox(IDS_NOT_READY_PRINTER, MB_ICONSTOP);
return;
}
pDM->dmOrientation = DMORIENT_LANDSCAPE;
pDM->dmPrintQuality = 300;
pDM->dmYResolution = 300;
dlg2.m_pd.hDevMode = (HANDLE)pDM;
if(dlg2.DoModal() == IDOK)
dc.Attach(dlg2.GetPrinterDC()); // PrinterDC를 얻는다.
else
return;
DOCINFO di;
::ZeroMemory(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Preset Pulse Graph Printing...";
if(dc.StartDoc(&di) > 0) {
// 필요한 데이터를 출력한다.
}
DEVMODE dm;
memset(&dm, 0, sizeof(dm));
dm.dmSpecVersion = DM_SPECVERSION;
dm.dmSize = sizeof(dm);
dm.dmFields = DM_ORIENTATION;
dm.dmOrientation = DMORIENT_LANDSCAPE;
pDC->ResetDC(&dm);
이렇게 지정을 했는데 문제는 그 다음 페이지부터 가로로 인쇄가 된다는 것입니다. 그리고 윈도우 NT 환경에서는 이 작업이 진행되지 않습니다. 해결 방법을 알려주세요.
가로 인쇄 제어를 다음과 같은 방법으로 해 보세요.
CDC dc;
CPrintDialog dlg1(FALSE), dlg2(FALSE);
dlg1.GetDefaults();
LPDEVMODE pDM = dlg1.GetDevMode();
// ++
if(pDM == NULL) {
AfxMessageBox(IDS_NOT_READY_PRINTER, MB_ICONSTOP);
return;
}
pDM->dmOrientation = DMORIENT_LANDSCAPE;
pDM->dmPrintQuality = 300;
pDM->dmYResolution = 300;
dlg2.m_pd.hDevMode = (HANDLE)pDM;
if(dlg2.DoModal() == IDOK)
dc.Attach(dlg2.GetPrinterDC()); // PrinterDC를 얻는다.
else
return;
DOCINFO di;
::ZeroMemory(&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Preset Pulse Graph Printing...";
if(dc.StartDoc(&di) > 0) {
// 필요한 데이터를 출력한다.
}
댓글목록
등록된 댓글이 없습니다.