c ++ MFC将编辑控件中的字符串转换为十六进制

时间:2014-02-11 16:12:12

标签: c++ string mfc hex cedit

如果我在源代码中定义它们,我可以完全将字符串转换为十六进制:

int input = 15;
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);

结果是'f',但是如果我这样做会怎么样:

TCHAR buffer[500];
int input = GetDlgItemText(TOCON, buffer, 50);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);

输出为'2'?我已经尝试了一些从编辑控件获取文本的其他方法,但是每个方法都返回了错误的结果。我是如何从控件获取文本的,或者我为maxcount设置的内容有什么问题吗?

1 个答案:

答案 0 :(得分:2)

GetDlgItemText将编辑控件中的文本复制到缓冲区中,并返回从对话框控件中读取的字符数,将文本解释为数字。要做的就是首先将buffer中的字符串转换为整数,然后将其提供给output.Format。例如,您可以使用函数atoi执行此操作。您修改后的代码如下所示:

TCHAR buffer[500];
GetDlgItemText(TOCON, buffer, 50);
int input = atoi(buffer);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);