ダイアログのクラス名 – プログラミング – Home

通知
すべてクリア

[解決済] ダイアログのクラス名


VC初心者
 VC初心者
(@VC初心者)
ゲスト
結合: 23年前
投稿: 21
Topic starter  

お世話になっています。何方かお教えください。
自作関数の引数にダイアログのクラス名を入れたいのですが、なかなかうまくいきません。
環境 Win2000 VC++6.0 MFC です

親ダイアログ.cpp とサブウィンドウ.cpp をつくっています。
今の現状です。

親ダイアログ.cpp
//------------------------------------------
BOOL CMainDlg::OnCommand(
WPARAM wParam,
LPARAM lParam)
{
 CPassWordDlg m_PasWrdDlg;
 int cidID = LOWORD(wParam);

 switch(cidID){
 case ID_PASSWORDIPTBTN : // パスワード入力画面表示ボタン
 case ID_PASSWORDSETBTN : // パスワード設定画面表示ボタン
     if(cidID == ID_PASSWORDIPTBTN){
        type = ID_PASSWORDIPTBTN;
}else{
   type = ID_PASSWORDSETBTN;
}
// パスワード設定
wndopn( m_hWnd, type); // 自作関数サブウィンドウ.cppにとぶ
break;
 }
}

サブウィンドウ.cpp
//------------------------------------------------------------------------------
BOOL wndopn( // ダイアログオープン
HWND m_Hwnd, // 親ウィンドウ
int cidID) // 子ウィンドウID
{
   CPassWordDlg m_PasDlg; ※
m_PasDlg.DoModal();
}

以上のソースでサブウィンドウの※の部分を引数にもっていきたいのです。
私のイメージでは、以下の感じです。

親ダイアログ.cpp
wndopn( m_hWnd, type); // 自作関数サブウィンドウ.cppにとぶ


引用未解決
トピックタグ
VC初心者
 VC初心者
(@VC初心者)
ゲスト
結合: 23年前
投稿: 21
Topic starter  

すいません、間違えて送信ボタン押してしまいました。

続きです。

以上のソースでサブウィンドウの※の部分を引数にもっていきたいのです。
サブウィンドウでダイアログクラス名を固定にしたくないのです。
私のイメージでは、以下の感じです。

親ダイアログ.cpp
CPassWordDlg m_PasDlg; //例で私用するダイアログクラス名
wndopn( type); // 自作関数サブウィンドウ.cppにとぶ
 ↓
wndopn( m_PasDlg, type ); // 自作関数サブウィンドウ.cppにとぶ

サブウィンドウ.cpp
//------------------------------------------------------------------------------
BOOL wndopn( // ダイアログオープン
親から送れてきたダイアログクラス名 m_Dlg,
int type)
{
m_Dlg.DoModal();
}

わかりにくいかも知れませんがよろしくお願いします。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

うーん、やりたいことが見えないです。
なぜ、別関数に飛ばして開きたいのかが良くわからない。
開くウインドウが違っているならやりたい事も違いそうだけど、
それならわざわざ別関数にする意味が薄いような。

それに自作関数ってグローバル関数ですよね。

ウインドウを開いて定型の後処理が行いたいだけなら
自作ダイアログクラスの実体である必要は無くて
CDialog* pDlgで良いと思います。
pDlg->DoModal()で事足りる話です。
派生クラスのポインタは親クラスのポインタで扱えるからなんですが、
この辺の話はわかるでしょうか?

ダイアログからデータを取り出して何かしたい、かつその処理がウインドウによって
違っているなら、なにも一つの関数にまとめなくてもと思います。

ダイアログが違っても同じデータを取り出して同じ処理をしたいのであれば、
CDialogから共通の親クラスを派生しておき、共通の変数と操作関数を
そのクラスに実装します。
後は引渡しをその親クラスのポインタでやれば、共通化できます。
クラスの派生に関する知識が有れば、その辺は見えてくるはずです。

目的まで記述してくれないと適切なアドバスは難しいと思います。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

他のスレッドで同じ質問して解決してるみたいですね。
ちゃんとこっちの始末もつけてほしかった。(T-T)


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

解決てすつ


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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