Форум программистов, компьютерный форум CyberForum.ru

Как работает функция DrawItem? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужен ли будет MFC, если Microsoft скоро выпускает технологию .NET? http://www.cyberforum.ru/cpp-beginners/thread465078.html
..
C++ Работа с SMTP сервером qmail Никак не могу побороть трабл при отправке письма через СМТП сервер, где стоит qmail: при выполнении примерно такого кода ArchiveWrite('DATA '); RETURN_ERROR(ArchiveFlush()); RETURN_ERROR(WaitForText('354')); ... ... ArchiveWrite(szMessage); http://www.cyberforum.ru/cpp-beginners/thread465077.html
C++ какое сообщение для ComboBox-а обрабатывать?
Здравствуйте. У меня есть диалоговое окно и в нем ComboBox. При выборе одного из элементов этого ComboBox-а мне необходимо автоматически изменять содержимое EditBox-а на этой-же форме. Вопрос в том, какое сообщение для ComboBox-а обрабатывать. Я перепробовал все, однако эти сообщения приходят до того как данные ComboBox-а обновятся, а мне надо как-раз сразу после обновления. Заранее благодарен.
Как пользоваться элементами управления нового стиля XP? C++
Доброго всем времени суток! Господа, как пользоваться элементами управления нового стиля XP (в частности кнопками)? Т.е. поместил я кнопку на диалог или создал ее Create'ом, как заставить ее отображаться подобно родным XP-ешным кнопкам? Снорк
Visual C++ Помогите ответить на экзаменационные вопросы по MFC http://www.cyberforum.ru/cpp-beginners/thread465028.html
1. CDC::m_hAttribDC и CDC::m_hDC. Скажите, в чем отличие? 2. Почему некоторые ф-ции принимают LPCSTR, а не LPSTR? Для чего это необходимо? 3. Почему PreCreateWindow как public, а OnCreate как protected? 4. Для чего нужны EnableDocking(), DockControlBar()? 5. Есть три типа - Dialog, SDI, MDI. В каких случаях лучше гл. окном сделать Dialog, а в каких SDI? 6. Можно ли описать константные...
C++ База данных с помощью MS DataGrid и MS Remote Control 2.0 У меня вопрос, вобщем ситуация такая: Установил MS DataGrid и MS Remote Control 2.0 в DataSource ставлю пользовательский источник ODBC, а в DataGrid->Source ставлю идентификатор MS Remote control. Запускаю, - связи нету. Видимо не работает Remote Control. Захожу в опции Remote Control, смотрю DataSource стоит нет, снова ставлю, перекомпилирую - опять нет!!! Что делать! Такое чувство будто... подробнее

Показать сообщение отдельно
Snork
Сообщений: n/a
06.02.2008, 17:50     Как работает функция DrawItem?
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );

См. описание этой структуры (LPDRAWITEMSTRUCT) в МСДН или поставь селектор (->) в теле этой ф-ции после экземпляра, чтоб просмотреть все члены (поля). Там хранится описание, какой объект рисуется (константы ODT_), его номер и всякая полезная инфа. Ошибка с Ассертом - скорее всего, какой-то элемент на форме имеет свойство OwnerDraw. Это значит, что он себя не рисует (для убедительности в тело ф-ции отрисовки включили макрос ASSERT), рисовать его должен либо перегруженный метод дериватива, либо родитель. Я предпочитаю последний вариант. Тогда делать надо так:

1)На окно ложить элемент управления, присваивать ему стиль OwnerDraw.
2)Использовать (если надо) СТАНДАРТНЫЙ, MFC-шный класс переменной. (Мы ведь используем вариант с родителем, а не деривативный).
3)В классе окна-родителя отследить сообщения WM_MEASUREITEM, WM_DRAWITEM и (если надо) WM_COMPAREITEM.
4)В методах On...() провести соответственно установку размера, отрисовку и сравнение итемов.

А вся эта фигня нужна, если имеется надобность сделать какой-нибудь хитрый листбокс или там кнопарик (но лучше накопать нужный класс, соответственно и отрисовка и т.п. будет делаться этим деривативом, а в родителе делать ничего не надо).

Хочу порекомендовать вот что. Взять UltimateToolbox и копаться у него в сырцах. Лучший учебник по MFC. Круглински (царство ему небесное) сотоварищи отдыхают. Там много всего сделано через этот метод.
 
Текущее время: 04:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru