bmp画像をクリックすると別のダイアログを表示させるにはどうすればいいですか? – プログラミング – Home

bmp画像をクリックすると別のダイアロ...
 
通知
すべてクリア

[解決済] bmp画像をクリックすると別のダイアログを表示させるにはどうすればいいですか?


万年係長
 万年係長
(@万年係長)
ゲスト
結合: 20年前
投稿: 1
Topic starter  

VC++6.0 OS2000 MFC
VC++を始めたばかりのド素人です。
宜しくお願いします。

bmp画像をクリックすると別のダイアログを表示させるにはどうすればいいですか?

bmpはLoadImage関数を使って直接フォームに描画しています。
bmp画像の領域(画像の位置)を定義して、WM_COMMANDすればいいのですか?

サンプルソースなどがあると助かります。
宜しくお願いします。


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

以下のようにしてみてはいかがでしょう。

1) 直接フォームに描画するのをやめる。
2) ダイアログエディタにてピクチャーコントロールを張り付け、
プロパティでIDをIDC_STATIC以外にする(以下の説明ではIDC_IMAGEと仮定)。
さらに、タイプをビットマップ、通知をONにする。
3) OnInitDialog()で画像を読込み、以下のようにする。
((CStatic*)GetDlgItem(IDC_IMAGE))->SetBitmap(ロードしたビットマップ);
4) クラスウィザードでIDC_IMAGEのBN_CLICKEDハンドラを追加し、
別のダイアログを表示する処理を書く。


返信引用
万年係長
 万年係長
(@万年係長)
ゲスト
結合: 20年前
投稿: 17
 

追記です。
リストボックスからbmp画像の種類を選択して
その種類のグループ画像を描画させます。

リストボックス選択
例)車 →車を選択すると |_| |_| |_| 3つの画像が表示される
えんぴつ

OnInitDialog()で画像を初期化するとリストボックス選択する前に
画像が描画されてしまいます。

説明が足りなくて申し訳ありません。


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

> OnInitDialog()で画像を初期化するとリストボックス選択する前に
> 画像が描画されてしまいます。

でしたら、表示したいタイミングで初期化してください。


返信引用
万年係長
 万年係長
(@万年係長)
ゲスト
結合: 20年前
投稿: 17
 

解決しました。
メッセージ
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さんありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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