Модераторы: Alexeis

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Картинка на кноку в WinCE 
V
    Опции темы
Brodyaga
Дата 1.6.2009, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Всем доброго времени суток! Подскажите кто знает.. как всётакие добавить картинку на кнопку в WinCE средствами WinApi ???
PM MAIL   Вверх
Andrey44
Дата 1.6.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Самый простой способ - 
Код

#define BUTTON_SIZE 16
hButton=CreateWindowEx(0, _T("button"), 0, WS_CHILD | WS_VISIBLE
            |  BS_ICON, 0, 0,  BUTTON_SIZE, BUTTON_SIZE, hWnd, (HMENU)ID_BUTTON,
                hInstance, NULL);
        SendMessage(hButton, BM_SETIMAGE, (WPARAM)IMAGE_ICON,
            (LPARAM)::LoadImage(hInstance, MAKEINTRESOURCE(ID_ICON), IMAGE_ICON, BUTTON_SIZE, BUTTON_SIZE, LR_DEFAULTCOLOR));


Добавлено через 2 минуты и 17 секунд
Да, вместо BS_ICON можно использовать BS_BITMAP 
тогда вместо (WPARAM)IMAGE_ICON пишем (WPARAM)IMAGE_BITMAP


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 1.6.2009, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Пытался уже както так сделать.. всё бы хорошо да сообщения BM_SETIMAGE нету в WinCE.
PM MAIL   Вверх
Andrey44
Дата 1.6.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Тогда лови  WM_DRAWITEM и рисуй на кнопке картинку.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 1.6.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



если тип контрола не принципиален, то используй STATIC
у него есть и STM_SETIMAGE
и уведомление STN_CLICKED


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 2.6.2009, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Тогда лови  WM_DRAWITEM и рисуй на кнопке картинку.

а по подробнее можно?

Цитата

если тип контрола не принципиален, то используй STATIC
у него есть и STM_SETIMAGE
и уведомление STN_CLICKED

попробую
PM MAIL   Вверх
Andrey44
Дата 2.6.2009, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



При создании кнопки задаешь ей стиль BS_OWNERDRAW 
В своем приложении ловишь WM_DRAWITEM 
Тебе приходит 
Цитата(MSDN)
This message is sent to the owner window of an owner-drawn button or menu when a visual aspect of the button or menu has changed. 

WM_DRAWITEM idCtl = (UINT) wParam; 
  lpdis = (LPDRAWITEMSTRUCT) lParam;

Цитата(MSDN)

This structure provides information that the owner window must have to determine how to paint an owner-drawn control or menu item.

typedef struct tagDRAWITEMSTRUCT { 
  UINT CtlType; 
  UINT CtlID; 
  UINT itemID; 
  UINT itemAction; 
  UINT itemState; 
  HWND hwndItem; 
  HDC hDC; 
  RECT rcItem; 
  ULONG_PTR itemData; 
} DRAWITEMSTRUCT; 


Но цитировать весь мсдн я не могу, так что смотри и я думаю разберешься.
Будут вопросы спрашивай.



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 2.6.2009, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



GremlinProg, чтото не получается...
Пробовал так:
Код

    HANDLE handle;

    handle=LoadImage(hInstance, (LPCWSTR)IDI_ICON1, IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
    SendMessage(GetDlgItem(hDlg,IDC_STATIC1),STM_SETIMAGE,(WPARAM)handle, NULL);


и так...

Код

    HANDLE handle;

    handle=LoadImage(hInstance, (LPCWSTR)IDI_ICON1, IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
    SendMessage(GetDlgItem(hDlg,IDC_STATIC1),STM_SETIMAGE,(WPARAM)IMAGE_ICON, (LPARAM)handle);


Просто нашёл несколько примеров где по разному сделано..
ни так ни так не работает :(
PM MAIL   Вверх
Andrey44
Дата 2.6.2009, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



В handle что-то есть? Он не нулевой?
ПРосто смущает строка (LPCWSTR)IDI_ICON1
Может лучше MAKEINTRESOURCE(ID_ICON1)

Добавлено через 48 секунд
Цитата(Brodyaga @  2.6.2009,  07:26 Найти цитируемый пост)
HANDLE handle;
    handle=LoadImage(hInstance, (LPCWSTR)IDI_ICON1, IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
    SendMessage(GetDlgItem(hDlg,IDC_STATIC1),STM_SETIMAGE,(WPARAM)handle, NULL);

Вот так не правильно


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 2.6.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Цитата(Brodyaga @  2.6.2009,  07:26 Найти цитируемый пост)
HANDLE handle;
    handle=LoadImage(hInstance, (LPCWSTR)IDI_ICON1, IMAGE_ICON, 32, 32, LR_DEFAULTCOLOR);
    SendMessage(GetDlgItem(hDlg,IDC_STATIC1),STM_SETIMAGE,(WPARAM)handle, NULL);

Вот так не правильно

это взял отсюда, где чел утверждает что картинка на кнопку у него таким макаром поставилась..

Цитата

В handle что-то есть? Он не нулевой?

нет не нулевой

Цитата

ПРосто смущает строка (LPCWSTR)IDI_ICON1
Может лучше MAKEINTRESOURCE(ID_ICON1)

так тоже не пустой и не работает.
PM MAIL   Вверх
Andrey44
Дата 2.6.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Brodyaga, а покажите как вы создаете статик?
У него hwnd тоже не нулевой? Его видно вообще?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Brodyaga
Дата 2.6.2009, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Brodyaga, а покажите как вы создаете статик?
У него hwnd тоже не нулевой? Его видно вообще?


просто кидаю на диалог.. Да сам текст статика видно.
PM MAIL   Вверх
Andrey44
Дата 2.6.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Ну так ему-же надо стиль поставить что-бы рисунок отображался


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
GremlinProg
Дата 2.6.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: нет
Всего: 106



Цитата(Andrey44 @  2.6.2009,  10:53 Найти цитируемый пост)
Ну так ему-же надо стиль поставить что-бы рисунок отображался

да, стиль поставить надо
либо SS_BITMAP, либо SS_ICON, либо включить соответствующий эквивалент флага в редакторе ресурсов
подробнее по стилям: http://msdn.microsoft.com/en-us/library/aa923260.aspx


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Brodyaga
Дата 2.6.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Так спасибо.. и первым и вторым способом получилось... наверное всётаки буду использовать WM_DRAWITEM с кнопкой... Теперь проблема другая.. отобразить то мне нужно именно PNG. А получилось отобразить только BMP. Можно ли вообще както PNG в ресурсы загнать?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

Раздел посвящен программированию мобильных устройств.

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




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


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

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