Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 189
от 04.02.2003, 20:30

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 563
Отправлено ответов: 1278
Активность: 226.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Avl2k
Статус: Опытный
Общий рейтинг: 124.9
[Подробней >>]
Ramzes
Статус: Доверительный
Общий рейтинг: 132.65
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 107.96
[Подробней >>]
 
Jadd
Статус: Профессиональный
Общий рейтинг: 144.02
[Подробней >>]
DiGiT[old]
Статус: Опытный
Общий рейтинг: 109.52
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.18
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
 
xiron
Статус: Начальный
Общий рейтинг: 110.34
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 557. Здравствуйте, уважаемые эксперты! Мне нужна функция вывода строки в лог (это консоль или файл). Я хо... (ответов: 3)
Вопрос № 558. Приветствую вас, эксперты. Как можно опросить клавиатуру (для игры под ДОС), а именно кнопки влево,в... (ответов: 3)
Вопрос № 559. Здравствуйте эксперты. Как сделать чтобы CListBox или CListCtrl сосотял из CheckBox'ов? (используя ... (ответов: 4)

Вопросов: 3, ответов: 10


 Вопрос № 557

Здравствуйте, уважаемые эксперты!
Мне нужна функция вывода строки в лог (это консоль или файл). Я хотел бы,
чтобы функция воспринимала следующие параметры:
void LOG (int color, char *format, ...);
где color - цвет выводимого на экран сообщения (для файла не используется),
format - формат сообщения (аналогично параметру format функции wsprintf) и
... - опциональные переменные, передаваемые в соответствии со строкой format.
Проблема в том, как передать format и ... функции wsprintf, которую я
и хочу использовать, потому что я же не знаю количества параметров в ...,
а разбирать самому format не хотелось бы.
Ответы, если можно на e-mail: bobjohn@newmail.ru
Bob Johnson.



Вопрос отправлен: 01.02.2003, 00:44
Отправитель: Bob Johnson (BobJohn@NewMail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Avl2k

Здравствуйте, Bob Johnson!
В таких случаях используют соответствующую функцию с префиксом v, в данном случае wvsprintf:
void log( int color, const char* format, ... )
{
char buf[1024];
va_list l;
va_start(l, format);
wvsprintf(buf, format, l);
va_end(l);
}
void main()
{
log( 0, "%d of %d", 3, 25 );
}
С уважением, Avl2k.

Ответ отправлен: 03.02.2003, 10:30
Отправитель: Avl2k


Отвечает Ramzes

Доброе время суток, Bob Johnson!
вообще если функция принимает переменное кол-во аргументов, то естъ способ перечислитъ эти аргументы
int sum(int first, ...)
{
int sum = 0, i = first;
va_list start; // список аргументов
va_start(start, first); // инициализируем список
do{
sum+= first;
i = va_arg(start, int); // следующий аргумент
}while( i != -1 );
va_end(start);
}
инфу про va_list, va_start, va_arg и.т.п найдешъ в MSDN
но в данном случае ты наперед должен знатъ типы передаваемых параметров, для макроса va_arg(va_list list, type).
хотя конечно можно и как нибудъ запихнуутъ эти параметры в стек перед вызовом printf, но и в этом случае ты должен знатъ обший размер всех параметров. так что вероятней всего тее придется разбиратъ строку format.

Ответ отправлен: 01.02.2003, 12:29
Отправитель: Ramzes


Отвечает vitya

Приветствую Вас, Bob Johnson!
вот примерный код
void __cdecl ColorOutMessage(COLORREF color, LPCSTR lpszFormat, ...)
{
//Format string
va_list args;
va_start(args, lpszFormat);
int nBuf;
//если тебе нужен больший буфер - увеличь его здесь
//если тебе нужен точный размер буфера, то используй
// МФЦ - шный код для класса CString::Format()
TCHAR szBuffer[512];
nBuf = _vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(szBuffer[0]), lpszFormat, args);
va_end(args);
if (nBuf < 0)
return;
}


Ответ отправлен: 03.02.2003, 09:03
Отправитель: vitya


 Вопрос № 558

Приветствую вас, эксперты.
Как можно опросить клавиатуру (для игры под ДОС),
а именно кнопки влево,вправо,вверх,вниз,пробел.



Вопрос отправлен: 01.02.2003, 12:10
Отправитель: Rustem

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Приветствую Вас, Rustem!
попробуйте getch(), она возвращает код нажартой клавиши.
Но у нее естъ недостаток- она не возвращает управление пока не будет нажата какая-либо клавиша.

Ответ отправлен: 01.02.2003, 12:43
Отправитель: Ramzes


Отвечает Jadd

Здравствуйте, Rustem!
Для этого есть несколько способов. Один из них - через функцию bioskey
#include
int bioskey(int cmd)
Обращается в зависимости от значения cmd к функциям AH=00-02H прерывания 16Н. Возвращаемое функцией значение повторяет значение регистра АХ при выходе из прерывания.

Ответ отправлен: 01.02.2003, 20:02
Отправитель: Jadd


Отвечает DiGiT[old]

Добрый день, Rustem!
прерывание int 0x16 Ф-ция 01

Ответ отправлен: 03.02.2003, 03:02
Отправитель: DiGiT[old]


 Вопрос № 559

Здравствуйте эксперты.
Как сделать чтобы CListBox или CListCtrl сосотял из CheckBox'ов?
(используя MFC)
Заранее благодарен.



Вопрос отправлен: 01.02.2003, 14:21
Отправитель: KydesNik (brothers@atnet.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Здравствуйте, KydesNik!
CListCtrl::SetExtendedStyle(DWORD dwNewStyle)
DWORD dwstyle="listCtrl.GetExtendedStyle();"
dwStyle|= LVS_EX_CHECKBOXES;
listCtrl.SetExtendedStyle(dwStyle);
Просто, не правда ли ????

Ответ отправлен: 01.02.2003, 14:34
Отправитель: Ramzes


Отвечает Gibbel

Приветствую Вас, KydesNik!
Вот тебе несколько ссылочек:
A Multi-Level CCheckListbox
Multi-Column Checked List Box
A multi-check ListBox


Ответ отправлен: 01.02.2003, 14:44
Отправитель: Gibbel


Отвечает DiGiT[old]

Доброе время суток, KydesNik!
Если честно то там есть такой элемент как лист бох + check box в одном. Не помню как называется. Поищи в MSDN(его нет щас под рукой) и быстро найдешь. А как в CListCtrl их добавить, если честно не нашел.Остается один вариант самому их туда лепить :((

Ответ отправлен: 03.02.2003, 03:00
Отправитель: DiGiT[old]


Отвечает xiron

Добрый день, KydesNik!
Очень просто!
pmyListCtrl->SetExtendedStyle(
pmyListCtrl->GetExtendedStyle() | LVS_EX_CHECKBOXES);

Ответ отправлен: 04.02.2003, 15:52
Отправитель: xiron



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (28)
Perl (7)
Delphi (18)
Pascal (24)
Basic / VBA (12)
Java / JavaScript (12)
PHP (8)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (29)
"Железо" (31)
Поиск информации (18)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (13)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное