Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например sprintf?
Пробую так:
void AddLog (const char *format,...)
{
HWND h_edtLog;
static char buf[256];
va_list ap;
va_start(ap, format);
wsprintf(buf, format, ap);
va_end(ap);
h_edtLog=GetDlgItem(hw_dlg,E_LOG);
SendMessage(h_edtLog,EM_SETSEL,-1, 0);
SendMessage(h_edtLog,EM_REPLACESEL,0, (LPARAM) buf);
}
но в результате в буфере получается совсем не то, что надо..
Здравствуйте, dikobrazz, Вы писали:
D>Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например sprintf?
D>Пробую так:
D>D>void AddLog (const char *format,...)
D>{
D> HWND h_edtLog;
D> static char buf[256];
D> va_list ap;
D> va_start(ap, format);
D> wsprintf(buf, format, ap);
D> va_end(ap);
D> h_edtLog=GetDlgItem(hw_dlg,E_LOG);
D> SendMessage(h_edtLog,EM_SETSEL,-1, 0);
D> SendMessage(h_edtLog,EM_REPLACESEL,0, (LPARAM) buf);
D>}
D>
D>но в результате в буфере получается совсем не то, что надо..
Доброго!
Пользуюсь функцией
vsprintf.Проблем не наблюдал.
С уважением.
Здравствуйте, retalik, Вы писали:
D>>Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например sprintf?
R>В-общем — никак (так как обе функции должны точно знать формат и количество переданных параметров).
R>Но непосредственно для вывода в буфер есть wvsprintf — она в твоем случае спасет.
Спасибо, wvsprintf — это как раз то, что мне надо
Как-то я этой функции не заметил...