アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC++6.0でダイアログベースのアプリを作成しています。
少々大きくなったのでプログラムを分割しました。
この場合
分割した側からメイン側のダイアログに配置したエディットボックスに
文字表示したいのですが出来ませんでした。

現在は
エディットボックスのメンバ変数 m_EdWindow として・・・

//コールバックルーチンの中で
CAiCallDlg *dlg;
dlg = (CAiCallDlg *)Param;

dlg->m_EdWindow.SetWindowText("もじもじ");

//ボタンなどのイベントの中で
m_EdWindow.SetWindowText("もじもじ");

で表示させていますが別ファイルとして作成した関数内からの表示はハンドルを取得して?
SetWindowText が使えるのでしょうか。

A 回答 (2件)

別ファイルにしたということですが


お使いになるクラスに関するヘッダファイルは当然インクリュードする必要があります

そうしないと CPPファイルだけではどのクラスの事を記述してあるのか分かりません

atdafx.h、AiCallDlg.h は最低限インクリュードしないといけないでしょう
    • good
    • 0

メンバー変数m_EdWindowのアクセス指定子がpublicなら


ダイアログクラスのポインタ経由で可能だと思います

ボタンのイベントを別ファイルにしただけなら
そのイベントハンドラはダイアログクラスに属しているであろうと考えられるので直接 メンバー変数.SetWindowText で使えるはずです

dlgに取得したオブジェクトが本当にCAiCallDlgのポインターなのか
また そのメンバーの m_hWndは有効なハンドルなのかなどをチェックしましょう
メンバー変数 m_EdWindowのアクセス指定子の確認もしましょう

エラーが出るならその内容も投稿しましょう
単に『出来ませんでした』では何処に原因があるのか見当のつけようもありません

この回答への補足

redfox63さん早々のご回答ありがとうございます。
質問時に記載しましたプログラムの一部はエラーがなく動作している部分です。

同じような表示を別ファイルとした関数の中で実行したいのですが
単純に持って行って実行しますと (m_EdWindow.SetWindowText("もじもじ"); の場合)
'm_EdWindow' : 定義されていない識別子です・・・とのエラーとなります。

m_EdWindowはエディットボックスを配置しClass Wizardでメンバ変数を設定して使っています。

出来たスケルトン中に
DDX_Control(pDX, IDC_EDIT1, mEdWindow);

さらにヘッダファイルの中で
  // CAiCallDlg ダイアログ
 class CAiCallDlg : public CDialog
 {
  // 構築
 public:
CAiCallDlg(CWnd* pParent = NULL); // 標準のコンストラクタ

 // ダイアログ データ
//{{AFX_DATA(CAiCallDlg)
enum { IDD = IDD_AICALL_DIALOG };

     ・ 
CEditm_EdWindow;
     ・
     ・

とあります

>メンバー変数m_EdWindowのアクセス指定子がpublicなら
このpublic指定で出来そうなのですがこの場合の指定がわかりません。

宜しくお願い致します。

補足日時:2008/05/17 10:00
    • good
    • 0
この回答へのお礼

追加情報
 申し訳ありません、エラー表示の追加があります。

'SetWindowTextA' :左側がクラス、構造体、共用体ではありません。
のエラーも同時にでます。

別ファイルの中でincludeしないといけないヘッダファイルがあるのでしょうか。

お礼日時:2008/05/17 10:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!