表示しようとして
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ファイルを表示できていたプログラムの関連部分の書き換え)
が、絵がでません。
どの設定に問題があるのでしょうか?
No.1ベストアンサー
- 回答日時:
JPEGのサンプルです。
おそらくpngも同じでしょう。
http://msdn.microsoft.com/library/default.asp?ur …
あと、エラーになったときは、APIの戻り値、GetLastError()の値を書いてくださいね。
ぱっと見では、bmpInfo.bmiHeader.biSizeがおかしい気がしますが。
No.4
- 回答日時:
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 …
No.3
- 回答日時:
一応参考までに・・・
>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,・・・)
よろしくお願いします。
No.2
- 回答日時:
>ぱっと見では、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ファイルから読みとったすべてのデータを入れたのですがそれでいいのかという点です。
チャンクを分析して一部だけをバッファに入れないといけないので有れば関数の価値は無くなりますからね。
絵データのみ入れるとパレット情報が抜けてしまうし・・・
SetDIBitsToDeviceの関数値が0になっていたのでエラーしている事が分かりました。
GetLastError()は87でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
DWORDの実際の型は何でしょうか
-
GCCで暗黙の型変換の警告を出し...
-
typedef enumの使い方を教えて...
-
64bit → 32bit型へのキャスト
-
C++ クラスをメンバにもつクラ...
-
0除算を判定したい
-
2重定義って??
-
DLLでLIBファイルが作成されない
-
void func( void )について
-
プログラムの中で別のmainを呼...
-
【#define】 defineで定義した...
-
C#について
-
C++ template operator T()
-
VB 関数
-
intとINTの違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
2重定義って??
-
long型の定数の末尾にLを付ける...
-
typedef enumの使い方を教えて...
-
main.c:7:43: warning: implici...
-
C++でboolにintの値を代入する...
-
構造体の要素すべてに対する四...
-
intとINTの違いは?
-
ハンドルされていない例外が発...
-
DDVによるメッセージの変更
-
変数の型を定義しなかった場合...
-
【#define】 defineで定義した...
-
C++ クラスをメンバにもつクラ...
-
構造体の宣言でエラーが出ます。
-
プログラムの中で別のmainを呼...
-
void func( void )について
-
エラー「invalid conversion fr...
-
関数の実体定義にヘッダファイ...
おすすめ情報