タイトル : Re^2: CreateDCの引数について 投稿日 : 2008/08/20(Wed) 23:06 投稿者 : 蒼月
魔界の仮面弁士さん ご指摘、ありがとうございます。 > > CreateDC("AAAA", vbNullString, 0, 0) > しかし、これは問題です。 > > (1) 第一引数の "AAAA" が意味を為しているでしょうか。第一引数には、 > プリンタ名 (もしくは、vbNullString / "WINSPOOL" / "DISPLAY" )で > なければなりませんが、"AAAA" というプリンタが本当にあるのでしょうか? 今回は、プリンタ名というのがどれを指しているのかがよくわからず、 windowsのプリンタとFAXの項目に表示された名前がプリンタ名なのでは? という予測の元それをそのまま使用しました。 (例では、"AAAA"となっていますが、実際はその表示名を入れています。) > (2) 画面への描画の場合には、第二引数に(ByVal の)vbNullString を指定する事も > ありますが、プリンタへの出力目的であれば、第二引数も指定する必要があります。 第一引数と第二引数の意味の理解があいまいだったので、今回の使い方の場合は、両方の引数が、NULL以外の文字となることは無いと思い込んでしまっていました。 (逆を言えば、どちらかは必ずNULLでないといけないと思い込んでいました。) > (3) 第四引数に、0 を渡してはいけません。ByRef Any に対して 0 を指定すると、 > 「NULL 参照」を指定しているのではなく、「0 という 16bit整数値への参照」に > なってしまいます。NULL 参照を渡したいなら、ByVal 0& とせねばなりません。 0を渡しているサンプルコードと、0&を渡しているサンプルコードがあり、 違いは疑問に思っていたのですが、とりあえず、まずは印刷ができるようにしたかったため、その違いについては後回しにしていました。 魔界の仮面弁士さんの助言は本当に勉強になります。 ありがとうございました。 |