Функция с переменным числом параметров
От: dikobrazz  
Дата: 12.02.04 07:17
Оценка:
Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например 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);
}

но в результате в буфере получается совсем не то, что надо..
Re: Функция с переменным числом параметров
От: retalik www.airbandits.com/
Дата: 12.02.04 07:46
Оценка:
Здравствуйте, dikobrazz, Вы писали:

D>Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например sprintf?

В-общем — никак (так как обе функции должны точно знать формат и количество переданных параметров).
Но непосредственно для вывода в буфер есть wvsprintf — она в твоем случае спасет.
Успехов,
Виталий.
Re: Функция с переменным числом параметров
От: Brick_1 Украина  
Дата: 12.02.04 07:49
Оценка:
Здравствуйте, 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.Проблем не наблюдал.
С уважением.
Re[2]: Функция с переменным числом параметров
От: dikobrazz  
Дата: 12.02.04 08:12
Оценка:
Здравствуйте, retalik, Вы писали:

D>>Как мне из своей функции с переменным числом параметров вызвать другую с переменным числом, например sprintf?

R>В-общем — никак (так как обе функции должны точно знать формат и количество переданных параметров).
R>Но непосредственно для вывода в буфер есть wvsprintf — она в твоем случае спасет.

Спасибо, wvsprintf — это как раз то, что мне надо
Как-то я этой функции не заметил...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.