32文字以上の長いプリンター名だと「プリンターのプロパティ」設定が保存されないようです。
例えば「プリンターのプロパティ」ダイアログを表示してグレースケールを選択してOKした後、再度ダイアログを表示すると設定がリセットされています。(短いプリンター名だとリセットされない)
「プリンターのプロパティ」はDocumentPropertiesというWin32APIで表示しています。
おそらくDEVMODE構造体のdmDeviceNameメンバが32文字の領域しかないため32文字以上の名前がセットできないことに起因しているのだと思うのですが、どうにか対応できないでしょうか?
コードは下記のような感じです。
C++
1if (OpenPrinter(szPrnName, &hPrinter, NULL)) 2{ 3 if (DocumentProperties(m_hWnd, hPrinter, szPrnName, pDevMode, pDevMode, DM_IN_BUFFER|DM_IN_PROMPT|DM_OUT_BUFFER) == IDOK) 4 { 5 : 6 } 7}
#szPrnNameには32文字以上の長いプリンター名がセットされています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/22 06:52