Показать сообщение отдельно
Старый 22.06.2005, 22:12     # 4
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Думаю что по другому не получится. Запоминай результат, форматируй его в стринге и потом ставь стринг в эдит. Дело в том что 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
alexey_ma вне форума