如何从编辑控件中获取数值

pic*_*c11 10 c++ windows mfc

很抱歉,如果这太简单了,但我无法弄清楚如何将数值输入编辑控件.MFC编辑由CEdit类表示的控件.

谢谢.

Cpp*_*ris 19

除了已经提到的GetWindowText方法之外,您还可以通过DDX将其绑定到整数/无符号整数/双/浮点值.试试这个:

void CYourAwesomeDialog::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT_NUMBER, m_iNumber);
}
Run Code Online (Sandbox Code Playgroud)

而m_iNumber是您的CYourAwesomeDialog类的成员.

你必须打电话

UpdateData(TRUE);
Run Code Online (Sandbox Code Playgroud)

为了将控件中的值写入变量.呼叫

UpdateData(FALSE);
Run Code Online (Sandbox Code Playgroud)

反过来做 - 从控件中的变量.

编辑(奖金):

在重新阅读我的答案后,我注意到UpdateData(...)需要一个BOOL变量 - 已更正.所以我对那些喜欢可读性的人有了一个想法.因为我总是混淆哪个调用指向哪个方向,所以你可以引入一个enum来使它更具可读性(就像在stdafx.h或某个中心头文件中):

enum UpdateDataDirection
{
    FromVariablesToControls = FALSE,
    FromControlsToVariables = TRUE
}
Run Code Online (Sandbox Code Playgroud)

你只需要写:

UpdateData(FromVariablesToControls);
Run Code Online (Sandbox Code Playgroud)

要么

UpdateData(FromControlsToVariables);
Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 8

CEdit派生自CWnd,因此它有一个成员函数GetWindowText,可以调用它来获取CEdit中的文本,然后将其转换为数字类型,intdouble- 取决于您希望用户输入的内容:

CString text;
editControl.GetWindowText(text);

//here text should contain the numeric value
//all you need to do is to convert it into int/double/whatever
Run Code Online (Sandbox Code Playgroud)