• 締切済み

PRINTDLGでのプリンタ設定について

開発環境:WINDOWS2000 VB6 SP6 こんにちわ。 分からない事が出てきましたので、また皆さんのお知恵をお借りできればと思います。 PRINTDLG関数で、プリンタの設定をユーザーにしてもらい、その設定を印刷に適用したいと思います。 下記のサイトを参考にして作ってみました。 http://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap7/62.html 実行させてみると、プリンタの設定ダイログが表示され、設定も変更でき、印刷にも反映させることができました。 しかし、設定を再び変更しようとプリンタ設定ダイアログを開いた場合、以前の設定を渡しているはずなのですが、プリンタ名以外が反映されず、デフォルトの設定になってしまいます。(給紙方法や印刷の向きなど) 文字数制限により、問題と思われる部分のソースのみ書かせてもらいます。 hDevMode = GlobalAlloc(GHND, Len(vDevMode)) lpDevMode = GlobalLock(hDevMode) CopyMemory ByVal lpDevMode, vDevMode, Len(vDevMode) GlobalUnlock lpDevMode hDevNames = GlobalAlloc(GHND, Len(vDevNames)) lpDevNames = GlobalLock(hDevNames) CopyMemory ByVal lpDevNames, vDevNames, Len(vDevNames) GlobalUnlock lpDevNames vPrintDlg.lStructSize = Len(vPrintDlg) vPrintDlg.hwndOwner = FormHwnd vPrintDlg.hDevMode = hDevMode vPrintDlg.hDevNames = hDevNames vPrintDlg.Flags = 64 色々試してみたところ、vPrintDlg構造体のhDevModeに何も渡さずに実行しても、プリンタ名は反映されていました。 vPrintDlg構造体のhDevModeに、きちんとvdevModeが渡せていないというのが有力になってきたのですが、おかしいところが見当たらず、お手上げ状態になっています。 何でもいいのでよろしくお願い致します。

みんなの回答

  • jmh
  • ベストアンサー率23% (71/304)
回答No.1

vDevMode.dmDriverExtra の値は何ですか?

takeru427
質問者

お礼

アドバイスありがとうございます。 無事解決しましたので、締め切らせて頂きます。 有難うございました。

takeru427
質問者

補足

アドバイスありがとうございます。 vDevMode.dmDriverExtra の値ですが、設定していませんので、0になっています。 あれから色々調べた所、他のプリンタではきちんと設定が反映されていて、 特定のプリンタのみが反映されていないようです。 jmhさんの推測通り、プリンタの拡張機能の部分に問題があるように思います。 vDevMode.dmDriverExtraの値の設定の仕方が現在わからず、調べております。 DEVMODE構造体の定義は、下記になっています。 Public Type DEVMODE dmDeviceName As String * CCHDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCHFORMNAME dmLogPixels As Integer dmBitsPerPel As Long dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type 話は変わりますが、PRINTDLGEXであれば上手くいくのではないかと試していたのですが、参考となるサンプルがなく、模索中です。 また何かアドバイスがございましたら、よろしくお願いします。

関連するQ&A