ピクチャーボックスに画像ファイルをドロップした後の動作 – プログラミング – Home

ピクチャーボックスに画像ファイルをドロ...
 
通知
すべてクリア

[解決済] ピクチャーボックスに画像ファイルをドロップした後の動作


えふ
 えふ
(@えふ)
ゲスト
結合: 23年前
投稿: 11
Topic starter  

Win2000 VC6.0SP5 MFCを使用しています。

ダイアログに貼り付けた2つのピクチャーボックスにドロップされた画像ファイルに対して、そ
れぞれ異なる別の関数(ダイアログの派生クラスのメンバ関数)を呼んで処理したいのですが、
以下の2点がわかりません。

1.作成したCStaticの派生クラスから、ダイアログ派生クラスのメンバ関数を呼ぶ方法
2.1つのCStatic派生クラスから、ピクチャーボックスに応じた関数を呼ぶ方法

コードイメージは以下の通りです。
よろしくお願いします。

<MyStatic.h>
class CMyStatic : public CStatic
{
...
}

<MyStatic.cpp>
void CMyStatic::OnDropFiles(HDROP hDropInfo)
{
CStatic::OnDropFiles(hDropInfo);

★ここに、ピクチャーボックスに応じた、ダイアログ派生クラスのメンバ関数を呼びたい
★m_MyStatic1に対してはfunc1()、m_MyStatic2に対してはfunc2()を呼びたい
}

<MyDlg.h>
class CMyDlg : public CDialog
{
...

public:
void func1();
void func2();

private:
CMyStatic m_MyStatic1;
CMyStatic m_MyStatic2;
}

<MyDlg.cpp>
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();

m_MyStatic1.SubclassDlgItem(IDC_MY_STATIC1, this);
m_MyStatic2.SubclassDlgItem(IDC_MY_STATIC2, this);

...
}


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

> 1.作成したCStaticの派生クラスから、ダイアログ派生クラスのメンバ関数を呼ぶ方法

いろいろな方法で可能ですが、

CMyStaticの親がCMyDlgで固定ならば、
((CMyDlg*)GetParent())->func1();

Win32風にするなら、独自のコマンドを定義してもよいです。
#define MY_COMMAND 1
GetParent()->SendMessage(WM_COMMAND,
MAKEWPARAM(MY_COMMAND, GetDlgCtrlID()), (LPARAM)m_hWnd);

> 2.1つのCStatic派生クラスから、ピクチャーボックスに応じた関数を呼ぶ方法

ベタな方法なら、
switch(GetDlgCtrlID()) {
case IDC_MY_STATIC1:
// 1の場合
case IDC_MY_STATIC2:
// 2の場合
}

WM_COMMANDを使う場合は、CMyDlgのメッセージマップで振り分けることができます。
ON_COMMAND(MY_COMMAND, IDC_MY_STATIC1, func1)
ON_COMMAND(MY_COMMAND, IDC_MY_STATIC2, func2)


返信引用
えふ
 えふ
(@えふ)
ゲスト
結合: 23年前
投稿: 11
Topic starter  

> CMyStaticの親がCMyDlgで固定ならば、
> ((CMyDlg*)GetParent())->func1();

うぅ、GetParent()を使うんだろうとは思っておりましたが、
(CMyDlg*)GetParent()->func1();
とやっていて、コンパイルが通らずに悩んでおりました。。。

> ベタな方法なら、
> switch(GetDlgCtrlID()) {
> case IDC_MY_STATIC1:
> // 1の場合
> case IDC_MY_STATIC2:
> // 2の場合
> }

なるほど!
GetDlgCtrlID()を使えばいいんですね!
気付きませんでした。。。

おかげさまで、所望する動作を実現させることができました。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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