はじめまして。VC++を始めたばかりのものです。
現在、メインのダイアログにエディットボックスをOnKillfocusで設定し、入力された文
字列をメンバ変数で保持する処理を作成しています。
内容的にはADlg.hが以下の通りです。
class CADlg : public CDialog
{
public:
CString m_B; // 入力文字列を保持したい変数
CADlg(CWnd* pParent = NULL); // 標準のコンストラクタ
// ダイアログ データ
//{{AFX_DATA(CSheadTestToolDlg)
enum { IDD = IDD_A_DIALOG };
CEdit m_EditB;
//}}AFX_DATA
でADlg.cppの内容は以下の通りです。
void CADlg::OnKillfocusB()
{
CString StrSize;
m_EditB.GetWindowText(StrSize);
m_B = StrSize;
}
これでダイアログを起動させ、エディットボックスに文字列入力し、フォーカスを移動
させると落ちてしまうのですが、何が原因なのでしょうか?デバッガで追うと
GetWindowTextの中のASSERT(::IsWindow(m_hWnd));でとまってしまっているようなので
すが・・・。
ちなみにこちらの環境はバージョン6.0、ダイアログベース、WindowsXPになります。
初歩の初歩で質問するのも恐縮なのですが、ご教授よろしくお願いします。
m_EditB は、ダイアログ上のコントロールに関連付けられていますか?
また、こういうケースでは、DDX を使って UpdateWindow で文字列を取得するのが一般
的だと思います。
シャノンさん
回答ありがとうございました。単にm_EditBがダイアログ上のコントロールに関連付けら
れていないだけでした。すみません。UpdateWindow に関してはもう少し勉強しながら使
用できるようにしたいと思います。ありがとうございました。
間違えた。
UpdateWindow じゃなくて UpdateDate です。ごめん。
UpdateData です orz