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

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


Информационный Канал Subscribe.Ru RAX - уникальная статистика и популярность вашего сайта


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

Выпуск № 066
от 26.08.2002, 23:40

Администратор:
Имя: Коробов Н.А.
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 197
Отправлено ответов: 390
Активность: 197.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


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

Dzik
Статус: Опытный
Общий рейтинг: 113.27
URL: Разработка игрушек
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 112.14
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 130.46
URL: Моя страничка
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.64
URL: Пристанище неодинокого программиста
[Подробней >>]
$DeMoN$
Статус: Начальный
Общий рейтинг: 109.75
[Подробней >>]


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

Вопрос № 177. Здравствуйте, эксперты! Подскажите, какой пользоваться функцией для очистки экрана в консольных прил... (ответов: 3)
Вопрос № 178. Доброе время суток уважаемые эксперты! Вопрос у меня такой. Есть программа, которая управляет внешни... (ответов: 2)
Вопрос № 179. Доброе время суток :) Уважаемые эксперты, не могли бы вы мне помочь с печатью на принтер. Начал изуч... (ответов: 2)
Вопрос № 180. Всем доброй ночи (дня), (утра). Подскажите как отловить значение функции ShellExecute и вывести номе... (ответов: 2)
Вопрос № 181. Добрый день (ночь) уважаеные эксперты. Вопрс смешной , но он мучает меня уже неделю(как я начал изуч... (ответов: 2)

Вопросов: 5, ответов: 11


 Вопрос № 177

Здравствуйте, эксперты!
Подскажите, какой пользоваться функцией для очистки экрана в консольных приложениях под ДОС, написанных на Visual C++ 6.0 (а то clrscr из conio.h куда-то убрали)?



Вопрос отправлен: 23.08.2002, 08:35
Отправитель: EraSer (eraser99@tut.by)

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

Отвечает Dzik

Доброе время суток, EraSer!
Функции очистки к сожалению нет.
Используй цикл, в котором выводится 20(вроде) пустых строк.

Ответ отправлен: 23.08.2002, 12:52
Отправитель: Dzik


Отвечает vitya

Доброе время суток, EraSer!
Во первых под дос на VC6++ ты написать не сможешь хоть лопни. Ты пишешь самое, что ни на есть полноценное приложение под виндовс, просто консольное. Во-вторых clrscr() это чисто борландовская функция, которой само собой нет аналога в MSVC. Для того, чтобы очистить экран придется воспользоваться серией функций WriteConsole...(). С их помощью вывди пробелы на весь экран, на этом все будет законченно.


Ответ отправлен: 23.08.2002, 08:44
Отправитель: vitya


Отвечает Pablo

Доброе время суток, EraSer!
Да никуда он вроде не исчезал, а ты посмотри у себя в includeсах может в каком нить и завалялся!))))

Ответ отправлен: 23.08.2002, 18:38
Отправитель: Pablo


 Вопрос № 178

Доброе время суток уважаемые эксперты!
Вопрос у меня такой.
Есть программа, которая управляет внешним устройством. Программа создана в C++ Builder 5.
В программе есть цикл, в котором идёт опрос порта.
Мне необходимо реализовать досрочный выход из цикла, при нажатии какой либо клавиши.
Не могли бы Вы подсказать, есть ли такая API функция, которая позволяла бы это сделать?
С уважением, Рифат.



Вопрос отправлен: 23.08.2002, 10:26
Отправитель: Рифат (abriofh@mail.ru)

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

Отвечает Dzik

Здравствуйте, Рифат!
Используйте функцию GetAsyncKey.

Ответ отправлен: 23.08.2002, 12:59
Отправитель: Dzik


Отвечает Pablo

Добрый день, Рифат!
Ты можешь реализовать это двумя способами:
1. Проверка нажатия клавиши в самом цикле. Это способ вообще говоря является неудачным т.к. действительно может не отобразит нажатую клавишу.
2. Проверка в цикле флага состояния. Этот флаг ты сам определяешь в программе. Устанавливается он в состояние true, когда когда в форму поступает сообщение о нажатой клавише (WM_KEYDOWN и следующий за ним WM_KEYUP) можешь также определить OnKeyPress для формы. Причем заметь, что когда выполняется цикл, то задача не может обрабатывать сообщения от виндов. Следовательно ожидание нажатия клавишь лучше сделать в другой задаче. Т.е. у тебя есть форма, в ней ты производишь ожидание нажатия клавиши, а в начале работы программы ты создаешь еще одну задачу, в которой и производишь чтение из порта. Эту задачу ты можешь объявить как REALTIME_PRIORITY. В Билдере есть класс TThread который имплементирует отдельную задачу. В условиях к нему сказано что в методе Execute, который ты обязан переопределить, тебе нужно проводить каие либо циклические действия, напрммер, для твоего случая чтения из порта, и обязательно проверку переменной Terminated, которая в состоянии true означает, что задача завершена. И при установленной Terminated выходить из задачи.
Вот такое описание.

Ответ отправлен: 23.08.2002, 22:07
Отправитель: Pablo


 Вопрос № 179

Доброе время суток :)
Уважаемые эксперты, не могли бы вы мне помочь с печатью на принтер. Начал изучать эту тему вчера, и понял, что там не все так просто. Мне нужно вывести документ на печать. Диалоговое окно настройки принтера пока не нужно. Напишите, как это сделать? Я имею ввиду алгоритм и функции, на которые нужно посмотреть. В MSDN я не могу разобраться.
Спасибо.



Вопрос отправлен: 23.08.2002, 12:30
Отправитель: GoldenVst (goldenvst@mail.ru)

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

Отвечает Артём Шегеда

Здравствуйте, GoldenVst!

взгляни на это там от Delphi только маленькие следы остались, а так - практически WinAPI. Надеюсь, в Pascal'е не заблудишься.
Если что-то непонятно - задавай вопросы - разберёмся...

Ответ отправлен: 23.08.2002, 13:12
Отправитель: Артём Шегеда


Отвечает vitya

Здравствуйте, GoldenVst!
Создаешь CPrintedDC() а на нем рисуешь, как на экране. Например если надо вывести текст, то делаешь
TextOut(). Вот и все.

Ответ отправлен: 23.08.2002, 12:53
Отправитель: vitya


 Вопрос № 180

Всем доброй ночи (дня), (утра).
Подскажите как отловить значение функции ShellExecute и вывести номер ошибки на экран.
Она возвращает значение void*, а ни сравнить его с чем либо, ни преобразовать не получается.
Спасибо.


Приложение:


Вопрос отправлен: 23.08.2002, 19:56
Отправитель: YAR

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

Отвечает vitya

Добрый день, YAR!
Вот то что возвращает ShellExecute
0 The operating system is out of memory or resources.
ERROR_FILE_NOT_FOUND The specified file was not found.
ERROR_PATH_NOT_FOUND The specified path was not found.
ERROR_BAD_FORMAT The .exe file is invalid (non-Win32® .exe or error in .exe image).
SE_ERR_ACCESSDENIED The operating system denied access to the specified file.
SE_ERR_ASSOCINCOMPLETE The file name association is incomplete or invalid.
SE_ERR_DDEBUSY The DDE transaction could not be completed because other DDE transactions were being processed.
SE_ERR_DDEFAIL The DDE transaction failed.
SE_ERR_DDETIMEOUT The DDE transaction could not be completed because the request timed out.
SE_ERR_DLLNOTFOUND The specified dynamic-link library was not found.
SE_ERR_FNF The specified file was not found.
SE_ERR_NOASSOC There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable.
SE_ERR_OOM There was not enough memory to complete the operation.
SE_ERR_PNF The specified path was not found.
SE_ERR_SHARE A sharing violation occurred.


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


Отвечает Pablo

Добрый день, YAR!
Ты можешь попробовать сразу после вызова ShellExecute получить код ошибки, есди он установлен, с помощью функции GetLastError, я думаю что она должна выдавать и 0, если в процессе выполнения предущей функции не произошло ошибок.

Ответ отправлен: 23.08.2002, 22:07
Отправитель: Pablo


 Вопрос № 181

Добрый день (ночь) уважаеные эксперты.
Вопрс смешной , но он мучает меня уже неделю(как я начал изучать С++).
Как мне скомпилить и выполнить поргу на BorlandС++5
(компилятор BCC32).



Вопрос отправлен: 23.08.2002, 22:02
Отправитель: kRuk

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

Отвечает Dzik

Приветствую Вас, kRuk!
Если из оболочки, то создавай новый проект, под нужную тебе платформу, набивай прогу и CTRL-F9.

Ответ отправлен: 24.08.2002, 09:15
Отправитель: Dzik


Отвечает $DeMoN$

Приветствую Вас, kRuk!
Чтобы скомпилить, из меню Project выбери команду Build all.
Чтобы выполнить, из меню Debug выбери команду Run.

Ответ отправлен: 24.08.2002, 17:30
Отправитель: $DeMoN$



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (40)
C / C++ (28)
Perl (12)
Delphi (16)
Pascal (26)
Basic / VBA (11)
Java / JavaScript (12)
PHP (11)
MySQL / MSSQL (13)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (31)
"Железо" (38)
Поиск информации (18)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (7)
КоАП (5)

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




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

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

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

В избранное