• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CreateWindowでSTATICコントロールを使ってBITMAP表示する。)

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

このQ&Aのポイント
  • WIN32、VC++2005にて開発中の質問者が、CreateWindowでSTATICコントロールを使ってBITMAPを表示する方法を知りたいと困っている。
  • ウィンドウプロシージャのWM_CREATEで、STATICコントロールを作成し、IDB_BITMAP1という名前で追加されたビットマップを表示させたいとのこと。
  • 初心者のため、分かりやすい解説を求めている。

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

  • ベストアンサー
回答No.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; }

glee_sss
質問者

お礼

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