8
A
回答
8
的CEdit從CWnd派生,所以它有一個叫做GetWindowText
成員函數,你可以打電話讓在CEdit的文本,然後再轉換爲數字型,int
或double
- 這取決於你所期望的用戶輸入:
CString text;
editControl.GetWindowText(text);
//here text should contain the numeric value
//all you need to do is to convert it into int/double/whatever
16
除了已經提到的GetWindowText函數方法,還可以通過DDX其綁定到的整數/無符號整數/雙/浮點值。試試這個:
void CYourAwesomeDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_NUMBER, m_iNumber);
}
而m_iNumber是您的CYourAwesomeDialog類的成員。
你必須調用
UpdateData(TRUE);
爲了從控件的值寫入變量。撥打電話
UpdateData(FALSE);
要做到這一點 - 從控件中的變量。
EDIT(獎金):
在重新閱讀我的回答,我注意到的UpdateData(...)需要一個布爾變量 - 糾正。所以我有一個喜歡可讀性的人的想法。因爲我總是糊塗了其呼叫做哪個方向,你可以引入一個枚舉,使其更具可讀性,像這樣(也許在stdafx.h中或一些中心標頭):
enum UpdateDataDirection
{
FromVariablesToControls = FALSE,
FromControlsToVariables = TRUE
}
,你就只需要編寫:
UpdateData(FromVariablesToControls);
或
UpdateData(FromControlsToVariables);
1
如果你要經常需要這種功能,說在多個對話,那麼你不妨繼承自己的CEdit的派生類做得到,設置和驗證工作。
class CFloatEdit : public CEdit
{
public:
CFloatEdit();
void SetValue(double v) {
// format v into a string and pass to SetWindowText
}
double GetValue() {
// validate and then return atoi of GetWindowText
}
void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {
// only allow digits, period and backspace
}
};
類似的東西,確保消息映射將所有其他消息傳遞給父CEdit。您可以將其擴展爲具有可自定義的下限和上限和小數位設置。
相關問題
- 1. 從ListView獲取編輯值
- 2. 如何在從GDB獲取值後編輯二進制文件
- 3. 如何從UWP DatePicker控件獲取值?
- 4. 如何從ListBoxItem的控件獲取值?
- 5. 我如何從Login控件獲取值?
- 6. 如何從動態控件獲取值?
- 7. 如何從窗體控件獲取值
- 8. 獲取編輯控件中的行號
- 9. radgrid控件:獲取有關編輯
- 10. 如何在編輯空值的情況下從DB獲取值
- 11. 如何編輯並從文本文件中獲取數據?
- 12. 從編輯字段獲取值(C++ WINAPI)
- 13. 從CheckBox控件獲取值
- 14. 從編輯控件中讀取文本
- 15. 如何獲取datagridview/datagridviewcell的編輯控件?
- 16. 獲取在Telerik的已編輯項目的值radgrid控件
- 17. 獲取DetailsView控件的值在編輯模式下
- 18. 獲取值時radgrid控件處於編輯模式(就地)
- 19. 如何使用控件源的名稱從控件獲取值?
- 20. 獲取編輯文本值
- 21. 獲取編輯項值
- 22. 如何從郵件編輯器獲取電子郵件地址
- 23. GridView如何從編輯中的文本框中獲取值MDOE
- 24. 如何連續從編輯文本中獲取值android
- 25. 如何從可編輯組合框中獲取新值?
- 26. 如何從列表視圖中獲取編輯文本值
- 27. 反正有沒有從編輯控件中獲取文本?
- 28. 從編輯控件(純Win32 API)中獲取文本
- 29. 從編輯控件獲取Unicode字符串
- 30. 無法從winapi的編輯控件中獲取文本
我會使用DDV進行驗證工作 - 但是您可以將指針傳遞給此控件以突出驗證錯誤 – CppChris