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

Инвестиции: Вопрос-Ответ

  Все выпуски  

C/C++ Вопрос-Ответ Выпуск № 28


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

C/C++ Вопрос-Ответ

Выпуск      : 28
Подписчиков : 2178
Cайт        : SoftMaker.com.ru
Архив       : C/C++ Вопрос-Ответ (архив)
В этом выпуске
От ведущего

Здравствуйте уважаемые подписчики !

Как всегда, рад приветствовть вас на страницах этой рассылки.
Напоминаю, что, как обычно, вы можете отправить свои пожелания (замечания, предложения, сообщения об ошибках) по поводу рассылки и сайта по этому адресу.

Если вы хотите создать и вести какой либо раздел в этой рассылке - также пишите мне.

И, как всегда, вы можете задать свои вопросы по программированию на сайте в форуме.
Или обсудить их в дискуссионном листе "Программирование. форум !!!".

Многим может быть также интересна рассылка: Visual С++ - расширенное программирование, где можно прочитать описания нестандартных приемов программирования с помощъю библиотеки MFC - 'трюков', 'хаков', недокументированных функций.

P.S. Учитывая наступление долгожданного лета (поры каникул и отпусков) и, следовательно, снижения количества вопросов, поступающих в рассылку, до сентября-октября рассылка будет выходить нерегулярно (по мере накопления материала). Очень возможно, что на какое то время рассылка уйдет в отпуск. Но это ненадолго - скоро рассылка возобновит свой выход с прежней периодичностью. И, я надеюсь, материал в ней будет еще более интересным.

К осени планируется создать новый полноценный сайт - качественный контент-проект, посвященный разработке программного обеспечения (как прикладного ПО, так и web-разработке), составной частью которого будет являться также и данная рассылка.

Оставайтесь с нами!

С уважением, Вахтуров Виктор.

Подписчикам

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

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

Небольшое примечание. Господа, если Вы хотите, чтобы Ваш e-mail был опубликован в рассылке, специально и явно укажите это в письме. Иначе e-mail адреса, указанные в теле Вашего письма в рассылке опубликованы не будут.

Вопросы

Для того, чтобы задать свой вопрос, кликните этой ссылке (вопрос будет опубликован в следующем номере).
Вы можете задавать любые вопросы, касающиеся программирования на языке C и C++. Это могут быть вопросы, касающиеся как конструкций языка, применения библиотек классов, шаблонов (таких как MFC или STL), использования компиляторов, так и самой философии программирования на C или C++. Здесь нет ограничений - спрашивайте и получайте ответы.

Вопрос № 107 ( Unknown )

From Unknown

Здравствуйте! Вопрос у меня про сеть.
Примерно с полгода я заинтересовался создавать сетевые приложения, и
все было хорошо, пока мне не понадобилось прослушивать порты для
нахождения серверов. Пишу я на Билдере.

Буду благодарен за ответ.

Ответить на вопрос

Вопрос № 108 ( Alex Lebedz )

Я пишу программу на Visual C++ 6.0. Сталкнулся с таким вопросом: в
программе есть элементы CTree и CView (каждому элементу дерева
(расположены в 4-ех ветвях)соответствует изображение Bitmap).
Необходимо реализовать перетаскивание элементов из CTree в CView.
Зарание спасибо.

Ответить на вопрос

Вопрос № 109 ( Александр Паршин )

