ピクチャボックスでの描画 – プログラミング – Home

ピクチャボックスでの描画
 
通知
すべてクリア

ピクチャボックスでの描画


wsx
 wsx
(@wsx)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

ダイアログにピクチャーボックスをつけそしてボタンもつけました
このボタンを押すとメニューの開くと同じ動きをし画像ファイルを選択させ
そのフルパスを取得するようにしてるのですがこの開くで得たフルパスの
画像をピクチャーボックスに描画させるにはどうすればいいのでしょうか。

VC++6.0
MFC


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

LoadImage()を使うと、ファイル名を指定してビットマップを読み込むことができます。
CStatic::SetBitmap()を使うとビットマップを表示させることができます。


返信引用
wsx
 wsx
(@wsx)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

ピクチャーボックスの変数を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

とエラーがでました。


返信引用
wsx
 wsx
(@wsx)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

書き忘れてました
m_gaは CBitmap m_ga;です


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

[再試行]ボタンを押すとエラーとなった行が出ると思いますが、
そこはどうなっているでしょうか?


返信引用
wsx
 wsx
(@wsx)
ゲスト
結合: 21年前
投稿: 4
Topic starter  

再試行すると
_AFXWIN_INLINE HBITMAP CStatic::SetBitmap(HBITMAP hBitmap)
{ ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd,
STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }

のところでとまってます


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> ASSERT(::IsWindow(m_hWnd));

すなわち、m_picがウィンドウでは無いと言っています。
以下のような原因が考えられます。
・m_picが目的とするCStaticに関連付けられいない
・まだ画面が生成されていない
・もう画面が閉じてしまっている


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました