PAGESETUPDLG構造体で、ページ設定を変更できる。
PAGESETUPDLGA (commdlg.h) - Win32 apps | Microsoft Docs
プリンタの設定
例えば、
// 取得したIDごとに処理を分岐. // Printが選択された時. case ID_ITEM_PRINT: // ID_ITEM_PRINTブロック { // 変数の宣言と初期化. PRINTDLG pd = {0}; // PRINTDLG構造体pdを0で初期化. PAGESETUPDLG psd = {0}; // PAGESETUPDLG構造体psdを0で初期化. // pdの初期設定 pd.lStructSize = sizeof(PRINTDLG); // PRINTDLG構造体pdを0で初期化. pd.hwndOwner = hwnd; // hwndを指定. pd.Flags = PD_RETURNDC; // pdのメンバとしてhDCを返す. // PrintDlgの表示. BOOL bRet = PrintDlg(&pd); // PrintDlgにpdを渡して表示し, 戻り値をBOOLのbRetに格納. if (bRet){ // 印刷を押したらTRUE. // psdの初期設定 psd.lStructSize = sizeof(PAGESETUPDLG); // sizeofでPAGESETUPDLG構造体のサイズを指定. psd.hwndOwner = hwnd; // hwndを指定. psd.Flags = PSD_INTHOUSANDTHSOFINCHES; // インチ単位に設定. // PageSetupDlgの表示. bRet = PageSetupDlg(&psd); // PageSetupDlgにpsdを渡して表示し, 戻り値をbRetに格納. if (bRet){ // bRetがTRUE. MessageBox(NULL, _T("OK!"), _T("PAGESETUPDLG_struct"), MB_OK); // MessageBoxで"OK!"とメッセージを表示. } else{ // bRetがFALSE. MessageBox(NULL, _T("Cancel!"), _T("PAGESETUPDLG_struct"), MB_OK); // MessageBoxで"Cancel!"とメッセージを表示. } // 終了処理. DeleteDC(pd.hDC); // DeleteDCでpd.hDCを削除. } } // 既定の処理へ向かう. break; // breakで抜けて, 既定の処理(DefWindowProc)へ向かう.
このように余白を1000分の1インチ単位設定に変更できる。
こちらもマニフェスト追加。
余白が1000分の1インチ単位。
今度は、100分の1ミリ単位に戻して、左10、上20、右30、下40、の余白をセット。
(ダイアログ上は、0.1、0.2、0.3、0.4となる。)
このようにすると、
余白が100分の1ミリ単位で、ちゃんとセットされている。