0

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

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 设置的内容是否有问题?

4

1 回答 1

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);
于 2014-02-11T16:15:57.643 回答