電子書籍の厳選無料作品が豊富!

開発環境:WINDOWS2000 VB6 SP6
こんにちわ。
分からない事が出てきましたので、また皆さんのお知恵をお借りできればと思います。
PRINTDLG関数で、プリンタの設定をユーザーにしてもらい、その設定を印刷に適用したいと思います。
下記のサイトを参考にして作ってみました。

http://www.itmedia.co.jp/help/howto/win/win2000/ …

実行させてみると、プリンタの設定ダイログが表示され、設定も変更でき、印刷にも反映させることができました。
しかし、設定を再び変更しようとプリンタ設定ダイアログを開いた場合、以前の設定を渡しているはずなのですが、プリンタ名以外が反映されず、デフォルトの設定になってしまいます。(給紙方法や印刷の向きなど)

文字数制限により、問題と思われる部分のソースのみ書かせてもらいます。
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が渡せていないというのが有力になってきたのですが、おかしいところが見当たらず、お手上げ状態になっています。

何でもいいのでよろしくお願い致します。

A 回答 (1件)

vDevMode.dmDriverExtra の値は何ですか?

この回答への補足

アドバイスありがとうございます。
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であれば上手くいくのではないかと試していたのですが、参考となるサンプルがなく、模索中です。
また何かアドバイスがございましたら、よろしくお願いします。

補足日時:2006/04/14 08:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/18 10:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!