Last Updated 2002/09/05
Programming Tips Visual C++ MFC 印刷  索 引 
プリンタの設定
2002/09/05

アプリケーションからプリンタの用紙サイズ,印字方向の設定をする.

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


参照
用紙サイズの変更
前後のTips
プリンタの設定

DSS ProgrammingTipsCGI Ver2.02