VC基礎問題集錦
ダイアログ・ボックス・アプリケーションで現在のウィンドウのハンドルを取得するにはどうすればいいですか?
GetSafeHwnd()
またはm_を直接使用するhWnd
0、このようなエラーの解決方法error C 2143:syntax error:missing';'before '*' : error C2501: 'Cpage0' : missing storage-class or type specifiers : error C2501: 'p0' : missing storage-class or type specifiers
Cpage 0はダイアログボックスから派生したクラスで、あるファイルでこのような変数、すなわちCpage 0*p 0が定義されています.と、定義した結果、以上のエラーが発生しました.
ネット上で検索する方法は、対応する都のファイルの上部で、この派生クラスを宣言すればいいです.方法:class Cpage 0;
1、debugがインタフェースから出ない場合は、buildメニューからbuild allをクリックする必要があります.
2、コントロール入力情報を取得するにはUpdateData()が必要であり、コントロール出力情報を更新するにはUpdata(false)が必要である.
以下3-5は主にタブダイアログ間の変数アクセス方法について、自分でまとめてみました.
3、サブダイアログはメインダイアログを直接操作します.ここのサブダイアログの親ダイアログは必ずしもメインダイアログではありません.AfxGetApp()->m_pMainWnd;メイン・ダイアログ・ボックスのポインタを取得し、メイン・ダイアログ・ボックスを2次サブダイアログ・ボックスで操作できます.
実装方法:
サブダイアログボックスにbuttonを追加し、メッセージ応答関数を次のように追加します.
CTiaozu22Dlg *ppDlg = (CTiaozu22Dlg *)AfxGetApp()->m_pMainWnd; ppDlg->m_ss = "zlg"; ppDlg->UpdateData(false);
注記:CTiaozu 22 Dlgは私のメインダイアログクラスです.m_ssは、メインダイアログボックスの編集ボックスに関連付けられたメンバー変数です.
AfxGetApp()この関数は、現在の適用プロセスのポインタを得ることができます.CWinApp*タイプで、このポインタでこのプロセスのオブジェクトにアクセスできます.現在の適用プロセスには、メンバー変数が現在のメインウィンドウ(メインダイアログ)のポインタ(Cwnd*タイプ)であるm_pMainWndがあります.AfxGetApp()->m_pMainWnd;現在のアプリケーションのメインウィンドウ(メインダイアログの)ポインタを取得するには、CWnd*pWnd=AfxGetApp()->GetMainWnd()を使用します.ポインタ式Cwndタイプを取得するため、必要に応じて現在のメインダイアログボックスのタイプに強制的に変換します.ここでCTiaozu 22 Dlgクラスです.
4、サブダイアログ間で相互参照する方法
私はVC菜鳥で、ネット上でグローバル変数を使う方法が悪いと言っているのを見て、このようなグローバル変数を使わない方法を探しました.
まず、2つのサブダイアログボックスを作成し、2つのダイアログボックスにダイアログボックスを与えるクラスを新規に作成する必要があります.styleプロパティchildを選択します.ここにはCpage 0とCpage 1が2つ建てられています.メインダイアログクラスはCTiaozu 22 Dlgクラスのままです.メインダイアログクラスに2つ追加されたオブジェクトは、ダイアログ変数Cpage 0 page 0,Cpage 1 page 1です.
ダイアログボックス0で操作する場合は、ダイアログボックス1を操作します.これは、ダイアログボックス0にメンバー変数を追加する必要があります.Cpage 1*p 1タイプのポインタで、メインダイアログボックスのOnInitDialog()関数でpage 0を追加します.p 1オブジェクトの割り当て完了
page0.p1=&page1;
このようなダイアログ0のp 1は、ダイアログ1を指す.次に、ダイアログボックス0にbutton応答関数を追加します.内容は次のとおりです.
p1->m_e.SetWindowText("syf");
m_eは、ダイアログ1の編集ボックスコントロールオブジェクトです.
5、メインダイアログでサブダイアログのコントロールを操作する方法
Cwnd m_hWnd, , 。
CWnd CFrameWnd、CDialog、CView、CControlBar
GetSafeHwnd()
またはm_を直接使用するhWnd
0、このようなエラーの解決方法error C 2143:syntax error:missing';'before '*' : error C2501: 'Cpage0' : missing storage-class or type specifiers : error C2501: 'p0' : missing storage-class or type specifiers
Cpage 0はダイアログボックスから派生したクラスで、あるファイルでこのような変数、すなわちCpage 0*p 0が定義されています.と、定義した結果、以上のエラーが発生しました.
ネット上で検索する方法は、対応する都のファイルの上部で、この派生クラスを宣言すればいいです.方法:class Cpage 0;
1、debugがインタフェースから出ない場合は、buildメニューからbuild allをクリックする必要があります.
2、コントロール入力情報を取得するにはUpdateData()が必要であり、コントロール出力情報を更新するにはUpdata(false)が必要である.
以下3-5は主にタブダイアログ間の変数アクセス方法について、自分でまとめてみました.
3、サブダイアログはメインダイアログを直接操作します.ここのサブダイアログの親ダイアログは必ずしもメインダイアログではありません.AfxGetApp()->m_pMainWnd;メイン・ダイアログ・ボックスのポインタを取得し、メイン・ダイアログ・ボックスを2次サブダイアログ・ボックスで操作できます.
実装方法:
サブダイアログボックスにbuttonを追加し、メッセージ応答関数を次のように追加します.
CTiaozu22Dlg *ppDlg = (CTiaozu22Dlg *)AfxGetApp()->m_pMainWnd; ppDlg->m_ss = "zlg"; ppDlg->UpdateData(false);
注記:CTiaozu 22 Dlgは私のメインダイアログクラスです.m_ssは、メインダイアログボックスの編集ボックスに関連付けられたメンバー変数です.
AfxGetApp()この関数は、現在の適用プロセスのポインタを得ることができます.CWinApp*タイプで、このポインタでこのプロセスのオブジェクトにアクセスできます.現在の適用プロセスには、メンバー変数が現在のメインウィンドウ(メインダイアログ)のポインタ(Cwnd*タイプ)であるm_pMainWndがあります.AfxGetApp()->m_pMainWnd;現在のアプリケーションのメインウィンドウ(メインダイアログの)ポインタを取得するには、CWnd*pWnd=AfxGetApp()->GetMainWnd()を使用します.ポインタ式Cwndタイプを取得するため、必要に応じて現在のメインダイアログボックスのタイプに強制的に変換します.ここでCTiaozu 22 Dlgクラスです.
4、サブダイアログ間で相互参照する方法
私はVC菜鳥で、ネット上でグローバル変数を使う方法が悪いと言っているのを見て、このようなグローバル変数を使わない方法を探しました.
まず、2つのサブダイアログボックスを作成し、2つのダイアログボックスにダイアログボックスを与えるクラスを新規に作成する必要があります.styleプロパティchildを選択します.ここにはCpage 0とCpage 1が2つ建てられています.メインダイアログクラスはCTiaozu 22 Dlgクラスのままです.メインダイアログクラスに2つ追加されたオブジェクトは、ダイアログ変数Cpage 0 page 0,Cpage 1 page 1です.
ダイアログボックス0で操作する場合は、ダイアログボックス1を操作します.これは、ダイアログボックス0にメンバー変数を追加する必要があります.Cpage 1*p 1タイプのポインタで、メインダイアログボックスのOnInitDialog()関数でpage 0を追加します.p 1オブジェクトの割り当て完了
page0.p1=&page1;
このようなダイアログ0のp 1は、ダイアログ1を指す.次に、ダイアログボックス0にbutton応答関数を追加します.内容は次のとおりです.
p1->m_e.SetWindowText("syf");
m_eは、ダイアログ1の編集ボックスコントロールオブジェクトです.
5、メインダイアログでサブダイアログのコントロールを操作する方法