• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++ Ver1.51でのデバイスコンテキストからのビットマップ作成について)

VC++ Ver1.51でのデバイスコンテキストからのビットマップ作成について

このQ&Aのポイント
  • VC++ Ver1.51でプリンタのデバイスコンテキストからビットマップを作成する方法について教えてください。
  • ビットマップ作成のためのコードを提供していただけませんか?VC++ Ver1.51を使用しています。
  • BitBlt関数を使ってビットマップ作成を試みていますが、エラーが発生しています。原因と解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • guccii
  • ベストアンサー率31% (14/44)
回答No.2

> GetDeviceCaps(プリンタDC,RC_BITBLT)で調べさせていただきました、戻り値が0だったので多分サポートされていないって事ですよね? サポートされていないということです。 > 簡単に使い方など書いていただければ嬉しく思います。 そうですよね。ビットマップの物理的な形式とかを一応知っていないと使うのがちょっと難しいんですよ。めんどくさいし...。 最近のSDKにはいいサンプルも入ってないみたいですが、VC++6.0の時のサンプルがまだHDD上に残っていたのでgrepしてみたら、"sdk\graphics\gdi\showdib\dib.c"あたりが多分参考になりやすそうでした。VC++1.51のころであればいいサンプルがもっとあるかもしれません。grepしてみてください。 もしくは、DDKのサンプルの方がお手ごろなサンプルが見つかるかもしれません。 あとは、当時のMFCであれば、CDC::BitBltの実装にGetDIBitsを使用している可能性もあるとは思うのですが、もうVC++1.5が手元にないので確かめられません。MFCのソースもgrepしてみたらいいかもしれません。

Toyochan8
質問者

お礼

回答有難うございます。サンプルですか、今まで思いつきませんでしたが探してみることにします。その後自分なりに作成してみたのですがGetDIBits の行でエラーが出てしまいなぜそうなるのかが分かりませんでした。その件は新たに質問で作成させていただきたいと思います。有難うございました。

その他の回答 (1)

  • guccii
  • ベストアンサー率31% (14/44)
回答No.1

当時はデバイスドライバによりBitBltがサポートされていないことがありました。CDC::GetDeviceCaps(RC_BITBLT)でまず調べてみたほうがいいでしょう。 BITBLTがサポートされていなかった場合、めんどくさいですが、デバイスのDDBをGetDIBits()とかでDIBに転送するしかないと思います。

Toyochan8
質問者

お礼

gucciiさん、アドバイス有難うございます。 早速参考にさせていただき、GetDeviceCaps(プリンタDC,RC_BITBLT)で調べさせていただきました、戻り値が0だったので多分サポートされていないって事ですよね?GetDIBits()を使えばいいという事でしたが、経験が浅いため現在も苦戦しています、もし迷惑でなければ簡単に使い方など書いていただければ嬉しく思います。有難うございました。

関連するQ&A