Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Мертвый PUSHBUTON? |
Посл.ответ | Сообщение |
|
Создано: 09 января 2011 16:30 · Поправил: 0xy · Личное сообщение · #1 Прога на СИ. Окно диалога создается посредством DialogBoxParam из ресурса. В этом окне, в числе прочих контролов, есть стандартный PUSHBUTTON, и он Enabled. Прикол в том, кто клик на этой кнопке почему-то не приводит к вызову DialogFunc (по крайней мере, с его номером третим параметром). 1002 DIALOG 10, 10, 280, 260 Собстенно, при клике ни чего и не происходит, но ведь процедура диалога все равно должна вызываться!? добавлено Если изменить индекс кнопки в ресурсах (5031)--работает правильно (DialogFunc вызывается). Так в чем же грабли?? |
|
Создано: 09 января 2011 16:32 · Личное сообщение · #2 |
|
Создано: 09 января 2011 18:44 · Поправил: Модератор · Личное сообщение · #3 EXE и все необходимое для запуска По клику с форума почему-то не качается: нужно скопировать ссылку вручную. В ресурсах диалог №1082, кнопки 5031 и 5032. Вызывается он из меню "Анализ->Прогноз события". 47ec11 -- вызов DialogBoxParam. 47e8e2 -- адрес DialogFunc Любопытно, что достаточно изменить номер PUSHBUTTON в ресурсах (второй exe c буквой p в конце имени), и DialogFunc при клике начнет нормально вызывается! В принципе, задача--установить факт наличия.отсутствия в файле кода, который должен вызываться этими кнопками. PS На всякий случай, можно пропатчить байт 45ec34 на единицу, чтоб прога чувствавала себя зарегеной, но это мало чем поможет. PPS Чет не пойму: это я сам запостил в Программирование, или перенесли? От модератора: перенесли |
|
Создано: 10 января 2011 15:25 · Личное сообщение · #4 |
|
Создано: 10 января 2011 23:03 · Личное сообщение · #5 |
|
Создано: 11 января 2011 02:21 · Личное сообщение · #6 |
|
Создано: 11 января 2011 02:38 · Личное сообщение · #7 |
|
Создано: 11 января 2011 14:25 · Личное сообщение · #8 Мог бы, кстати, трассировать параллельно 2 приложения и разобраться сам, а не просить других это сделать за тебя. Судя по spy, сообщения приходят. В этом же можно убедиться, если тыкать бряки в нужные места. Другой вопрос, что они не доходят до DialogProc. Походу, это из-за того, что у диалога стоит оконный парент, который дёргает кучу своего кода и вызывает DialogProc не всегда. А именно здесь 0043C808 происходит сравнение ИД контрола и вызов соответствующей процедуры. В патченом процедуру оно находит, в исходном нет. В общем, судя по всему, виноват рантайм и парент. |
eXeL@B —› Программирование —› Мертвый PUSHBUTON? |