0
내 문서의 "기본"페이지 크기를 설정하는 데 문제가 있습니다. Windows에서 Visual C++를 사용하고 있으며 GDI 호출 (이전 버전과의 호환성을 위해 필요함)이 있습니다.C++ 인쇄용 GDI 페이지 설정 설정
지금까지 나의 기본 접근 방식은 기본값 인 DEVMODE
을 얻고 원하는 속성을 설정 한 다음 사용자가 원하는대로 변경할 것인지 묻는 메시지를 표시합니다. 그러나 페이지 크기에 아무런 차이가없는 것처럼 보입니다. 오리엔테이션에서 작동합니다.
내가 뭘 잘못하고 있니?
HDC GetPrinterDC() {
// Initialize device
PRINTDLG pd = {0};
pd.lStructSize = sizeof(pd);
pd.Flags = PD_RETURNDEFAULT;
PrintDlg(&pd);
// If device initialization failed, abort
if (pd.hDevMode == NULL) return NULL;
// Get the actual memory pointer
PDEVMODE dm = (PDEVMODE)GlobalLock(pd.hDevMode);
if (dm) {
// Set any properties that are specific for our document
if (dm->dmFields & DM_ORIENTATION)
dm->dmOrientation = DMORIENT_LANDSCAPE;
if (dm->dmFields & DM_PAPERSIZE)
dm->dmPaperSize = 0;
if (dm->dmFields & DM_PAPERLENGTH)
dm->dmPaperLength = 3302; // 13in
if (dm->dmFields & DM_PAPERWIDTH)
dm->dmPaperWidth = 4572; // 18in
GlobalUnlock(pd.hDevMode);
}
// Initialize a PRINTDLG structure.
pd.hwndOwner = GetForegroundWindow();
pd.Flags = PD_RETURNDC | PD_HIDEPRINTTOFILE | PD_DISABLEPRINTTOFILE | PD_NOPAGENUMS | PD_NOSELECTION | PD_USEDEVMODECOPIESANDCOLLATE ;
// Retrieve the printer DC
HDC hdc = NULL;
if (PrintDlg(&pd)) hdc = pd.hDC;
// Free the resources allocated
if (pd.hDevMode != NULL) GlobalFree(pd.hDevMode);
if (pd.hDevNames != NULL) GlobalFree(pd.hDevNames);
return hdc;
}
내가 그것을 현재 기본 프린터의 현재 기본 설정을 제공합니다 생각 - 어떻게 당신은하지 말? – chowey