プロが教えるわが家の防犯対策術!

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で表示させたいんですがいい方法ありますか?

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

A 回答 (1件)

 こんばんは。



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

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


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

 以下参考程度に。

//ビットマップ等のハンドル管理には気をつけて下さい
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;
}
    • good
    • 0
この回答へのお礼

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

本当にありがとうございます。
お陰様で助かりました。

お礼日時:2008/08/22 11:28

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