如果我在源代码中定义它们,我可以完全将字符串转换为十六进制:
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设置的内容有什么问题吗?
答案 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);