| imho.ws |
![]() |
|
|
|
# 2 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
Попробуй отформатировать строку перед тем как выводить её в эдит .
Примерно так: Код:
double d =24938985938982.23985849859893345;
CString str;
str.Format("%.2e",d);
m_Edit.SetWindowText((LPCSTR)str);
__________________
Best Regards |
|
|
|
|
# 3 |
|
Guest
Сообщения: n/a
|
У меня немного другая проблема. Есть переменная m_calc - принадлежащая окну CEdit. На начальном этапе я ввожу туда значение, запускаю счет. По мере счета значение m_calc изменяется и показывается в том же Edit окне.
m_calc = calculation(); UpdateData ( FALSE ); Так вот вопрос как управлять форматом вывода в это окошко? |
|
|
# 4 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
Думаю что по другому не получится. Запоминай результат, форматируй его в стринге и потом ставь стринг в эдит. Дело в том что 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,
void* pData, double value, int nSizeGcvt)
{
ASSERT(pData != NULL);
HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
TCHAR szBuffer[32];
if (pDX->m_bSaveAndValidate)
{
::GetWindowText(hWndCtrl, szBuffer, _countof(szBuffer));
double d;
if (!_AfxSimpleFloatParse(szBuffer, d))
{
AfxMessageBox(AFX_IDP_PARSE_REAL);
pDX->Fail(); // throws exception
}
if (nSizeGcvt == FLT_DIG)
*((float*)pData) = (float)d;
else
*((double*)pData) = d;
}
else
{
_stprintf(szBuffer, _T("%.*g"), nSizeGcvt, value);
AfxSetWindowText(hWndCtrl, szBuffer);
}
}
__________________
Best Regards |
|
|
|
|
# 6 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
Не . Медленее не будет, скорее наоборот. UpdateData ,в конечном счёте, то же самое делает, только вызывает еще несколько допольнительных функций. Можешь для скорости не использовать CString, а форматировать с помощью sprintf и для установки текста в окно используй прямой вызов API -- ::SetWindowText(hWnd,Text).
Real-time лучше вообще без MFC писать.
__________________
Best Regards |
|
|