int CTEDialog::GetDlgItemFloat(int Item, double &AValue)
{
HWND wnd = ::GetDlgItem(hwndDialog, Item);
UINT sellen = ::GetWindowTextLength(wnd);
LPTSTR strbuf = new TCHAR[++sellen];
::GetWindowText(wnd, strbuf, sellen);
int status = acdbDisToF(strbuf,-1,&AValue);
delete strbuf;
return status;
}
//-----------------------------------------------------------------------------
void CTEDialog::SetDlgItemFloat(int Item, double AValue)
{
TCHAR strbuf[30];
acdbRToS(AValue,-1,-1,strbuf);
::SetWindowText(::GetDlgItem(hwndDialog, Item), (LPTSTR)&strbuf);
}
CString можно передавать как есть, если требуется (ACHAR *) только для чтения,
если же нужен буфер для записи, то у CString есть методы GetBuffer и ReleaseBuffer
CString s;
int textlen;
textlen = edEdit.GetTextLengthEx(flags, 1200);
LPTSTR buf = s.GetBuffer(textlen);
GETTEXTEX st;
...
edEdit.SendMessage(EM_GETTEXTEX, (WPARAM)&st, (LPARAM)buf);
s.ReleaseBuffer();