VC++6.0 OS2000 MFC
VC++を始めたばかりのド素人です。
宜しくお願いします。
bmp画像をクリックすると別のダイアログを表示させるにはどうすればいいですか?
bmpはLoadImage関数を使って直接フォームに描画しています。
bmp画像の領域(画像の位置)を定義して、WM_COMMANDすればいいのですか?
サンプルソースなどがあると助かります。
宜しくお願いします。
以下のようにしてみてはいかがでしょう。
1) 直接フォームに描画するのをやめる。
2) ダイアログエディタにてピクチャーコントロールを張り付け、
プロパティでIDをIDC_STATIC以外にする(以下の説明ではIDC_IMAGEと仮定)。
さらに、タイプをビットマップ、通知をONにする。
3) OnInitDialog()で画像を読込み、以下のようにする。
((CStatic*)GetDlgItem(IDC_IMAGE))->SetBitmap(ロードしたビットマップ);
4) クラスウィザードでIDC_IMAGEのBN_CLICKEDハンドラを追加し、
別のダイアログを表示する処理を書く。
追記です。
リストボックスからbmp画像の種類を選択して
その種類のグループ画像を描画させます。
リストボックス選択
例)車 →車を選択すると |_| |_| |_| 3つの画像が表示される
えんぴつ
OnInitDialog()で画像を初期化するとリストボックス選択する前に
画像が描画されてしまいます。
説明が足りなくて申し訳ありません。
> OnInitDialog()で画像を初期化するとリストボックス選択する前に
> 画像が描画されてしまいます。
でしたら、表示したいタイミングで初期化してください。
解決しました。
メッセージ
OnLButtonDown()
のpointを使って現在のマウス位置を調べました。
ダイアログにpictureボックスを貼り付け、pictureの座標を取得しました。
GetDlgItem(IDC_Pic1)->GetWindowRect(&pic1);
ScreenToClient(&pic1);
ポイントした位置がpictureの上か判断します。
int hantei = pic1.PtInRect(point);
if(hantei != 0)//pic1内部にある場合
{
if(IDOK==dlg.DoModal())
{
}
}
dairygoodsさんありがとうございました。