[英]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.