• 締切済み

ExtFloodFillで印刷できない

VC6.0+Windows2000です。 ExtFloodFillで画面上と印刷プレビューでは塗りつぶしできるのですが プリンターに印刷できません。 プリンターに印刷の時はExtFloodFill自体の戻り値も1以外(エラー)で GetLastError()は87(パラメータエラー)で返ってきます。 GetDeviceCapsでRASTERCAPSのRC_BITBLTなどを調べてみると フラグが立っていますが、なぜ印刷できないのでしょうか? これ以外に、エラーの内容を調べる方法はありますか? よろしくお願い致します。

みんなの回答

  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

えっと・・・ OnPrintにわたってくる プリンタデバイスコンテキストに対して直接描画しているならば GetDeviceCapsで調べるべきはRC_BITBLTではなく、 RC_FLOODFILLだと思うのですが、このフラグ、立っていますか?

natane86
質問者

補足

たびたびご回答ありがとうございます。 一応RASTERCAPSの全フラグを調べまして このプログラム上では印刷直前に下記をチェックしております。 (先に載せたソースの上にあったのですが、省略してしまい 申し訳ありません) //RC_FLOODFILL //RC_BIGFONT //RC_BITBLT //RC_BITMAP64 よろしくお願い致します。

  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

ちょっと確認をさせてもらってもいいでしょうか。 >GetDeviceCapsでRASTERCAPSのRC_BITBLTなどを調べてみると ・・・ということはメモリデバイスデバイスコンテキスト(及びビットマップ)などを使ってそれに ExtFloodFillなどで描画し、その描画したものを BitBltでプリンタデバイスコンテキストに転送している、ということですか? プリンタデバイスコンテキストを使って直接ExtFloodFillしているわけではないんですね?

natane86
質問者

補足

書き方が悪くて申し訳ありません。 OnDraw(CDC* pDC)で来るデバイスコンテキストを使っておりまして それが画面かプリンタの違いだけで、両方同じルーチンを通っていると 思いまます。BitBltでプリンタデバイスコンテキストに転送しているわけではありません。 ソースは下記のような感じなのですが devck = pDC->GetDeviceCaps(RASTERCAPS) ; if(!(devck && RC_BITBLT)){ ans = pDC->ExtFloodFill      ( mx, my, pDC->GetPixel( mx, my ),  FLOODFILLSURFACE ); DWORD err = GetLastError() ;      //このエラーがプリントアウトの時だけ87で返ってくる pDC->MoveTo( mx,my ) ;// pDC->LineTo( mx+10,my+10 ) ;      //この線は引けています } VC++6.0(SP5)ではExtFloodFillがプリンター出力 できないのでしょうか? web上であちこち調べたのですが、同じような現象の 記事が見当たらなかったので 質問させて頂きました。よろしくお願い致します。

関連するQ&A