ダイアログにピクチャーボックスをつけそしてボタンもつけました
このボタンを押すとメニューの開くと同じ動きをし画像ファイルを選択させ
そのフルパスを取得するようにしてるのですがこの開くで得たフルパスの
画像をピクチャーボックスに描画させるにはどうすればいいのでしょうか。
VC++6.0
MFC
LoadImage()を使うと、ファイル名を指定してビットマップを読み込むことができます。
CStatic::SetBitmap()を使うとビットマップを表示させることができます。
ピクチャーボックスの変数をm_picとしダイアログのクラスとしてPICをつくりました
pahtは開くからえたフルパスです。
HBITMAP hbit = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), path,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
m_ga.Attach(hbit);
として
OnDrawに
Pic dlg;
dlg.m_pic.SetBitmap(m_ga);
としたのですが
Debug Assertion Failed
とエラーがでました。
書き忘れてました
m_gaは CBitmap m_ga;です
[再試行]ボタンを押すとエラーとなった行が出ると思いますが、
そこはどうなっているでしょうか?
再試行すると
_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
{ ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd,
STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
のところでとまってます
> ASSERT(::IsWindow(m_hWnd));
すなわち、m_picがウィンドウでは無いと言っています。
以下のような原因が考えられます。
・m_picが目的とするCStaticに関連付けられいない
・まだ画面が生成されていない
・もう画面が閉じてしまっている