![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Dmitriy2k |
|
||||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Привет! Подскажите, что делать.
Дело в том, что главный интерфейс(окно с меню и кодом) написан на Delphi. Оттуда двойным щелчком на нужном пункте я запускаю плагин(DLL, написанная на VC++60)
Сначала вылетает <<MessageBox(NULL,"OK","OK",MB_OK);>> наверное потому что я запустил плагин двойным щелчком. Потом я тупо тыкаю несколько раз на появляющиеся MessageBox'ы. Почему вылетает MessageBox, ведь дочернее окно(окно плагина, код которового приведен выше) даже не появилось? Затем появляется дочернее окно. ... |
||||
|
|||||
586 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
потоконебезопасный код. При выходе из функции StartPlugin переменная hClient может быть стёрта, а другой поток будет обращаться к ней. Делай так:
чем функция CreateDialog не устраивает? И обрабатывай WM_LBUTTONDBLCLK. WM_LBUTTONDOWN пока заккоментируй.
Может, где-нибудь после case'ов break не поставлен? Это сообщение отредактировал(а) 586 - 23.4.2009, 00:28 |
||||||
|
|||||||
Dmitriy2k |
|
||||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Ах, да. Я не совсем правильно показал код. Хотелось, как проще. это выглядело примерно так:
В общем то я попробовал, как ты показал, так, конечно будет правильней, но эффект один и тот же - все работает нормально, за исключением двойного клика мыши С СreateDialog - диалоговое окно вообще не появляется(или появляется, но тут же закрывается - для глаза не заметно) Что то искать и переделывать не хочу, DialogBox меня вполне устраивает. с WM_LBUTTONDBLCLK - то же самое, почему то это сообщение срабатывает при одинарном клике. И получается вот что: Первый раз щелкаю на Дэлфевском окне, далее должно появиться окно плагина. срабатывает WM_LBUTTONDBLCLK, появляется MessageBox, жму мышью "OK" - срабатывает WM_LBUTTONDBLCLK, появляется MessageBox, опять жму "OK" - опять появляется то же самое. |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а зачем пробовал WM_NCLBUTTONDBLCLK? это же не двойной клик по клиенту используй WM_LBUTTONDBLCLK -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
В опциях диалога посмотри свойство Visible.
Там достаточно поменять только название функции - это избавит от необходимости создавать поток (вызывать CreateDialog нужно в функции StartPlugin, поток не нужен). |
||||
|
|||||
Dmitriy2k |
|
|||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Да, я попробывал и так, диалоговое окно появляется и виснет, а в потоке работает нормально. В общем то меня все устраивает. Мне не понятно, почему при одинарном щелчке мыши срабатывает WM_LBUTTONDBLCLK - сообщение о двойном щелчке. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
потому что двойной щелчок его не блокирует и не должен, это правило: DOWN DOWN DOUBLE Добавлено через 1 минуту и 43 секунды если ты что-то другое имел ввиду, показывай код -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
поспешил:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |