デフォルトで印刷の用紙を横向きにしたい! – プログラミング – Home

デフォルトで印刷の用紙を横向きにしたい...
 
通知
すべてクリア

[解決済] デフォルトで印刷の用紙を横向きにしたい!


のの
 のの
(@のの)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

ある文書を印刷するプログラムを作っているのですが,
すべて横向きで出力するので,
はじめから横向きに設定したいのです.
DEVMODE構造体のメンバを設定してみたり、
PRINTDLG構造体を設定してみたり
OnPreparePrintingでいろいろ書いたのですが,
できませんでした。
どうか、おしえてください。おねがいします。


引用未解決
トピックタグ
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

こんちわ けん★です

// PrintDialogの定義
CPrintDialog PrintDlg(FALSE, PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_HIDEPRINTTOFILE);

if (PrintDlg.GetDefaults() != 0) // デフォルトの値取得
{
LPDEVMODE pDevMode = PrintDlg.GetDevMode(); // DEVMODEの取得
pDevMode->dmOrientation = DMORIENT_LANDSCAPE; // 印刷横向きの設定
}

これでどうでしょうか?


返信引用
のの
 のの
(@のの)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

けんさん。できませんでした。
ViewクラスのOnPreparePrintingに
けんさんのコードをそのまま書いたのですが、
エラーにもならず、なにも変わりませんでした。
DEVMODE構造体のdmOrientationがshort型を返すので、
値をみてみると、3をあとにもさきにも、返すだけでした。
せっかく教えてもらったので
たいへん恐縮ですが、
もう一度おねがいします。
私がコードを書いたところがおかしかったのでしょうか。

ちなみにこのように掲示板を使うのは初めてだったので、
お返事がいただけてとても感激しました。


返信引用
けん★
 けん★
(@けん★)
ゲスト
結合: 23年前
投稿: 28
 

え~

OnPreparePrinting内でDoPreparePrintingを呼んでいると思いますが、

DoPreparePrintingを呼ぶ前に上記のソースを書いても駄目でしょうか?

ある文書を印刷するとありますが、ページ向きを横向きにするだけで、後は普通のWindowsの印刷と
同じように、印刷ダイアログからの印刷ということでよろしいのでしょうか?

それとも、印刷機能自体をカスタマイズするのでしょうか?


返信引用
EIJI
 EIJI
(@EIJI)
ゲスト
結合: 24年前
投稿: 76
 

InitInstance()あたりで
PRINTDLG p;
::ZeroMemory(&p, sizeof(PRINTDLG));
GetPrinterDeviceDefaults(&p);
if( p.hDevMode != NULL)
{
LPDEVMODE lp = (LPDEVMODE)GlobalLock(p.hDevMode);
if( lp->dmFields & DM_ORIENTATION )
lp->dmOrientation = DMORIENT_LANDSCAPE;
GlobalUnlock( p.hDevMode );
}

としてみてください。


返信引用
のの
 のの
(@のの)
ゲスト
結合: 23年前
投稿: 10
Topic starter  

できました!!
EIJIさんのコードをInitInstance()の中に書いたら、ばっちりできてました。
プリンタの設定ダイアログの中でも印刷の向きが
横になっていました。
どうもありがとうございました!
やっとプログラムが提出できます。

けんさんもどうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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