![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Читаю MSDN и никак немогу врубиться как это сделать. Что нужно делать, перехватив сообщение WM_NOTIFY?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
||||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
korian, Я как раз читаю это и много чего другого, но разобраться пока немогу. Я так понимаю, что никак не изменишь цвет или фон ячейки просто изменив соотв. значения в передаваемых структурах в обработчик WM_NOTIFY? Т.е. выходит, что изменятся только локальные параметры обработчика. Может отослать WM_NOTIFY в нужный момент с обновленными структурами в качестве параметров? Иного выхода пока невижу.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
http://msdn2.microsoft.com/en-us/library/b...817(VS.85).aspx
пример изменения шрифта и его clrTextBk и clrText HDC есть, так что, менять можно все, что можно менять для HDC. некоторые операции делаются просто (как с шрифтом - установка нового шрифта, и return CDRF_NEWFONT) а другие изменения делаем при PREPAINT и возвращаем исходное состояние HDC в POSTPAINT |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
korian, спасибо за наводку. Оказывается, есть технология Custom Draw. Сейчас почитаю про нее в своей MSDN.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| S.A.G. |
|
||||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Проблема, однако, не решена. Вот пример из MSDN:
Что делает функция GetFontForSubItem()? Кстати, в MSDN ее ненайти. И негде в студии ее тоже нет, гы гы гы. Вот она - забота о разработчиках от MS. Ладно, книжики есть корявые, но такого я не ожидал. Везде в примерах не рабочие коды, а постоянные сокращения. И еще на английском языке. Особенно любопытны ее параметры: 1. dwItemSpec - The item number. What is contained in this member will depend on the type of control that is sending the notification. See the NM_CUSTOMDRAW notification reference for the specific control to determine what, if anything, is contained in this member. 2. lItemlParam - Application-defined item data 3. iSubItem - в nmc вообще нету такого элемента. Ну просто сказка - как же в этом разобраться? Впрочем, понятно, что предпринимается попытка загрузить в контекст контрола необходимый цвет, шрифт и фон. Хотя рекомендуют они делать так(что тоже неработает):
Предлагают пользоваться вторым вариантом, а в примере криво показали второй. А - ну да, цвет и фон просто записывают в локальные параметры, а шрифт заносят в контекст. Это сообщение отредактировал(а) S.A.G. - 30.3.2008, 17:43 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
||||
|
|||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
GetFontForSubItem - это Application Defined функция =)
короче ее вы должны написать сами... она должна возвращает нужный шрифт в зависимости от того, какая ячейка в данный момент рисуется. все ее параметры описывают ячейку. Добавлено через 2 минуты и 1 секунду
в цитате ясно сказано "except for the list view and tree view". Это сообщение отредактировал(а) korian - 30.3.2008, 17:35 |
|||
|
||||
| S.A.G. |
|
||||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Вот код моего обработчика:
Он компилируется. Где ошибка? Цель - все итемы должны быть красными. Если выходит не то, то что? Разъясните, пожалуйста. Добавлено @ 17:39 Кстати, по поводу
Просто place??? - я сделал просто place в локальный параметр, но что дальше? - Система помимо return еще проверяет, что я записал в локальный параметр обработчика??? Добавлено @ 17:47 Ага, ну так я же "place", а оно неработает. Это сообщение отредактировал(а) S.A.G. - 30.3.2008, 17:55 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
||||
|
|||||
| korian |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
параметр не локальный, вы получаете ссылку на него от куда-то, а точнее из функции-рисовальщика ячейки.
вроде так |
||||
|
|||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Ну так вы же не поменяли ничего? Просто закомментировали объявление hdc?
Добавлено через 1 минуту и 40 секунд
Это прояснили, но все по прежнему неработает. -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
||||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Я после того как написал предыдущее сообщение (незная о вашей замене) сделал так и не заработало. И раньше делал - не зарабатывало. Чушь какая-то.. Добавлено через 11 минут и 16 секунд Может еще у кого-нибудь появяться какие-нибудь мысли? -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
код написанный выше - рабочий код, если DlgOnNotify вызывается при WM_NOTIFY парента, а hWndLV1 - HWND ListView там правда хз, нафига такое написано: NMLVCUSTOMDRAW * lpNMCustomDraw = lpNMCustomDraw = (NMLVCUSTOMDRAW *)pnmh; но оно все равно работает. как конкретно оно у вас не работает? и давайте тогда уж побольше кода... |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Я сейчас на свежую голову еще раз попытаюсь во всем разобраться, если неполучиться, то тогда выложу весь код.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Оно почему-то не переходит на кейс CDDS_ITEMPREPAINT. Ставлю брейк - запускается сразу окошко -> программа и не доходит до изменения цвета для каждого итем-а. Почитал ОЧЕНЬ вдумчиво документацию в MSDN про Custom Draw. Оно должно, поидее, и все subitem-ы рисовать красным, но у меня попрежнему все черное. Может я неправильно описал стиль диалога (у меня прога на основе диалога). Вот описание:
У меня два List-а. Первый тот что hWndLV1 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |