質問 |
||
| QNo.4028295 | プログラム分割で | |
|---|---|---|
| 質問者:yzm250 |
VC++6.0でダイアログベースのアプリを作成しています。 少々大きくなったのでプログラムを分割しました。 この場合 分割した側からメイン側のダイアログに配置したエディットボックスに 文字表示したいのですが出来ませんでした。 現在は エディットボックスのメンバ変数 m_EdWindow として・・・ //コールバックルーチンの中で CAiCallDlg *dlg; dlg = (CAiCallDlg *)Param; dlg->m_EdWindow.SetWindowText("もじもじ"); //ボタンなどのイベントの中で m_EdWindow.SetWindowText("もじもじ"); で表示させていますが別ファイルとして作成した関数内からの表示はハンドルを取得して? SetWindowText が使えるのでしょうか。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/17 08:03 |
||
回答 |
|
| ANo.2 | 別ファイルにしたということですが お使いになるクラスに関するヘッダファイルは当然インクリュードする必要があります そうしないと CPPファイルだけではどのクラスの事を記述してあるのか分かりません atdafx.h、AiCallDlg.h は最低限インクリュードしないといけないでしょう |
|---|---|
| 回答者:redfox63 | |
| 種類:回答 どんな人:専門家 自信:自信あり |
|
| 回答日時: 08/05/17 14:56 |
|
| |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答 |
|
| ANo.1 | メンバー変数m_EdWindowのアクセス指定子がpublicなら ダイアログクラスのポインタ経由で可能だと思います ボタンのイベントを別ファイルにしただけなら そのイベントハンドラはダイアログクラスに属しているであろうと考えられるので直接 メンバー変数.SetWindowText で使えるはずです dlgに取得したオブジェクトが本当にCAiCallDlgのポインターなのか また そのメンバーの m_hWndは有効なハンドルなのかなどをチェックしましょう メンバー変数 m_EdWindowのアクセス指定子の確認もしましょう エラーが出るならその内容も投稿しましょう 単に『出来ませんでした』では何処に原因があるのか見当のつけようもありません |
|---|---|
| 回答者:redfox63 | |
| 種類:回答 どんな人:専門家 自信:参考意見 |
|
| 回答日時: 08/05/17 08:36 |
|
| |
| この回答への補足 | 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 }; ・ ・ CEdit m_EdWindow; ・ ・ とあります >メンバー変数m_EdWindowのアクセス指定子がpublicなら このpublic指定で出来そうなのですがこの場合の指定がわかりません。 宜しくお願い致します。 |
| この回答へのお礼 | 追加情報 申し訳ありません、エラー表示の追加があります。 'SetWindowTextA' :左側がクラス、構造体、共用体ではありません。 のエラーも同時にでます。 別ファイルの中でincludeしないといけないヘッダファイルがあるのでしょうか。 |