![]() |
|
|
![]()
|
|
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Вот я смотрел на codeproject примеры. И там приходит сообщение OnPaint и оно обрабатывается. Я создал свой CMyProgressBar , написал OnPaint? Но туда он не доходит. Думал, что есть что-то вроде BS_OWNERDRAW, но ничего такого не нашел. Что делать?
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А ты обработчик OnPaint правильно подключил? Примеры чего ты смотрел на codeproject?
-------------------- ... |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Прошу прощения, была моя ошибка. Но тут другой вопрос:
вот если я буду отрисовывать собственную кнопку и в DrawItem ничего не напишу, то кнопку попросту не будет видно (это очевидно) А вот если то же самое сделать с CProgressCtrl, то остается его обрамление (прямоугольник), даже если убрать стиль border. мне он не нужен, так я хочу сделать свой (слегка закругленный прямоугольник) Как тут быть? |
|||
|
||||
| AndreySol |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Объяви в хедере
Затем в обработчике OnSize(.....)
|
||||
|
|||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Сообщение не приходит. Пишу в карте ON_WM_SIZE() и ее прототип afx_msg void OnSize(UINT nType, int xz, int cy);
что-то опять напутал? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Рамка обычно рисуется на WM_NCPAINT. Попробуй перехватить это сообщение и оставить пустым.
-------------------- ... |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
BOOL CWindPgrsBar::PreTranslateMessage(MSG* pMsg)
{ if(pMsg->message == WM_NCPAINT) { return FALSE; } return CProgressCtrl::PreTranslateMessage(pMsg); } но до return FALSE; никогда не доходит. добавил wizzzard'ом обработчик OnCommand(), но при щелчке мыши на элементе в этото OnCommand не заходит. Что у меня не так? Что-то забыл? Просто у меня есть еще собственная кнопка т там все сообщения приходят. |
|||
|
||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
И еще , после совета AndreySol рамка пропала, но не вся. Сверху буквально выглядывает ее маленький кусрчек (точнее линия от нее)
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
WM_NCPAINT бесполезно ловить через PreTranslateMessage: это сообщение посылается непосредственно окну, а не помещается в очередь.
Нужно написать свой обработчик: afx_msg void OnNcPaint() и добавить в карту сообщений: ON_NCPAINT(). Добавлено @ 07:22 Т.е. ON_WM_NCPAINT(), конечно. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |