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

表示しようとして
int SetDIBitsToDevice(
HDC hdc,
int XDest,←0
int YDest,←0
DWORD dwWidth,←88
DWORD dwHeight,←31
int XSrc,←0
int YSrc,←0と31でトライ
UINT uStartScan,←0
UINT cScanLines,←31
CONST VOID *lpvBits,←読み込んだpngのfufferポイ
CONST BITMAPINFO *lpbmi,←&bmpInfo
UINT fuColorUse←DIB_RGB_COLORS
);
としました。ただし
BITMAPINFO bmpInfoは
bmpInfo.bmiHeader.biSize=40;
bmpInfo.bmiHeader.biWidth=88;
bmpInfo.bmiHeader.biHeight=31;
bmpInfo.bmiHeader.biPlanes=1;
bmpInfo.bmiHeader.biBitCount=0;
bmpInfo.bmiHeader.biCompression=BI_PNG;
bmpInfo.bmiHeader.biSizeImage=pngのbufferのsize;
bmpInfo.bmiHeader.biXPelsPerMeter=0;
bmpInfo.bmiHeader.biYPelsPerMeter=0;
bmpInfo.bmiHeader.biClrUsed=0;
bmpInfo.bmiHeader.biClrImportant=0;
と定義しました。
(実際にdivファイルを表示できていたプログラムの関連部分の書き換え)

が、絵がでません。

どの設定に問題があるのでしょうか?

A 回答 (5件)

JPEGのサンプルです。


おそらくpngも同じでしょう。

http://msdn.microsoft.com/library/default.asp?ur …

あと、エラーになったときは、APIの戻り値、GetLastError()の値を書いてくださいね。

ぱっと見では、bmpInfo.bmiHeader.biSizeがおかしい気がしますが。
    • good
    • 0

後のほうの参考urlの内容、よく読むとulはunsigned long というかDWORDですね。



なんで、サンプルはキャストが抜けてますね(^^;;;
    • good
    • 0
この回答へのお礼

何度も調べてもらってありがとうございます。

マイクロソフトはもうけているのだからいい加減な例を出さないでほしいものですね。
そのままコンパイルすれば動く例を出さないのが不思議ですね。

お礼日時:2003/08/23 03:49

ExtEscape()


http://www.microsoft.com/japan/msdn/library/defa …


>ulの型はどのようにすればいいのでしょうか?
>int,unsigned,LPSTRではエラーになります。

ヘルプを見ると、LPSTRとかいてあります。
で、サンプルのパラメータを見ると&がついてます。

ということで、charでしょうね。


>2番目のExtEscapeは引数の順は大丈夫なのでしょうか?
>(・・・,pvJpgImage,nJpgImageSize,・・・)

(?_?)・・・
逆みたいですね(^^;;;



あと、こんなページもありました。
新たなキーワードがあったら再度検索してみるのもどうでしょう?
http://msdn.microsoft.com/library/default.asp?ur …

参考URL:http://msdn.microsoft.com/library/default.asp?ur …
    • good
    • 0

一応参考までに・・・



>GetLastError()は87

winerror.hでは、
87 == ERROR_INVALID_PARAMETER
The parameter is incorrect.

FormatMessage()で日本語を取得すると、
「パラメータが間違っています。」

でした。

この回答への補足

98seでサポートされているのかが疑わしくなってきました。
例の前段が気になります。

ul=CHECKJPEGFORMAT;
if (
(ExtEscape(hD,QUERYESCSUPPORT,sizeof(ul),&ul,0,0)>0) &&
(ExtEscape(hD,CHECKJPEGFORMAT,pvJpgImage,nJpgImageSize,sizeof(ul),&ul)>0) && (ul == 1)
)

において

ulの型はどのようにすればいいのでしょうか?
int,unsigned,LPSTRではエラーになります。

2番目のExtEscapeは引数の順は大丈夫なのでしょうか?(・・・,pvJpgImage,nJpgImageSize,・・・)

よろしくお願いします。

補足日時:2003/08/22 23:42
    • good
    • 0

>ぱっと見では、bmpInfo.bmiHeader.biSizeがおかしい気がしますが。



ここあってますね。失礼しました。
自分の中でWORDを4バイトで数えてました。

この回答への補足

大変参考になる例のリンクありがとうございました。

例によると
bmpInfo.bmiHeader.biSize=40;
bmpInfo.bmiHeader.biWidth=88;
bmpInfo.bmiHeader.biHeight=-31;//修正点
bmpInfo.bmiHeader.biPlanes=1;
bmpInfo.bmiHeader.biBitCount=0;
bmpInfo.bmiHeader.biCompression=BI_PNG;
bmpInfo.bmiHeader.biSizeImage=絵bufferのsize;
bmpInfo.bmiHeader.biXPelsPerMeter=0;
bmpInfo.bmiHeader.biYPelsPerMeter=0;
bmpInfo.bmiHeader.biClrUsed=0;
bmpInfo.bmiHeader.biClrImportant=0;
として
int SetDIBitsToDevice(
HDC hdc,
int XDest,←0
int YDest,←0
DWORD dwWidth,←88
DWORD dwHeight,←31
int XSrc,←0
int YSrc,←0//決定点
UINT uStartScan,←0
UINT cScanLines,←31
CONST VOID *lpvBits,←絵bufferのpointer
CONST BITMAPINFO *lpbmi,←&bmpInfo
UINT fuColorUse←DIB_RGB_COLORS
);

一番気になるのは絵bufferにpngファイルから読みとったすべてのデータを入れたのですがそれでいいのかという点です。
チャンクを分析して一部だけをバッファに入れないといけないので有れば関数の価値は無くなりますからね。
絵データのみ入れるとパレット情報が抜けてしまうし・・・

補足日時:2003/08/22 14:08
    • good
    • 0
この回答へのお礼

SetDIBitsToDeviceの関数値が0になっていたのでエラーしている事が分かりました。
GetLastError()は87でした。

お礼日時:2003/08/22 14:42

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