解決済み

CreateWindowでSTATICコントロールを使ってBITMAP表示する。

  • すぐに回答を!
  • 質問No.4268786
  • 閲覧数1487
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 69% (63/91)

WIN32、VC++2005にて開発中です。
CreateWindowでSTATICコントロールを使ってBITMAPを表示する方法が分からなくて困ってます。
ウィンドウプロシージャのWM_CREATEで、
下記の様に書いてみたんですがダメでした。
CreateWindowW(L"Static", L"***", WS_VISIBLE|WS_CHILD|SS_BITMAP,120, 3, 100, 45, hWnd, HMENU(-1), NULL, NULL);

ビットマップはIDB_BITMAP1という名前で追加してリソースビューで確認しました。
CreateWindowで表示させたいんですがいい方法ありますか?

初心者でアホなんでなるべく解り易くお願いします。

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

  • 回答No.1

ベストアンサー率 60% (434/720)

 こんばんは。

>>下記の様に書いてみたんですがダメでした。
 その後、スタティックコントロールのハンドルに対して、ビットマップを設定しなければいけません。

 「STM_SETIMAGE」↓スタティックコントロールにビットマップを設定する。
 http://msdn.microsoft.com/en-us/library/bb760782(VS.85).aspx


 IDB_BITMAP1のビットマップをロードしなければいけません。
 「LoadImage()」↓ビットマップのロード。
 http://msdn.microsoft.com/ja-jp/library/cc364835.aspx

 以下参考程度に。

//ビットマップ等のハンドル管理には気をつけて下さい
static HBITMAP s_hBitmap = 0;

case WM_CREATE:
{
//モジュールハンドルを取る
HINSTANCE hInst = ::GetModuleHandle(0);

//スタティックコントロールを作成する
HWND hStatic = ::CreateWindowW(L"Static", L"***", WS_VISIBLE|WS_CHILD|SS_BITMAP,120, 3, 100, 45, hWnd, HMENU(-1), NULL, NULL);

//此方のやり方は、ビットマップをファイルからロードします
//s_hBitmap = (HBITMAP)LoadImage(hInst, "ココにファイル名をいれる", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);

//ビットマップをリソースからロードする
s_hBitmap = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE);

//スタティックコントロールにビットマップを設定する
::SendMessage(hStatic, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)s_hBitmap);

return TRUE;
}
お礼コメント
glee_sss

お礼率 69% (63/91)

とても分かりやすい説明ありがとうございます。
WindowsMobileで動かしている性かLR_CREATEDIBSECTION | LR_DEFAULTSIZEで識別子を認識しませんエラーが起きLR_DEFAULTCOLORで解決しました。

本当にありがとうございます。
お陰様で助かりました。
投稿日時 - 2008-08-22 11:28:42
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