Как сделать прогу MDI форму, без MFC (желательно похожей на Фотошоп,
там есть тулбар в режиме Modeless, а не Modal.

Ответить на вопрос

Ответы

Ниже приведены вопросы предыдущего выпуска и ответы на них.

Вопрос № 103 ( dimaz )

Скажите пожалуйста, как увеличить производительность отрисовки GDI, GDI+? При определённом количестве точек в линии она начинает медленно перерисовываться (Например при редактировании координат точки - когда тащишь одну из вершин линии мышью).
Разрабатывается векторный редактор (GDI+). Выяснилось что главный тормоз - алгоритм рисования линий, кривых GDI+.
Или мож кто знает как можно устроить механизм отрисовки оптимально?

Ответ ( Шматко А.А. )

С помощью "умного" перерисовывания. Не нужно перерисовывать целиком всю
клиентскую область окна. Достаточно перерисовать только изменения. Например,
при перемещении точки достаточно перерисовать только две линии (если я
правильно понял, как осуществляется редактирование). Предыдущие их положения
нужно стереть, но возможно при этом останутся следы. Если это неприемлимо,
то предыдущие точки нужно восстановить. Для этого можно хранить битмап
изображения и в фоне (например, в отдельной нити) дорисовывать эти точки.
Если всё по уму рисовать, то "прозводительности" пользователя не хватит,
чтобы снести с катушек фоновую нить перерисовки - она всегда будет успевать.
Например, 3D Studio Relise4 - добрый старый под DOS - именно так и работал
(правда, слегка на перерисовке фона подглючивал), при этом
производительности 386 хватало.
Да! Если опираешься на WM_PAINT при перерисовке, то можно ещё перехватывать
событие WM_ERASEBKGND. Если его отправить в DefWindowProc(), то оно сотрёт
всю клиентскую область, и по любому придётся всё отрисовывать.
Вопрос № 104 ( Diosso )

Люди, как настроить Вижак .NET, чтоб прога не юзала msvcr71d.dll и
прочую муть. Или для этого как то по-особенному надо создавать проект?

Ответ ( Шматко А.А. )

В свойствах проекта:

"General"\\"Use of MFC" не ставить "Use MFC in a Shared DLL"
"General"\\"Use of ATL" не ставить "Dynamic Link to ATL"
"C/C++"\\"Code Generation"\\"Runtime Library" не ставить "Multi-threaded
DLL" или "Multi-threaded Debug DLL"

Ещё где-нибудь (вроде всё перечислил) аналогично проверь, чтоб не было
завязок на динамические варианты библиотек. Должны быть статические. Тогда
всё линкуется прямо в цель (EXE-шник или DLL-ку, смотря, что строишь).

Ответ ( 3V )

Имхо, также как и в 6-м VC - указать в свойствах проекта линковку со статическими версиями библиотек (правда, exe-шник получится большой, т.к. весь движок MFC будет в твоем модуле).
Вопрос № 105 ( Рассылка )

1. Как в Visual C++ сделать кнопки и надписи на них разного цвета.
2. Как с помощью диалогового окна открыть файл и записать
в него по определенному смещению двоичные данные ?
пришлите ответы на zxzx67@bk.ru

Ответ ( 3V )

1. "Кнопки и надписи на них разного цвета".

Обычно для изменения цвета шрифта или фона элементов управления обрабатывают сообщение WM_CTLCOLOR в родительском окне. Но ! С кнопками это не пройдет. Точнее, не пройдет с "нажимаемыми" кнопками (с радиокнопками и чекбоксами можно и через WM_CTLCOLOR). В MSDN написано:

By default, the DefWindowProc function selects the default system colors for the button. Buttons with the BS_PUSHBUTTON, BS_DEFPUSHBUTTON, or BS_PUSHLIKE styles do not use the returned brush. Buttons with these styles are always drawn with the default system colors. Drawing push buttons requires several different brushes-face, highlight and shadow-but the WM_CTLCOLORBTN message allows only one brush to be returned. To provide a custom appearance for push buttons, use an owner-drawn button.

То есть надо устанавливать кнопкам стиль BS_OWNERDRAW и отрисовывать их самому (примеры, кстати, есть в том же MSDN).

2. "Как с помощью диалогового окна открыть файл и записать в него по определенному смещению двоичные данные".

Например, так:

// Данные

BYTE aData[] =
{
   0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 
   0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 
};

LONG nOffset = 0x80; // смещение

CFileDialog dlg(TRUE);

if(dlg.DoModal() == IDOK)
{
   CFile file;

   if(file.Open((LPCTSTR) dlg.GetPathName(),
      CFile::modeWrite | CFile::modeNoTruncate))
   {
      if((unsigned) nOffset < file.GetLength())
      {
         file.Seek(nOffset, CFile::begin);
         file.Write(aData, sizeof(aData));

         AfxMessageBox("OK", MB_OK);
      }
      else
         AfxMessageBox("Недействительное значение смещения",
                       MB_OK | MB_ICONERROR);

      file.Close();
   }
   else
      AfxMessageBox("Не удалось открыть файл",
                    MB_OK | MB_ICONERROR);
}
Вопрос № 106 ( Sergey )

Здравствуйте, уважаемые!

Мне нужен исходник класса регулярных выражений.
Причём не привязанный к реализации какого либо производителя, то есть
без их спец классов/объектов, что бы я мог скомпилировать программу и
в bcb и vc и ещё где захочу. Всем заранее спасибо.

Ответ ( 3V )

Ну... "не привязанный к реализации какого либо производителя" - с этим трудно... В ATL есть шаблонный класс для обработки регулярных выражений: CAtlRegExp называется. Теоретически, можно вытащить его оттуда, сделав свою библиотеку. Но для того, чтобы его оттуда "изьять" придется несколько потрудиться. И он за собой, конечно же, потянет еще несколько классов.

Можно извратиться и использовать для обработки регэкспов движок JavaScript - а, встроенный в Windows. Но это - из пушки по воробьям, хотя и возможно (страница кода примерно требуется для выполнения JavaScript-функции в своем приложении).
Книги по C/C++
Borland C++ Builder 6. Руководство разработчика (+ CD-ROM)
Borland C++ Builder 6. Руководство разработчика (+ CD-ROM)

Автор: Джаррод Холингворт, Боб Сворт, Марк Кэшмэн, Поль Густавсон

Данная книга предназначена для разработчиков программного обеспечения с использованием C++ Builder.

Книга содержит большое количество материала, посвященного новейшим возможностям C++ Builder 6 и адресована в первую очередь пользователям, уже имеющим опыт разработки приложений в среде C++Builder. Данная книга не является учебным пособием по C++ или C++ Builder. Это руководство, которое научит с максимальной эффективностью использовать возможности C++ Builder и сопутствующих технологий, ознакомит с новейшими возможностями C++ Builder 6 и облегчит разработку эффективного программного обеспечения.

Книга снабжена богатым иллюстративным материалом и множеством демонстрационных примеров, облегчающих усвоение материала.

Страница книги на Озоне
Qt 3: программирование GUI на C++
Qt 3: программирование GUI на C++

Автор: Жасмин Бланшет, Марк Саммерфилд

Данная книга является руководством по разработке приложений с графическим пользовательским интерфейсом для платформ MS Windows, Linux, Unix и MacOS средствами Qt 3 компании Trolltech. Qt-программы естественно выглядят на всех поддерживаемых платформах, причем, для их переноса требуется только перекомпиляция. Инструментарий Qt используется такими успешными компаниями как AT&T, NASA, IBM, Xerox, Adobe. Кроме этого свободная версия Qt является основой среды КDЕ.

Авторы книги - ведущие разработчики компании Trolltech последовательно, продвигаясь от простого к сложному, знакомят читателя с принципами и главными особенностями программирования средствами Qt 3. В книге показаны возможности основных классов, подробно описаны технология сигналов и слотов и применение менеджеров компоновки. Большое внимание авторы уделили работе в редакторе визуального проектирования графического пользовательского интерфейса Qt Designer, использованию утилиты Qt Linguist для перевода приложений на различные языки и работе с интерактивной справкой Qt Assistant. Отдельные главы посвящены дополнительным модулям, обеспечивающим работу с графикой, сетью, базами данных, XML-документами. Живой язык и множество наглядных примеров, которыми проиллюстрирован материал, дают читателю прекрасную возможность освоить перспективные технологии программирования.

Страница книги на Озоне
Рассылки и дискуссионные листы компьютерной тематики
Рассылки
Программирование на JavaScript

Все аспекты программирования на JavaScript - нестандартные приемы, ОРИГИНАЛЬНЫЕ скрипты, авторские статьи и наработки. "JavaScript solutions" - в каждом выпуске готовый к применению ИНТЕРЕСНЫЙ скрипт (исходный код с комментариями).

Дискуссионные листы
Программирование. Форум !!!

Самый популярный дискуссионный лист по программированию на subscribe.ru, существующий с момента открытия сервиса дискуссионных листов !

Задайте здесь любой вопрос по программированию - и Вы получите ответ. Участвуйте в оживленных дискуссиях, обсуждайте интересные темы. Давайте ответы сами. Ведь это форум !!! Здесь просто интересно ! Присоединяйтесь !

Вебстроительство. Форум !!!

В дискуссионном листе ведется обсуждение различных аспектов создания сайтов - написание скриптов, использование, настройка портальных движков, и многое другое. Присоединяйтесь !

Поисковые системы. Форум !!!

Этот дискуссионный лист посвящен обсуждению поиковых систем, методов индексации сайтов поисковиками, способам оптимизации сайта под поисковые системы.

Хостинг. Обзоры и обсуждения платного и бесплатного хостинга.

Вы ищете хостинг (платный, бесплатный) ? Хотите спросить совета в выборе ? Можете обсудить это здесь. Поделитесь советом, если знаете. Или узнайте больше. Все о хостинге.


Всего доброго. До встречи в следующем номере.

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cppqa
Отписаться
Вспомнить пароль

В избранное