アプリケーションからプリンタの用紙サイズ,印字方向の設定をする.
DEVMODE 構造体は基本的にプリンタドライバによってサイズが異なる.
ExtDeviceMode() にて構造体サイズを取得する.
ExtDeviceMode() にて構造体を初期化する.
その後構造体の内容を変更する.
char szDevString[120];
char *szPrinter, *szDriver,*szPort;
CDC p_t;
HANDLE hnd;
PRINTER_INFO_2 *pr_def;
BYTE wk[1024];
DWORD dwLen;
GetProfileString("windows", "device", ",,,",szDevString, 120);
szPrinter = strtok(szDevString,(const char *) ",");
szDriver = strtok((char *) NULL,(const char *) ", ");
szPort = strtok((char *) NULL,(const char *) ", ");
if ( OpenPrinter( szPrinter,&hnd,NULL ) != TRUE )
return FALSE;
if ( GetPrinter( hnd,2,wk,1024,&dwLen ) != TRUE ){
ClosePrinter( hnd );
return FALSE;
}
pr_def = (PRINTER_INFO_2*)wk;
ClosePrinter( hnd );
p_t.CreateDC(szDriver, szPrinter,szPort,NULL);
pr_def->pDevMode->dmPaperSize = DMPAPER_A4;
pr_def->pDevMode->dmOrientation = DMORIENT_PORTRAIT;
p_t.ResetDC( pr_def->pDevMode );
参照
用紙サイズの変更