[英]Reading double from dialog edit control
我目前正在研究具有多个功能的程序(出于娱乐目的,这不是一项任务)。 昨天之前我从未使用过Win32,所以我很新。 我使用TheForger的教程开始学习。 现在,我有一个对话框窗体,上面有四个编辑框,charge1,charge2,charge3和粒子之间的距离。 我正在获取此信息并将其插入公式中,以解决粒子之间的作用力大小。
当我到达要从编辑框中获取数据的部分时,我收到0。
这是我当前的代码:
case ID_SOLVE:
{
ZeroMemory(coulombDisplay, sizeof(coulombDisplay));
GetDlgItemText(g_hCoulombs, IDC_DISTANCE, value1, 10);
coulombsDistance = atof(value1);
GetDlgItemText(g_hCoulombs, IDC_CHARGE1, value2, 10);
coulombsStrength1Base = atof(value2);
GetDlgItemText(g_hCoulombs, IDC_CHARGE2, value3, 10);
coulombsStrength2Base = atof(value3);
if(coulombsDistance == 0.0)
{
MessageBox(NULL, "WHAT", "WHAT", MB_OK | MB_ICONEXCLAMATION);
DestroyWindow(g_hCoulombs);
}
coulombsResult = (coulombsStrength1Base * coulombsStrength2Base);
coulombsResult /= (pow(coulombsDistance, 2));
coulombsResult *= kConstant;
sprintf(coulombDisplay, "%g", coulombsResult);
SendDlgItemMessage(g_hCoulombs, IDC_FORCE, WM_SETTEXT, 0, (LPARAM)(LPCSTR)coulombDisplay);
}
break;
value1
, value2
, value3
和coulombDisplay
都是char[]
,它们已被零
coulombsResult
, coulombsDistance
, coulombsStrength1Base
, coulombsStrength2Base
都是double
s
每当我运行程序时,都会弹出MessageBox指出“ WHAT”。 我正在使用VC ++ 2010的多字节字符集。
任何帮助将不胜感激。
STATUS_ACCESS_DENIED有一个好处。 如果查看atof的文档,将会看到错误情况将导致返回0.0。 我建议写入日志文件或其他内容,以查看将什么数据输入到atof函数中。 我想知道您分配的char缓冲区是否足够大。
尝试使用GetDlgItemTextA
而不是GetDlgItemText
来确保您获取的是8位字符而不是16位字符。 16位字符的上半部通常为零,并将被解释为空的8位字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.