![]() |
|
|
![]()
|
|
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Я не прошу за меня прогу писать, просто обясните по человечески, как оно работает, что на что влияет, зачем это придумали (ну я догадываюсь
А то ни в одной книге нормально не расписано. Спасибо. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
OwnerDraw - это когда ты сам все рисуешь, на чистом листе.
CustomDraw - ты вмешиваешься в процесс рисования выборочно: фон или цвет текста поменять, бантик пририсовать. CustomDraw применимо только к Common Controls. OwnerDraw - практически ко всем. Первое проще (менее трудоемко, второе - гибче и универсальнее). Выбор, как всегда, определяется задачей. CustomDraw вполне хорошо описано в MSDN, оно только выглядит устрашающе, со всеми своими кодами и ответами, а не деле все просто. -------------------- ... |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Спасибо. Исчерпывающе.
А задачя следующая: создать комбобокс в котором будут отрисовываться все типы пера (как примеры). Вот я подумал самому создать такой список, вот только ещё не знаю какой цвет пера выбрать, так чтоб он от теммы (настроек) зависел! -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Где кустом дроу и оунер дроу различаются (физически)?
Это сообщение отредактировал(а) Rapalex - 8.9.2006, 13:47 -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Комбобокс CustomDraw не поддерживает, поэтому выбора нет.
Это совершенно разные вещи. -------------------- ... |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Тогда в какой функции рисовать надо? Добавлено @ 16:32 Я перегрузил DrawItem - это разае не оно? И кстати работат не очень. -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
| 0x07L |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 1 Всего: 5 |
Нет, DrawItem - это как раз owner-draw. Цитата из MSDN по этому поводу:
CComboBox::DrawItem Called by the framework when a visual aspect of an owner-draw combo box changes. К случаю. В WinAPI owner-draw складывается из сообщений WM_DRAWITEM и WM_MEASUREITEM. Чтобы получать эти сообщения, твой элемент управления должен иметь стиль наподобие ...OWNERDRAW[{FIXED, VARIABLE}] (например, LVS_OWNERDRAWFIXED). Но за это ты платишь тем, что за тебя вообще ничего не рисуют. custom-draw складывается из уведомления NM_CUSTOMDRAW и позволяет тебе рисовать то, что тебе нужно, а остальное оставить как есть, манипулируя кодами возврата. Только голову сломаешь, пока в этих кодах возврата разберешься. В MFC твой DrawItem и есть, если так можно выразиться, WM_DRAWITEM. Это сообщение отредактировал(а) 0x07L - 8.9.2006, 22:07 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ну прямо-таки сломаешь Только на первый взгляд выглядит устрашающе. Логика простая и из примеров вполне познаваемая. Вообще, хорошая штука. Но, к сожалению, не ко всем контролам применимая. Скажем, для комбобокса только один вариант - OWNERDRAW. -------------------- ... |
|||
|
||||
| Rapalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 732 Регистрация: 20.1.2006 Где: Украина -> Ник олаев Репутация: 6 Всего: 8 |
Понятно.
Спасибо... -------------------- In vitium ducit culpae fuga. Желание избежать ошибки вовлекает в другую. (Horatius) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |