DEVMODE の dmFields は必要か? – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

[解決済] DEVMODE の dmFields は必要か?

固定ページ 2 / 2

ゲキアツ
 ゲキアツ
(@ゲキアツ)
ゲスト
結合: 11年前
投稿: 32
Topic starter  

> ・・・自分のプログラムでわざわざ再設定する必要はないんですって。
> ・・・余計なことはせずに必要な設定以外はほっとけばいいんですよ。

なら、よかった (^o^)

lp->dmOrientation = DMORIENT_PORTRAIT; を入れているのは、他のメニューで横向き印
刷をするので、そこからこっちに切り替えたとき必要なもんで・・・。

> あとゲキアツさん、意外とIDEのデバッグ機能とか苦手ですか?

Yes, I am. So sorry! (^_^;)

ユーザーAさんからの連絡がまだありません。
自分はこれから1週間留守するので、ここは保留とさせて戴きます。


返信引用
ゲキアツ
 ゲキアツ
(@ゲキアツ)
ゲスト
結合: 11年前
投稿: 32
Topic starter  

留守をして済みませんでした。

端的に注釈を付けたサンプルページがありました。こちらです。
http://www.codeproject.com/Articles/132365/Configuring-Printer-Settings-Programm
atically
多くのサンプルでは dmFields = ○○○; となっているのに、ここでは ken様がおっしゃ
るように dmFields |= ○○○; となっています。

これをお手本にしました。以下のコードとなります。

::OnPreparePrinting(CPrintInfo* pInfo)
{
PRINTDLG pd;
pd.lStructSize = (DWORD)sizeof(PRINTDLG);
if (AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
LPDEVMODE lp = (LPDEVMODE)GlobalLock(pd.hDevMode);
if (lp->dmFields & DM_ORIENTATION)
{
lp->dmOrientation |= DMORIENT_PORTRAIT;
lp->dmFields = DM_ORIENTATION;
}
if (・・・)
{
if (lp->dmFields & DM_PAPERSIZE)
{
lp->dmPaperSize = DMPAPER_USER;
lp->dmFields |= DM_PAPERSIZE;
if (lp->dmFields & DM_PAPERWIDTH)
{
lp->dmPaperWidth = 1200;
lp->dmFields |= DM_PAPERWIDTH;
}
if (lp->dmFields & DM_PAPERLENGTH)
{
lp->dmPaperLength = 2350;
lp->dmFields |= DM_PAPERLENGTH;
}
}
}

これで、ユーザーAさんにテストして戴き、問題なく印刷できたとのこと。
解決です。
教えて戴いた皆様、ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました