- ベストアンサー
CreateWindowでSTATICコントロールを使ってBITMAP表示する
- WIN32、VC++2005にて開発中の質問者が、CreateWindowでSTATICコントロールを使ってBITMAPを表示する方法を知りたいと困っている。
- ウィンドウプロシージャのWM_CREATEで、STATICコントロールを作成し、IDB_BITMAP1という名前で追加されたビットマップを表示させたいとのこと。
- 初心者のため、分かりやすい解説を求めている。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >>下記の様に書いてみたんですがダメでした。 その後、スタティックコントロールのハンドルに対して、ビットマップを設定しなければいけません。 「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; }
お礼
とても分かりやすい説明ありがとうございます。 WindowsMobileで動かしている性かLR_CREATEDIBSECTION | LR_DEFAULTSIZEで識別子を認識しませんエラーが起きLR_DEFAULTCOLORで解決しました。 本当にありがとうございます。 お陰様で助かりました。