簡體   English   中英

從對話框編輯控件讀取雙

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

value1value2value3coulombDisplay都是char[] ,它們已被零

coulombsResultcoulombsDistancecoulombsStrength1BasecoulombsStrength2Base都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM