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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 330
от 20.02.2006, 08:03

Администратор:Калашников О.А.
В рассылке:Подписчиков: 258, Экспертов: 48
В номере:Вопросов: 5, Ответов: 11


Вопрос № 35386: VC MFC По продвижению к решении одной задачи столкнулся с несколькими другими. 1) С помощью какого вида лучше всего отображать папки и файлы аля проводник ? И где можно почитать про это, мне с трудом верится, что для этого надо вручную просчи...
Вопрос № 35408: Здравствуйте уважаемые эксперты. Я изучаю С++ по книге Стефана Р.Дэвиса "С++ для чайников." Во всех листингах основная процедура main, представленна так: int main(int nNumberofArgs, char* pszArgs[]). Что за аргументы в скобках ...
Вопрос № 35437: Здравствуйте, эксперты! Как программно передвинуть курсор в CEdit (VC++ MFC)? Никак не датумкаю как перегрузить OnMouseActivate так чтобы курсор бы появлялся не в месте куда тыкнули а вначале едита (эдит не пустой естественно)... :(...
Вопрос № 35450: Доброго времени суток уважаемые эксперты! Недавно попалась мне давольно таки интересная (по крайней мере для меня) задача. Да вот все никак решить не могу! Или я на столько туп или просто думаю не в том направлении! Подскажите пожалуйста если н...
Вопрос № 35455: Добрый день. Работаю на С++ Builder. Формирую отчет в Excel. Встасить данные могу, остальные элименты форматирования знаю. Может кто подсказать как програмно можно удалить строку? Использую OLE функции. Еще вопрос. Как можно с...

Вопрос № 35.386
VC MFC
По продвижению к решении одной задачи столкнулся с несколькими другими.
1) С помощью какого вида лучше всего отображать папки и файлы аля проводник ? И где можно почитать про это, мне с трудом верится, что для этого надо вручную просчитывать координаты и рисовать значки и названия папок/файлов.
2) Как вы думаете, в чем может быть проблема. Я вставляю в OnDraw вида функцию textout() и только в классе наследуемом от СView она работает. В остальных случиях (с другими классами) она даже не вызывается. Ставил брейкпоинт, функцию OnDraw просто не запускает. Пробовал принудительно по нажатию на кнопку UpdateAllViews() вызывать из класса документа - никого эффекта.
Отправлен: 14.02.2006, 08:57
Вопрос задал: RedDevil (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, RedDevil!
1)Не надо ничего самому писать. Есть CListView
2)Код в студию. Возможно в этот класс просто не приходит сообщение WM_PAINT.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 14.02.2006, 09:04
Оценка за ответ: 5
Комментарий оценки:
1) Уф, целых 20 минут потратил на скачку примера с ListView, то ссылка битая, то прав нет, то еще что-нибудь.
Уже где более половины разобрал.
2) А ну и черт с ним. Этот textout() мне больше нафиг не нужен. Потом разбирусь, сейчас не он главное.

Отвечает: Raptor1
Здравствуйте, RedDevil!
К вопросу 2:
А какие классы вы пытались использовать вместо CView? Возможно поможет рисование в OnPaint, а UpdateAllViews() вызывает в классах представления событие OnUpdate которое можно добавить через ClassWizard, как вы его обрабатываете?
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 14.02.2006, 23:29
Оценка за ответ: 5
Комментарий оценки:
Нет не его. Я когда класс CxImage использовал в onDraw все писал как картики выводить, хотел попробовать в других классах отличных от CView и почему-то не пошло.
Кроме CView пытался CListView, CTreeView, CFormView.

Самое главное исходник про работу с List и Tree у меня уже есть, остальное все мелочи жизни.


Вопрос № 35.408
Здравствуйте уважаемые эксперты. Я изучаю С++ по книге Стефана Р.Дэвиса
"С++ для чайников." Во всех листингах основная процедура main, представленна
так: int main(int nNumberofArgs, char* pszArgs[]). Что за аргументы в
скобках объясняется весьма туманно. Я попробовал так: int main(). Все
компилируется и работает. Вопрос - зачем автор усложняет текст программ
и что это за Args'ы такие?
Отправлен: 14.02.2006, 13:58
Вопрос задал: Gogenot (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Straight
Здравствуйте, Gogenot!
Это количество переданных аргуметов в командной строке и массив самих аргументов.
Ответ отправил: Straight (статус: 8-ой класс)
Отправлен: 14.02.2006, 14:02
Оценка за ответ: 4

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Gogenot!
Подробное освещение вашего вопроса вы можете просмотреть по адресу http://inf.1september.ru/2000/6/C/9.htm, подраздел 9.2. Параметры командной строки

Успехов!!!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 14.02.2006, 14:40
Оценка за ответ: 4
Комментарий оценки:
Благодорю за ссылочку.

Отвечает: Jadd
Здравствуйте, Gogenot!
Ничего он не усложняет. Просто в программу можно передавать аргументы коммандной строки. Это еще с юникса тянется. Первый аргумент показывает их количество, а второй - массив этих аргументов, где под индексом 0 стоит название самого экзешника. int main() работает, все верно. Да и так будет работать void main(void). Разница в том, что в вашем варианте вы вернете целое значение и не собираетесь работать с аргументами коммандной строки, а в моем варианте я ничего не возвращаю, не планирую юзать аргументы коммандной строки и, что не маловажно, стек для этих аргументов не резервируется.

Во так вот. Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 14.02.2006, 14:50
Оценка за ответ: 4
Комментарий оценки:
Спасибо.

Отвечает: koshi
Здравствуйте, Gogenot!
Это называется параметры коммандной строки. Пусть твой бинарник - proga.exe. Ты можешь запуская программу указывать параметры, которые хочешь передать программе, т.е. какую-то инфо. Например если прога должна работать с каким то файлом, то в качестве параметра коммандной строки можно передать имя файла:
1.)proga.exe "c:Program Filesla-blala.txt" если файл неходится где-то
2.)proga.exe bla.txt если файл находится там же, где и бинарник.
При этом параметр сохраняется где то там в памяти, а указатель на этот параметр в памяти сохраняется в массиве pszArgs. При этом надо учитывать что само имя программы также сохраняется.
Т.о. в рассмотренном мною случае (вариант 2.)) nNumberofArgs = 2, pszArgs[0] = proga.exe, pszArgs[1] = bla.txt. - таким обр-ом можешь работать с этими праметрами из своей программы.

---------
Don't worry by groovy
Ответ отправил: koshi (статус: 3-ий класс)
Отправлен: 14.02.2006, 15:45
Оценка за ответ: 5
Комментарий оценки:
Благодорю.

Отвечает: Tundravarg
Здравствуйте, Gogenot!
Примеры запуска консольных команд:
cp file1 file2
cd /home/user
Здась file1 и file2 в команде cp являются аргументами, аргументом является и /home/user в команде cd.
Для организации приёма и обработки тах аргументов (параметров) используются аргументы в функции main. Превый аргумент - количество параметров, второй - массив строк, представляющих собой эти параметры. Обратите внимание на то, что имя программы тоже входит в число аргументов.
Так для примера cp количество параметров будет равно 3 ("cp", "file1", "file2"), а для cd - 2 ("cd" и "/home/user").
Ответ отправил: Tundravarg (статус: 1-ый класс)
Отправлен: 15.02.2006, 03:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Вопрос № 35.437
Здравствуйте, эксперты!

Как программно передвинуть курсор в CEdit (VC++ MFC)? Никак не датумкаю как перегрузить OnMouseActivate так чтобы курсор бы появлялся не в месте куда тыкнули а вначале едита (эдит не пустой естественно)... :(
Отправлен: 14.02.2006, 21:14
Вопрос задал: Zitz (статус: 6-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Raptor1
Здравствуйте, Zitz!
Стандартный для CWnd SetCaretPos должен вам помочь, а обрабатывать можно событие получения фокуса.
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 14.02.2006, 23:24


Вопрос № 35.450
Доброго времени суток уважаемые эксперты!
Недавно попалась мне давольно таки интересная (по крайней мере для меня) задача. Да вот все никак решить не могу! Или я на столько туп или просто думаю не в том направлении! Подскажите пожалуйста если не сложно алгоритм решения данной задачи!

В турнире учавствует четное число команд (с номерами от 1 и до n), в каждом туре проигравшая команда из пары выбывает (причем пары складываются следующим образом, сначала 1 и 2 команда - это первая пара, 3 и 4 - 2 пара и т.д.). Определить, могла ли команда с номером x встретиться с командой с номером y в туре с номером z!
Отправлен: 15.02.2006, 01:30
Вопрос задал: Twist (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PROD
Здравствуйте, Twist!
по идее определить в каком туре команда можно с помощью:
(x+1)/2=z (здесь целочисленное деление, по правилам Си)
то есть команда №3 будет в туре (3+1)/2=2, а №4 - (4+1)/2=2
короче копай в эту сторону
Ответ отправил: PROD (статус: 3-ий класс)
Отправлен: 15.02.2006, 08:04

Отвечает: Zitz
Здравствуйте, Twist!

Задача матиматическая, в матиматике не селен, но как вариант могу предложить решить данную задачу через множества (первое что пришло на ум), вот примерная схема турнира:

1-
|- (1,2) -
2- |
|- (1,2,3,4)-
3- | |
|- (3,4) - |
4- |
|- (1,2,3,4,5,6,7,8)
5- |
|- (5,6) - |
6- | |
|- (5,6,7,8)-
7- |
|- (7,8) -
8-

Т.е. в каждом туре сливаются множества, если обе команды в него входят, то и теоретически они могут встретиться. Т.е. на данной схеме во втором туре команды 2 и 4 могут встретиться, а 2 и 5 нет, т.к. в разных множествах... Т.е. на бумажке все сходиться, осталась реализация ;)
---------
Успех неизбежен
Ответ отправил: Zitz (статус: 6-ой класс)
Отправлен: 15.02.2006, 14:06


Вопрос № 35.455
Добрый день.
Работаю на С++ Builder.
Формирую отчет в Excel.
Встасить данные могу, остальные элименты форматирования знаю. Может кто подсказать как програмно можно удалить строку?
Использую OLE функции.
Еще вопрос.
Как можно сформировать письмо в Outlook(Outlook не открывать), Внести данные отправителя, получателя, текст письма и прикрипить файлы. Потом это все отправить.
Спасибо всем за ответ.
Отправлен: 15.02.2006, 06:54
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лучников Юрий Владимирович
Здравствуйте, AllexZ!

Отвечу на 2-ю часть вопроса:
Тут у вас есть 2 пути...
1. Работать на прямую с SMTP сервером
2. Использовать готовый компонент TNMSMTP на вкладке FastNet.
Этот компонент предоставляет все вышеперечисленные возможности.

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 15.02.2006, 16:03
Оценка за ответ: 5
Комментарий оценки:
Можно получить более подробноее описание данного компонента, у меня хелпы не работают.
Заранее спасибо.


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.14 (бета) от 09.02.2006
Яндекс Rambler's Top100

В избранное