プロが教える店舗&オフィスのセキュリティ対策術

現在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]しか入らないわけなのですが、
これを解消するにはどうしたらよいのでしょうか。

ご教授の程お願いいたします。

A 回答 (2件)

文字列で受けて、_tcstodで変換する。


引数がCStringのGetDlgItemTextを使えば簡単です。

CString strText;
this->GetDlgItemText(IDC_EDIT1, strText);
// 前後の空白を消すのであれば、strText.Trim();
d_ed1 = _tcstod(strText, NULL); // 入力チェックするなら第二引数を使う。
    • good
    • 0
この回答へのお礼

お礼が遅れ申し訳ございません。

No.1の方のものでも解決はできましたが、
こちらでも解決することができました。

簡単ですぐ覚えることができそうです。
ありがとうございました!

お礼日時:2008/12/24 14:28

 こんばんは。


 先程の逆を実行すれば良いのです。
 
//'\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);
    • good
    • 0
この回答へのお礼

お礼が遅れ申し訳ございません。

今回回答いただいたものでも無事解決することができました。
ありがとうございます!

お礼日時:2008/12/24 14:27

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

このQ&Aを見た人はこんなQ&Aも見ています