Сейчас на форуме: (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Кнопка активна (активирована) но не подсвечена
Посл.ответ Сообщение

Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 мая 2006 20:31 · Поправил: Obsession
· Личное сообщение · #1

Заранее извиняюсь, если был такой вопрос уже. Поиск юзал - ничего не нашел(значит, так юзал)

В общем, есть одна кнопка(типа QWidget кстати) . Она не подсвечена, а мне надо на нее нажать.

(Не подсвечена,это значит, что текст на ней не черным шрифтом написан, а рельефным, с цветом остальной "формы", если можно так выразиться, ну короче, обычное дело)

В общем, я написал небольшую программу по активированию таких кнопок


Типа того:
//деактивировать
SendMessage(window,WM_ENABLE,0 ,0);
EnableWindow(window,false);

//активировать
EnableWindow(window,true);
SendMessage(window,WS_DISABLED,0 ,0);

Вот. На разных кнопках пробовал - работает, а тут - нет.

Потом неожиданно наткнулся на очень удобную прогу InqSoft Window Scanner.
Она сразу и координаты пишет и другую различную информацию об окнах (раньше мне приходилось вручную писать такие утилиты, если до чего-то надо было добраться, даже скопилось много громоздких(неудобных) утилит)

Так вот, она выдала, что это окно активно. Но ведь оно при этом неподсвеченно остается!

Рядом есть другая кнопка(в том же приложении): если ее сделать неактивной, то она не обесцвечивается, но на нее становится нельзя нажать.

В общем, подскажите, в чем тут соль:есть разница между обесцвесченной кнопкой и деактивированной, что мне надо сделать, чтоб оцветить ту обесцвеченную кнопку или хотя бы что надо сделать, чтоб можно было на нее нажать?

Есть ли сообщение WinApi для принудительного нажатия на кнопку?
TB_PRESSBUTTON - это то, что надо? (пробовал - не получается)

Пожалуйста, подскажите!




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 29 мая 2006 21:52
· Личное сообщение · #2

Obsession пишет:
Есть ли сообщение WinApi для принудительного нажатия на кнопку?

BM_CLICK



Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 мая 2006 22:02
· Личное сообщение · #3

Ara пишет:
Есть ли сообщение WinApi для принудительного нажатия на кнопку?

Попробовал - не помогает!
Для обычной формы, созданной на Builder , работает.
А для того приложения (с кнопками QWidget) не работает(ни обесцвеченная кнопка, ни любая другая из того же приложения не реагирует на это сообщение)




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 29 мая 2006 22:04
· Личное сообщение · #4

большое приложение-то?



Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 мая 2006 22:07 · Поправил: Obsession
· Личное сообщение · #5

2 мб, собственно, это установщик QT 3.3.0

Ну, все равно, спасибо!



Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 мая 2006 22:31
· Личное сообщение · #6

Да, и BM_CLICK на обесцвеченные кнопки в обычном билдеровском приложении тоже не действует.

PS
Похоже на то, что в формах, созданных на qt и на builder понятие enable имеет разное значение.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 30 мая 2006 00:19 · Поправил: Ara
· Личное сообщение · #7

Obsession пишет:
Да, и BM_CLICK на обесцвеченные кнопки в обычном билдеровском приложении тоже не действует.

Дык конечно, сначала нужно ее подсветить =)). Поюзай поиск по форуму, уже была такая тема, я тулзу маленькую выкладывал. Она тебе поможет.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 мая 2006 07:14
· Личное сообщение · #8

WM_KEYDWON
WM_KEYDUP

Сначала шлеш первое и сразу второе. У меня всегда прокатывает...

-----
Yann Tiersen best and do not fuck




Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 мая 2006 08:02 · Поправил: Obsession
· Личное сообщение · #9

PE_Kill пишет:
WM_KEYDWON
WM_KEYDUP


Вот этот метод, кстати, я довольно хорошо освоил.
(только не KEY, а MOUSE)

BM_CLICK для меня в новинку, хотя ничего принципиально нового.

Кстати сказать,метод WM_MOUSEDOWN - WM_MOUSEUP почему-то не всегда срабатывает. Например, если посылать сообщения окнам типа TGroupButton, то очень часто не происходит нажатие. Уж не знаю почему.

Меня насторожил тот факт, что в установщике библиотеки QT для Visual Studio (который написан, повидимому, на самом QT, поскольку все окна в нем типа QVidget, что характерно для QT) кнопка по сути активная оказалась по факту неактивной.

Вообще, это довольно весело. Например, intellij idea jet brains (среда для работы с java) сама написана на java. Я, конечно, не очень секу фишку, но, по-мойму, и защиты никакой особой не надо писать.


Вот, как победить QVidget не знаю. Вроде Ara пообещал какую-то тулзу, но я ее не могу отыскать.
Ara, дай, пожалуйста, прямую ссылку, будь другом!

PS Да, и я прошу прощения, я , наверное, довольно неясно выразился. Под принудительным нажатием я подразумевал, что кнопка нажмется при любых условиях, в каком бы состоянии она ни была: хоть disabled(enable=false), хоть canceled, хоть invisible.

А с помощью простых сообщений - это скорее просто программное нажатие, чем принудительное.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 мая 2006 08:07
· Личное сообщение · #10

Блиин...
WM_KEYDOWN,VK_SPACE
WM_KEYUP,VK_SPACE

-----
Yann Tiersen best and do not fuck




Ранг: 9.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 мая 2006 08:14 · Поправил: Obsession
· Личное сообщение · #11

SendMessage(hwnd,WM_KEYDOWN,0 ,0);
SendMessage(hwnd,VK_SPACE,0 ,0);
SendMessage(hwnd,WM_KEYUP,0 ,0);
SendMessage(hwnd,VK_SPACE,0 ,0);

так?

Вот, я попробовал сейчас вот эти 4 сообщения - не работает!

PS
Кстати, я и сам ошибся: не WM_MOUSEDOWN, а WM_LBUTTONDOWN
соответственно, не WM_MOUSEUP, а WM_LBUTTONUP


 eXeL@B —› Вопросы новичков —› Кнопка активна (активирована) но не подсвечена
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати