←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.4687

Windowのビットマップ色データーの配列
投稿者---さめ(2005/10/05 19:16:57)


最近WindowsプログラミングをC言語で始めました。前はHSPでやっていたのですが、C言語を勉強しようと思いCに移植したのですがHSPにBMSCRという構造体があり、その中に、Windowのビットマップ色データのポインタが入ってあるpBitsというメンバがあるのですが、Cではどのようにして手に入れたらよいのかわかりません。MMXで画面全体の色を変えていきたいのですが、ポインタがなくどうしようもありません。GetObjectでBITMAP構造体を指定してやってみたのですが、構造体に0が代入されます。

#include <windows.h>

#define APP_NAME TEXT("Sample_MainWindow")
#define BMPFILE TEXT("BMP.bmp")

LRESULT CALLBACK WindowProc (
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
) {
HDC hdc;
PAINTSTRUCT ps;
static HDC hMemDC;
static HBITMAP hBitmap;
static BITMAP bitmap;

switch(uMsg) {
case WM_DESTROY:
DeleteDC(hMemDC);
DeleteObject(hBitmap);

PostQuitMessage(0);
return 0;
case WM_CREATE:
hMemDC = CreateCompatibleDC(NULL);
hBitmap = LoadImage(
(HINSTANCE)GetWindowLong(hWnd , GWL_HINSTANCE) ,
BMPFILE , IMAGE_BITMAP ,
0 , 0 , LR_LOADFROMFILE
);
GetObject(hBitmap , sizeof(BITMAP) , &bitmap);
SelectObject(hMemDC , hBitmap);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd , &ps);
BitBlt(
hdc , 0 , 0 , bitmap.bmWidth , bitmap.bmHeight ,hMemDC , 0 , 0 , SRCCOPY
);

EndPaint(hWnd , &ps);
return 0;
}
return DefWindowProc(hWnd , uMsg , wParam , lParam);
}

コールバック関数はこのようにしているのですが、何か問題があるのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:Windowのビットマップ色データーの配列 4732 Gak 2005/10/11 15:31:53


No.4732

Re:Windowのビットマップ色データーの配列
投稿者---Gak(2005/10/11 15:31:53)


> 構造体に0が代入されます
LoadImage() のフラグに LR_CREATEDIBSECTION を指定すれば取得可能です。
ただ、Load したイメージは画面に依存した DDB ではなく DIB になるので注意。
# BMPFILE が 8Bit 以下の BMP の場合、ds.dsBm.bmBits に入っているデータは
# RGB では無くパレットIndexを指すデータになる等)
HBITMAP hBitmap;
DIBSECTION ds;

hBitmap = LoadImage(NULL, BMPFILE, IMAGE_BITMAP, 0, 0,
                    LR_CREATEDIBSECTION | LR_LOADFROMFILE);
GetObject(hBitmap, sizeof(ds), &ds);
// ds.dsBm.bmBits に Pixelデータ





この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity