![]() |
Формат чисел в окне CEdit
Подскажите, как можно выводить double числа в окно редактирования в заданом формате? Например, получается число 4.556565Е+11 и в окошко не влазит. Хочу ограничить его в "%.2е" формат. (4.56е+11).
|
Попробуй отформатировать строку перед тем как выводить её в эдит .
Примерно так: Код:
double d =24938985938982.23985849859893345; |
У меня немного другая проблема. Есть переменная m_calc - принадлежащая окну CEdit. На начальном этапе я ввожу туда значение, запускаю счет. По мере счета значение m_calc изменяется и показывается в том же Edit окне.
m_calc = calculation(); UpdateData ( FALSE ); Так вот вопрос как управлять форматом вывода в это окошко? |
Думаю что по другому не получится. Запоминай результат, форматируй его в стринге и потом ставь стринг в эдит. Дело в том что UpdateData приводит к вызову соответствующей функции DDX_Text. А она вызывает подходящую AfxText.... В твоем случай для агумента float будет вызвана
void AFXAPI AfxTextFloatFormat(CDataExchange* pDX, int nIDC,void* pData, double value, int nSizeGcvt) (файл ....\Microsoft Visual Studio\VC98\MFC\SRC\DLGFLOAT.CPP) Код:
void AFXAPI AfxTextFloatFormat(CDataExchange* pDX, int nIDC, |
Да, это выход. Немного громоздко, а у меня там каждая миллисекунда на учете... расчет в real-time. Но вывод результата можно выплевывать по секундному таймеру. :beer:
|
Не . Медленее не будет, скорее наоборот. UpdateData ,в конечном счёте, то же самое делает, только вызывает еще несколько допольнительных функций. Можешь для скорости не использовать CString, а форматировать с помощью sprintf и для установки текста в окно используй прямой вызов API -- ::SetWindowText(hWnd,Text).
Real-time лучше вообще без MFC писать. ;) |
| Часовой пояс GMT +4, время: 07:56. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.