22H2の印刷初期化について(1)2023年04月15日 19:20

22H2で印刷の設定をしてもデフォルト設定に戻る。
少し調べた結果を書いておきます。
個人的には単なる欠陥ではないかと思えるがどうなんだろう。

以下のプログラムはPrintDlg()というAPIでプリンタ設定を
行うフラグで実行してその内容をそのまま同APIで
印刷するといったシンプルなものです。

最初に設定したプリンタの設定を印刷の段階ではすっかり
忘れているんですよね。
内容的にも問題ないのでこれ以上なにを設定したら
印刷の初期設定ができるのかいきずまっている部分です。


【サンプルプログラム】
プリンタ設定を行ってその内容をそのまま印刷する。

void __fastcall TfrmPreview::menuTestClick(TObject *Sender)
{
    PRINTDLG pd;
    BOOL ret;

    // PRINTDLGを設定する
    ZeroMemory((char *)&pd, sizeof(PRINTDLG));
    pd.lStructSize = sizeof(PRINTDLG);
    pd.hwndOwner = this->Handle;
    pd.Flags = PD_PRINTSETUP;
    if(PrintDlg(&pd) != TRUE){
        return;
    }
    MsgDevNames(pd.hDevNames);

    // 印刷
    pd.hwndOwner = this->Handle;
    pd.Flags = PD_RETURNDC;
    pd.Flags = pd.Flags | PD_NOSELECTION | PD_HIDEPRINTTOFILE;
    ret = PrintDlg(&pd);

    MsgDevNames(pd.hDevNames);
}

【実行】 初期値が「Canon」のプリンタになっているので初期の設定も「Canon」の
プリンタとなります。


印刷先を変更します。


DevNameを表示します。
MsgDevNames()は別途DevNamesをメッセージボックスで表示する関数を作ったものです。
この時点ではちゃんと変更したプリンタ名になっています。


実際に印刷しようとするとプリンタのデフォルト設定の値に戻ってしまいます。


では、印刷で変更したときのDevNameはどうなっているかを確認しました。


プリンタ設定のときと同じ内容なので
設定自体は間違いないということだと思うのです。


コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://sakuyablog.asablo.jp/blog/2023/04/15/9577529/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。