![]() |
|
Модераторы: Alexeis |
![]()
|
|
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Всем доброго времени суток! Подскажите кто знает.. как всётакие добавить картинку на кнопку в WinCE средствами WinApi ???
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Самый простой способ -
Добавлено через 2 минуты и 17 секунд Да, вместо BS_ICON можно использовать BS_BITMAP тогда вместо (WPARAM)IMAGE_ICON пишем (WPARAM)IMAGE_BITMAP -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Пытался уже както так сделать.. всё бы хорошо да сообщения BM_SETIMAGE нету в WinCE.
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Тогда лови WM_DRAWITEM и рисуй на кнопке картинку.
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
если тип контрола не принципиален, то используй STATIC
у него есть и STM_SETIMAGE и уведомление STN_CLICKED -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
а по подробнее можно?
попробую |
||||
|
|||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
При создании кнопки задаешь ей стиль BS_OWNERDRAW
В своем приложении ловишь WM_DRAWITEM Тебе приходит
Но цитировать весь мсдн я не могу, так что смотри и я думаю разберешься. Будут вопросы спрашивай. -------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| Brodyaga |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
GremlinProg, чтото не получается...
Пробовал так:
и так...
Просто нашёл несколько примеров где по разному сделано.. ни так ни так не работает :( |
||||
|
|||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
В handle что-то есть? Он не нулевой?
ПРосто смущает строка (LPCWSTR)IDI_ICON1 Может лучше MAKEINTRESOURCE(ID_ICON1) Добавлено через 48 секунд Вот так не правильно -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
это взял отсюда, где чел утверждает что картинка на кнопку у него таким макаром поставилась..
нет не нулевой
так тоже не пустой и не работает. |
||||||
|
|||||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, а покажите как вы создаете статик?
У него hwnd тоже не нулевой? Его видно вообще? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
просто кидаю на диалог.. Да сам текст статика видно. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Ну так ему-же надо стиль поставить что-бы рисунок отображался
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
да, стиль поставить надо либо SS_BITMAP, либо SS_ICON, либо включить соответствующий эквивалент флага в редакторе ресурсов подробнее по стилям: http://msdn.microsoft.com/en-us/library/aa923260.aspx -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Так спасибо.. и первым и вторым способом получилось... наверное всётаки буду использовать WM_DRAWITEM с кнопкой... Теперь проблема другая.. отобразить то мне нужно именно PNG. А получилось отобразить только BMP. Можно ли вообще както PNG в ресурсы загнать?
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
загнать-то можно, без проблем, а вот рисовать PNG - тут уже варианты разные,
определись сначала чем будешь рисовать -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
ну то что загнать как биты можно это я знаю.. мне какраз то и надо КАК и ЧЕМ рисовать узнать
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
GDI+ можно
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
а ещё чем?
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
http://www.libpng.org/ http://homepage3.nifty.com/ysflight/pngdec...ngdecodere.html http://www.google.com/search?hl=ru&cli...PNG&spell=1 http://www.google.com/search?hl=ru&cli...&lr=lang_ru вариантов разных библиотек не мало -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Много, но зачем? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
очевидно, чтобы всегда был выбор )
есть еще другие варианты OLE, IImgCtx (IE), DirectX, MSO-фильтры, Direct3D: варианты http://forum.vingrad.ru/index.php?showtopi...t&p=1760087 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Но ведь GDI+ проще всего мне кажется. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
смысл множества решений не в том, что проще, а в том, что нужно для конкретной задачи, в конкретном случае если вариантов много, есть из чего выбирать, в том числе - возможность тасовать решения, зависимые от данного -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
GremlinProg, ход мысли понятен.
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
А в CE есть GDI+ ? Отсюда:
Это сообщение отредактировал(а) Brodyaga - 2.6.2009, 13:03 |
||||
|
|||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Нашёл тут кое какие исходники.. Но никак не могу откомпилить :( у когонить получалось?
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, какие ошибки пишет?
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Сначала писал чтото типа
Там в некоторых местах используются log(2) надо поменять на log(2.0) Ладно, исправил... под Win32 скомпилилось. Поменял проект на MIPS(ИЛИ ARM, без разницы) Стал ругаца на
Исправил изменением C/C++->General->DebugInformationFormat=4 поменять на /Zi. Ошибка исправилась. Но это он видать меня дразнил..
и другие... типа ошибки в winnt... вообщем муть какаято! сами не пробовали эти исходники скомпилить? Это сообщение отредактировал(а) Brodyaga - 3.6.2009, 09:02 |
||||||
|
|||||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, а может лучше рисовать иконки на кнопке? Ведь намного проще.
Или тебе именно надо PNG? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Мне надо png на кнопке.. дизайнер нарисовал png. Правда можно его БОЛЕЕ МЕНЕЕ сконвертить в bmp, но хреново получица :( да и потом весь интерфейс походу png-шный будет.. Вообще я решил всётаки разобраца с либпнг.. там хоть длл и либа есть готовые скопилинные.. :( может примерчик использования найдёца? Нашёл вот как на двумерный массив bit разобрать пример. А собрать из этого bmp или иконку какнить можно? Это сообщение отредактировал(а) Brodyaga - 3.6.2009, 10:30 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
можно, только нужно каждую строку выровнить на 2-х байтовой границе (паддинг заполнить нулями), для CE: http://msdn.microsoft.com/en-us/library/ms959923.aspx -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Так это получается у меня будет обычная БМП без прозрачности и т.д.? Тоесть просто нарисуется сконверченная пнг в бмп?
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
ну, тут надо смотреть документацию по твоей библиотеке 32-битный цветовой ключ содержит четыре компоненты: голубой, зеленый, красный + еще одну, которая может использоваться для прозрачности если библиотека заполняет эту компоненту, то прозрачности можно добиться в таком битмапе через AlphaBlend: http://msdn.microsoft.com/en-us/library/aa452850.aspx правда, только с пятой серсии CE Добавлено через 5 минут и 35 секунд но можно и без этого обойтись, по крайней мере для фоновой прозрачности, если знать ключ прозрачности тут принцип простой: создаем монохромный битмап по этому ключу, после чего маскируем исходный битмап по полученной маске, вобщем это уже решалось много раз, источников хватает, если что, думаю проблемы не будет применить это на CE, т.к. вариантов маскирования битмапов достаточно, какой-нибудь да подойдет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
ну ведь в пнг есть и полупрозрачность а в битмапе этого ведь никак не добиться... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
я про битмап и говорю: http://www.rsdn.ru/article/gdi/trsimple.xml Добавлено через 2 минуты и 22 секунды смотри по ссылке реализацию "альфа-канала" -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
А безконвертирования растров можно шденить получить растр подготовленный для выхода? могут ли какието программи в него сконвертить из пнг ? |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Можно пнг сконвертировать в иконку и рисовать иконки. Или обязательно нужны именно пнг? -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Не обязательно.. просто есть только пнг... но и сконвертить НОРМАЛЬНО в ико не получается... какието кваратики на пустом месте появляются... а иконки(*.ико) бывают с полупрозрачностью?
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
http://students.uni-vologda.ac.ru/pages/pm01/kps/maps.htm это еще вариант для установки альфа-канала на основе scanline т.е. с использованием SetDIBits и SetDIBitsToDevice посмотри, может найдешь готовую оболочку (по крайней мере по ссылке вырисовывается класс Bitmap) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
чот я там не вижу функции SetDIBits.. и почему у функции CreateBitmap всего два параметра и созданный битмап нигде не сохраняется и не заполняется..
Кстати libpng не нашёл собранной для 5-ой CE... на сайте только для 4 есть. ПОэтому с ним не получица похоже :( Это сообщение отредактировал(а) Brodyaga - 4.6.2009, 08:21 |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Вообщем хрен с этим пнг.. сконвертил в кореле его в бмп.. вроде норм сконвертилось, на фоне белого цвета... следую инструкциям указанным тут сделал способом номер 2 (через TransparentBlt).
Но у меня много кнопок, удобнее было бы через ИмэджЛист, а вот с помощью него не работает :( Что я не так делаю:
Картинка рисуется с белым фоном... он не убирается.. почему? уже по всякому перепробовал.. |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
судя по этому циклу:
используется именно эти функции
это же не API, это обертка над ней неправильно, третий параметр должен быть именно монохромным битмапом, если список создается с флагом ILC_MASK либо генерируй маску, либо убери флаг ILC_MASK -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Если уберу, как мне белый фон тогда убрать при выводе изображения? |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
пусть ImageList сам построит маску для этого нужно не создавать список, а загружать его из ресурса, например так:
в ресурсе IDB_MYBUTTONIMAGES при этом должен быть битмап с 32-пиксельными картинками, расположенные горизонтально, друг за другом, а ключ прозрачности задается параметром crMask (в данном случае белый), либо первым пикселом этого битмапа (при этом нужно еще поставить при загрузке флаг LR_LOADTRANSPARENT, но т.к. в CE флаги к ImageList_LoadImage не поддерживаются, то такой вариант не пройдет) аналогично и с ImageList_LoadBitmap (только параметров меньше) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Вроде получилось.. Теперь другая проблема, иконка на кнопке отображается.. а самих очертаний кнопки нет.. мне их вручную рисовать или можно както сначала кнопку отрисовать, а потом уже иконку на ней?
P.S. Перехватываю сообщение WM_DRAWITEM Это сообщение отредактировал(а) Brodyaga - 4.6.2009, 13:57 |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Если рисуешь в WM_DRAWITEM тебе придется отрисовывать все состояния кнопки самому. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
ясно... а рисовать картинку и картинку со сдвигом(при нажатии), а также очищать область.. это всё как я понимаю в WM_PAINT делать? в связи с этим вопрос... у каждой кнопки свою процедуру делать? или в общей рисовать? как лучше сделать?
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, тебе приходит DRAWITEMSTRUCT которая содержит
ID твоей кнопки и HWND вот проверяй и рисуй на каждой кнопке разное. Если на каждой кнопке одинаковое, тогда проверять HWND и ID не надо. Ну а вообще конечно рисовать для каждой кнопки свое как-то не очень, я понимаю одну-две ,а когда их много....... -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
ну а рисовать то в оконной процедуре кнопки в событии WM_PAINT ? просто одну процедуру на все кнопки назначить? а как тогда там узнать какой айди и состояние какое?
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, У тебя что, для каждой кнопки есть своя оконная процедура?
WM_DRAWITEM надо ловить в окне которое является родителем для твоих кнопок, то окно в котором они находятся. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Нет. Но я могу одну на все сделать, а в ней уже смотреть айди кнопки. а где рисовать то? в процедуре кнопки или форму? Тоесть я не могу догнать механизм... я думаю так.. - перехватываю в процедуре главного окна сообщение WM_DRAWITEM, запоминаю глобальную структуру LPDRAWITEMSTRUCT и вызываю перерисовку кнопки - в процедуре кнопки, в событии WM_PAINT в зависимости от глобальной структуры LPDRAWITEMSTRUCT рисовать определённую кнопку и картинку на ней, в определённом состоянии. так? или я чтото не догоняю? P.S. Извините за, может быть, глупые вопросы.. Просто с винапи почти не работал |
|||
|
||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Brodyaga, ты просто не понял.
Правильно.
Зачем тебе глобальная структура? Тебе приходит LPDRAWITEMSTRUCT в lParam. Попробую на примере.
-------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: нет Всего: 1 |
Brodyaga, по мне так быстрее и полезнее для опыта будет создание своего контрола кнопки, благо делать то там почти нечего - отрисовывать в WM_PAINT, да клики отлавливать. в этом случае кнопка это окно со своей процедурой. остается создавать объекты, делов то.
Это сообщение отредактировал(а) Emura - 5.6.2009, 13:02 |
|||
|
||||
| Brodyaga |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Хочу это добить
так я так и делал сначала.. но рисовать то всё надо же в WM_PAINT? между состояниями кнопки(нажата, отжата) мне надо область кнопки очищать, так как картинка для нажатой кнопки немного смещается. а очищение почемуто не работало:
вот я и подумал, что не работает из-за того, что рисую не в WM_PAINT и решил в WM_DRAWITEM Invalidate вызывать, чтобы рисовать уже в WM_PAINT. Или можно рисовать и в WM_DRAWITEM? Тогда почему очистка не работает? |
||||||||
|
|||||||||
| Brodyaga |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 599 Регистрация: 19.1.2008 Репутация: нет Всего: 2 |
Извините, понял свой косяк.
Надо было не так прямоугольник рисовать, я получал кнопку относительно всего диалогового окна, а надо было просто размеры:
вот так! Сейчас вроде работает как надо! Andrey44,GremlinProg спасибо! +1! |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: нет Всего: 26 |
Даже нужно, там-же приходит в LPDRAWITEMSTRUCT lpdis->hdc
-------------------- ????? ??, ??????? ?????. |
|||
|
||||
![]()
|
| Правила форума "Программирование мобильных устройств" | |
|
|
Раздел посвящен программированию мобильных устройств. Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п), |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |