Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получаеться повесить функцию на Static, приложение MFC 
V
    Опции темы
Modder
  Дата 4.1.2008, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как Visual C++ повесить событие при нажатии кнопки мыши на статик картинку?
Столкнулся с проблемой в проге. Мне нужно чтобы при нажатии на статик, который преставляет собой иконку, происходило какое-то действие. Как это сделать? На кнопку без проблем, а на статик ну никак. smile 
PM   Вверх
BorisVorontsov
Дата 4.1.2008, 15:42 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

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



Не помню, как там в старых версиях VC++, в VC++ 9 (2008) правой кнопкой на элементе, меню Add Event Handler...


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
Modder
  Дата 4.1.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, у меня есть там Handler BN_CLICKED. Но в программе при нажатии на этот статик ничего не происходит!
PM   Вверх
Earnest
Дата 4.1.2008, 17:33 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



BN_CLICKED - это сообщение от кнопки. А у тебя статик.
Статик может посылать уведомления STN_CLICKED, STN_DBLCLK если он создан с флагом SS_NOTIFY. И это все.
Если нужна более гибкая обработка мышиных и клавиатурных событий - делай свой контрол на основе кнопки.




--------------------
...
PM   Вверх
Modder
Дата 4.1.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А там нет STN_CLICKED. Как задать флаг SS_NOTIFY?
PM   Вверх
Modder
  Дата 4.1.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все! В стилях статика поставил галочку Notify и заработало с BN_CLICKED! smile 
З.Ы. Только скорость обработки клика меньше чем у кнопки, поэтому если быстро клацать, то не все клики будут обработаны.
З.З.Ы. STN_CLICKED так и не появился.
PM   Вверх
Earnest
Дата 5.1.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Modder @  4.1.2008,  19:54 Найти цитируемый пост)
З.З.Ы. STN_CLICKED так и не появился. 

Это ты так проявляешь сомнение в существовании этого кода, что ли? smile 

BN_CLICKED == STN_CLICKED == 0, вот и весь секрет твоего "заработало". Слова разные, т.к. так удобно и принято - разные понятия обозначать разными словами.

Такое ощущение, что ты не программировать учишься, а перенимаешь эзотерический опыт у старых шаманов. smile 

Ты хоть понимаешь, что компилятор != среда программирования, и совсем != этой хрени под громким названием "визард": может, забыли туда разработчики эти константы вбить, или решили, что не так важны они. 

Я тебе сейчас умную мысль скажу, а ты запомни, пригодиться: smile 
WinAPI далеко не исчерпываются теми константами, функциями и обработчиками, которые "знает" визард.

Да, насчет "если быстро клацать" - причина в том, что в результате получается double-click (т.е. на каждый второй клик тебе приходит уведомление не STN_CLICKED, а STN_DBLCLK). А у кнопки стиль double-click по умолчанию выключен. Можно выключить его и у статика, а можешь просто ловить дополнительно double-click. Корректнее, видимо, второе, т.к. этот стиль относится не конкретному окну, а к классу "статик". Но, строго говоря, твой контрол по поведению больше напоминает кнопку, поэтому корректней и сделать его кнопкой.







--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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