Win32 APIで「通常使うプリンタ」のプロパティ(ダイアログ)を開くサンプルページを教えてください。

VisualC++6.0でWindows2000/XP上で動くプログラムを開発しています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:EddyYamanaka No.1

回答回数385ベストアンサー獲得回数1

ポイント10pt

先程のPrintDlg()のサンプルです。

フラグにPD_PRINTSETUPを追加すると直接プリンタの設定ダイアログが出ます。

「プリンタの設定」ではなく「プリンタのプロパティ」を直接出すには、こっちのOpenPrinter()とPrinterProperties()を使うことになりますね。

id:EddyYamanaka No.2

回答回数385ベストアンサー獲得回数1

ポイント100pt

VisualC++6.0をお持ちならMSDNライブラリでPRINTDLGの説明を見てください。

それの最後の方のRemarksの最初に答えが書いてます。

MFCを使えばもっと簡単ですが、質問がWin32APIでと書かれているので、このPrintDlg()になりますね。

これがPrintDlg()で使われるPRINTDLG構造体です。

この下の方の説明を見てください。

id:fslasht

回答ありがとうございます。

 これを使えば出来そうですね。

 これでやってみますが、サンプルコードがあると助かります。

2005/11/29 09:13:56
  • id:fslasht
    以下のコードで上手くいきました。ありがとうございます。

    デフォルトプリンターのプロパティを開くサンプル

    #include <winspool.h>
    CString strPrinterName;// プリンタ名

    // デフォルトプリンター情報取得
    PRINTDLGpd;
    ZeroMemory(&pd,sizeof(pd));
    pd.lStructSize=sizeof(pd);
    pd.Flags= PD_RETURNDEFAULT;
    if( !::PrintDlg(&pd) ) {
    // 失敗
    }

    // プリンター名取得
    LPDEVNAMESpDevNames=(LPDEVNAMES)::GlobalLock(pd.hDevNames);
    if( !pDevNames ) {
    // 失敗
    }
    LPSTRpszDeviceName=(LPSTR)pDevNames+pDevNames->wDeviceOffset;
    strPrinterName = pszDeviceName;
    ::GlobalUnlock(pd.hDevNames);

    // プリンタープロパティを開く
    HANDLE hPrinter;
    OpenPrinter( (LPSTR)(LPCSTR)strPrinterName, &hPrinter, NULL);
    PrinterProperties( this->GetSafeHwnd(), hPrinter);
    ClosePrinter(hPrinter);

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません