С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
setter1
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 36
1

GetActiveWindow

15.07.2011, 23:18. Просмотров 1065. Ответов 1
Метки нет (Все метки)

Делаю плагин для программы (типа dll-ку)
Вот следующий код:
C++
1
2
3
            Application->CreateForm(__classid(TDialogBox), &DialogBox);
            DialogBox->ParentWindow=GetActiveWindow();
            DialogBox->ShowModal();
GetActiveWindow() я поставил для того, чтобы не показывалась кнопка на панели задач от модального окна, ну и соответственно чтобы родительское окно было не доступно.
Первый раз, при запуске, все работает, отображается модальное окно, родительское окно не доступно и на панели задач кнопки модального окна нет. Даже если закрыть модальное окно и снова открыть, все работает.
Но как только закроешь родительское окно, а потом откроешь, и в нем же откроешь модельное, тут же валится ошибка мол "Access violation at address..."
Если быть кратким. Если закрыть окно, которое позади модального и снова открыть, а потом снова открыть модальное вылетает ошибка.

Что не так? Пробовал GetForegroundWindow - использовать, то же самое.

Добавлено через 28 минут
Вроде бы решил, проблема вроде бы в многократном использовании
C++
1
Application->CreateForm(__classid(TDialogBox), &DialogBox);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2011, 23:18
Ответы с готовыми решениями:

Как совместить GetActiveWindow() и GetFocus() ?
Есть такая Api-функция GetActiveWindow(), и есть еще одна-GetFocus(). Вопрос: как совместить эти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Maluda
1241 / 571 / 107
Регистрация: 18.08.2009
Сообщений: 803
Завершенные тесты: 1
16.07.2011, 00:39 2
C++
1
2
3
4
Application->CreateForm(__classid(TDialogBox), &DialogBox);
DialogBox->ParentWindow=GetActiveWindow();
DialogBox->ShowModal();
DialogBox->Free();
или

C++
1
2
3
4
TDialogBox *DialogBox1 = new TDialogBox(/* если произведено от TForm,
тогда указать компонент-владелец, можно Application */Application);
DialogBox1->ShowModal();
delete DialogBox1();
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru