• ベストアンサー

GetDlgItemInt( ) c++

現在MFCでウィンドウプログラムを作成しています。 現在、エディットボックス(IDC_EDIT1)が1つあり その変数に CEdit m_ed1; と、もう1つ double d_ed1; があります。 どちらもIDC_EDIT1に対する変数です。 IDC_EDIT1で入力された値(2.56)をd_ed1に代入したいのです。 d_ed1 = GetDlgItemInt(IDC_EDIT1); としたらもちろん d_ed1には [2]しか入らないわけなのですが、 これを解消するにはどうしたらよいのでしょうか。 ご教授の程お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

文字列で受けて、_tcstodで変換する。 引数がCStringのGetDlgItemTextを使えば簡単です。 CString strText; this->GetDlgItemText(IDC_EDIT1, strText); // 前後の空白を消すのであれば、strText.Trim(); d_ed1 = _tcstod(strText, NULL); // 入力チェックするなら第二引数を使う。

doborn
質問者

お礼

お礼が遅れ申し訳ございません。 No.1の方のものでも解決はできましたが、 こちらでも解決することができました。 簡単ですぐ覚えることができそうです。 ありがとうございました!

その他の回答 (1)

回答No.1

 こんばんは。  先程の逆を実行すれば良いのです。   //'\0'の分を含めてテキストの長さを取る const int iLen = m_ed1.GetWindowTextLength() + 1; //受け取りバッファを割り当てる CHAR* pszValue = static_cast<CHAR*>(::malloc(iLen)); //文字を読み出す const int iRead=m_ed1.GetWindowText(pszValue, iLen); //確認 if(iRead > iLen - 1) { ::MessageBox(NULL, "ERROR", "ERROR", IDOK); } //変換 double d_ed1 = ::atof(pszValue); //不要になったら始末する ::free(pszValue);

doborn
質問者

お礼

お礼が遅れ申し訳ございません。 今回回答いただいたものでも無事解決することができました。 ありがとうございます!

関連するQ&A

専門家に質問してみよう