Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свойства у окон "кустомдроу", и "дроуайтем" у Ctrl, Зачем жто нужно, и как этим пользоваться 
V
    Опции темы
Rapalex
Дата 7.9.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Я не прошу за меня прогу писать, просто обясните по человечески, как оно работает, что на что влияет, зачем это придумали (ну я догадываюсь smile ), и как этим пользоваться.

А то ни в одной книге нормально не расписано.

Спасибо.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Earnest
Дата 8.9.2006, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



OwnerDraw - это когда ты сам все рисуешь, на чистом листе.
CustomDraw - ты вмешиваешься в процесс рисования выборочно: фон или цвет текста поменять, бантик пририсовать. CustomDraw  применимо только к Common Controls. OwnerDraw - практически ко всем. Первое проще (менее трудоемко, второе - гибче и универсальнее). Выбор, как всегда, определяется задачей. 
CustomDraw вполне хорошо описано в MSDN, оно только выглядит устрашающе, со всеми своими кодами и ответами, а не деле все просто.


--------------------
...
PM   Вверх
Rapalex
Дата 8.9.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Спасибо. Исчерпывающе.
А задачя следующая: создать комбобокс в котором будут отрисовываться все типы пера (как примеры). Вот я подумал самому создать такой список, вот только ещё не знаю какой цвет пера выбрать, так чтоб он от теммы (настроек) зависел!


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Rapalex
Дата 8.9.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Где кустом дроу и оунер дроу различаются (физически)?


Это сообщение отредактировал(а) Rapalex - 8.9.2006, 13:47


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
Earnest
Дата 8.9.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Комбобокс CustomDraw не поддерживает, поэтому выбора нет.
Цитата(Rapalex @  8.9.2006,  11:24 Найти цитируемый пост)
Где кустом дроу и оунер дроу различаются (физически)?

Это совершенно разные вещи.


--------------------
...
PM   Вверх
Rapalex
Дата 8.9.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Цитата(Earnest @  8.9.2006,  06:59 Найти цитируемый пост)
OwnerDraw - это когда ты сам все рисуешь, на чистом листе.

Тогда в какой функции рисовать надо?

Добавлено @ 16:32 
Цитата(Earnest @  8.9.2006,  15:51 Найти цитируемый пост)
Комбобокс CustomDraw не поддерживает, поэтому выбора нет.

Я перегрузил DrawItem - это разае не оно?
И кстати работат не очень.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
0x07L
Дата 8.9.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Earnest
Дата 11.9.2006, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(0x07L @  8.9.2006,  23:02 Найти цитируемый пост)
custom-draw складывается из уведомления NM_CUSTOMDRAW и позволяет тебе рисовать то, что тебе нужно, а остальное оставить как есть, манипулируя кодами возврата. Только голову сломаешь, пока в этих кодах возврата разберешься.

Ну прямо-таки сломаешь smile
Только на первый взгляд выглядит устрашающе. Логика простая и из примеров вполне познаваемая.
Вообще, хорошая штука. Но, к сожалению, не ко всем контролам применимая. Скажем, для комбобокса только один вариант - OWNERDRAW. 


--------------------
...
PM   Вверх
Rapalex
Дата 11.9.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Понятно.

Спасибо...


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.