![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| MANAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 17.5.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Здраствуйте.
У меня стоит задача написать dll-ку, котрая будет показывать график. В Dll-ке 2 функции - ShowChart( double* data, int n ) и CloseWindow(). У меня есть класс в dll-ке, который создает окно и рисует график. Выглядит это примерно так:
Проблема заключается в следующем: Я вызываю функцию ShowChart несколько раз, чтобы построить несколько графиков. Эти несколько окон открываются и успешно все показывают. НО! При закрытии любого из окон остальные на закрытие уже не реагируют. ЧТо я не правильно делаю? Просветите нуба Это сообщение отредактировал(а) MANAB - 19.7.2010, 17:26 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
это есть а delete d3dApp нету -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| MANAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 17.5.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Просто не указывал и так явную функцию. Тем более проблема не в этом. Да и d3dApp можно статическим делать. Дело не в этом. Дело в том, что обработка сообщение происходит только для последнего открытого окна. Окно как бы теряется что ли... Это сообщение отредактировал(а) MANAB - 19.7.2010, 18:09 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 6 Всего: 135 |
ты даже префикс дал соответствующий g_hWnd
у тебя этот g_hWnd переписывается вызовом при каждом вызове ShowChart лучше всего не хранить ничего статически ( глобально ) в библиотеке, а отдавать этот HWND "наверх", а функция Close должна получать то, что ей нужно закрыть/освободить
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 2 Всего: 10 |
глобальные переменные - зло.
HANDLE g_hMod; - вот это вообще не надо, к тому же это HMODULE а не HANDLE надо юзать
|
|||
|
||||
| MANAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 17.5.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Попробую зайти немного с другого боку.
Функция Close вызываться будет только потом, чтобы очистить память, или, если ну очень понадобиться, программно закрыть окно. А вообще окно закрывается пользователем, "щелчком по крестику". Вообще правильно будет вот так:
Суть вообще не в этом. Суть в том, что когда вызывается функция ShowChart, которая показывает новое окно с графиком (опять таки не придирайтесь к тому, что там данные старого графика теряются, это для упрощения написано), то старое окно перестает реагировать на сообщения. Любое из окон можно закрыть ("щелчком по крестику"), но остальные уже на закрытие не реагируют и продолжают висеть. На обращения к ним, типа по нажатию F1 вывести некоторую информацию, реагирует только последнее открытое окно, т.е. словно сообщения теряются. И я не понимаю, почему так происходит. Добавлено через 11 минут и 49 секунд Ой, ребят, кажется нашел. В общем намудрил немного с реализацией класса (как обычно), так что извиняйте. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |