Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Command [кнопка]: Важный вопрос / 12 сообщений из 12, страница 1 из 1
10.11.2007, 11:45
    #34929772
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
Здраствуйте.
В некоторых кнопках для выбора цвета,как например в MSWord,поверх кнопок рисуются цветные прямоугольники.
Я думаю что они выводятся на hDC через WinAPI функции (SetDIBitsToDevice например).
При использовании стиля "Graphical" у кнопки пропадает стиль...

Как правильно реализовать данную задачу?
Если можно то дайте исходник (на любом языке).
Заранее спасибо.
...
Рейтинг: 0 / 0
10.11.2007, 17:08
    #34930078
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
P.R.O.M.A.R.K,
для этого можно применить приём под названием subclassing, и перекрыть процедуру перерисовки окна кнопки. Пример в приложенном файле.

Прим.: не стОит жать кнопку "Стоп" во время отладки.
...
Рейтинг: 0 / 0
11.11.2007, 06:55
    #34930433
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
Большое спасибо!
Я об этом уже думал,но у меня небольшой опыт в SubClass' инге...
А это реально сделать через SetDIBitsToDevice например ?
...
Рейтинг: 0 / 0
11.11.2007, 07:07
    #34930435
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
БенедиктP.R.O.M.A.R.K,
для этого можно применить приём под названием subclassing, и перекрыть процедуру перерисовки окна кнопки. Пример в приложенном файле.

Прим.: не стОит жать кнопку "Стоп" во время отладки.
Когда я нажимаю на кнопку прямоугольник исчезает, как я это понимаю передается вругое сообщение...
Пожалуйста кинь исправленный исходник, где этот прямоугольник не исчезает при клике
и др.сообщениях...

Заранее спасибо.
...
Рейтинг: 0 / 0
11.11.2007, 11:13
    #34930495
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
P.R.O.M.A.R.KА это реально сделать через SetDIBitsToDevice например ?Можно использовать любые функции GDI. P.R.O.M.A.R.KКогда я нажимаю на кнопку прямоугольник исчезает, как я это понимаю передается вругое сообщение...
Пожалуйста кинь исправленный исходник, где этот прямоугольник не исчезает при клике
и др.сообщениях...У меня перерисовка всегда выполняется правильно, непонятно, что править.
...
Рейтинг: 0 / 0
11.11.2007, 11:39
    #34930508
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
БенедиктУ меня перерисовка всегда выполняется правильно, непонятно, что править.
Тогда зачем ты поставил на форму Command2.
Я нажимаю на Command1,зеленый прямоугольник пропадает...
Я нажимаю на Command2 для того что бы фокус пропал,зеленый прямоугольник появляется...
Какое сообщение обрабатывать, что бы прямоугольник рисовался всегда?
...
Рейтинг: 0 / 0
11.11.2007, 11:49
    #34930520
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
P.R.O.M.A.R.K,
Command2 - просто, чтоб была для сравнения. Версия с манифестом, и задействующая Common Controls в приложенном файле.
...
Рейтинг: 0 / 0
11.11.2007, 12:07
    #34930530
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
БенедиктP.R.O.M.A.R.K,
Command2 - просто, чтоб была для сравнения. Версия с манифестом, и задействующая Common Controls в приложенном файле.
Спасибо,работает.
Но, мог бы ты мне объяснить...
Что такое manifest,как его сделать, почему активировались XP стили и почему прямоугольник не исчезает.
Заранее спасибо.
...
Рейтинг: 0 / 0
13.11.2007, 12:01
    #34934724
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
P.R.O.M.A.R.K,
манифест - это XML-файл, говорящий ОС, что данная программа использует визуальные стили. Он может быть отдельным файлом с именем ИмяИсполняемогоФайла.exe.manifest, либо ресурсом, включённым в исполняемый модуль (см. приложенный файл).

Прямоугольник перестал исчезать потому, что стало приходить "лишнее" сообщение WM_PAINT при подключении стилей. Ты был прав, при смене состояния кнопки приходит другое сообщение, теперь это учитывается. См. приложенный файл.
...
Рейтинг: 0 / 0
15.11.2007, 12:16
    #34941499
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
БенедиктP.R.O.M.A.R.K,
манифест - это XML-файл, говорящий ОС, что данная программа использует визуальные стили. Он может быть отдельным файлом с именем ИмяИсполняемогоФайла.exe.manifest, либо ресурсом, включённым в исполняемый модуль (см. приложенный файл).

Прямоугольник перестал исчезать потому, что стало приходить "лишнее" сообщение WM_PAINT при подключении стилей. Ты был прав, при смене состояния кнопки приходит другое сообщение, теперь это учитывается. См. приложенный файл.
Бенедикт,спасибо за объяснения.
Я раньше,всегда,вставлял в ресурс файл XPSTYLE.res и в расделе инициализации прописывал "InitCommonControls".
Скажи стоит ли использовать manifest в shareware программах?
...
Рейтинг: 0 / 0
15.11.2007, 12:16
    #34941502
P.R.O.M.A.R.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
БенедиктP.R.O.M.A.R.K,
манифест - это XML-файл, говорящий ОС, что данная программа использует визуальные стили. Он может быть отдельным файлом с именем ИмяИсполняемогоФайла.exe.manifest, либо ресурсом, включённым в исполняемый модуль (см. приложенный файл).

Прямоугольник перестал исчезать потому, что стало приходить "лишнее" сообщение WM_PAINT при подключении стилей. Ты был прав, при смене состояния кнопки приходит другое сообщение, теперь это учитывается. См. приложенный файл.
...
Рейтинг: 0 / 0
15.11.2007, 14:29
    #34942191
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Command [кнопка]: Важный вопрос
P.R.O.M.A.R.K,
пожалуйста.
А что мешает? MS препятствий не чинит. Описание и текст манифеста есть в MSDN Library - используй на здоровье.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Command [кнопка]: Важный вопрос / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]