C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая темаНовый опрос
особенности работы с dll, окна и dll
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
Ramzay
Отправлено: 09.03.2007, 01:19 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 31
Пользователь № 3586
Регистрация: 31.12.06



Работая с dll я выяснил для себя, что это очень удобная штука с точки зрения повторного использования кода.

Однако, наряду с достоинствами я натолкнулся на недостатки, которые я победить не смог. Если кто сталкивался с подобными проблемами, буду признателен за подсказку.

Итак, особенность №1

Вызываем dll-функцию. Функция динамически создает модальную форму. Проблема заключается в том, что форму невозможно свернуть. При нажатии на иконку "Свернуть" в верхнем правом углу окна ничего не происходит. При этом окно нормально закрывается крестиком и нормально разворачивается на весь экран. Если из такой формы создать еще одну, то она будет нормально сворачиваться.

Особенность №2

Вызываем dll-функцию. Функция динамически создает модальную форму №1, которая в свою очередь создает еще одну модальную форму №2. Находясь в форме №2 нажимаем Alt-Tab и переключаемся в какое-либо другое приложение, а затем переключиться обратно. Мы видим на экране форму №2, под которой лежит приложение (в которое мы переключались), а форма №1 лежит под этим приложением. Хотя форма №1 должна лежать под формой №2.

Особенность №3

Запускаем некоторое приложение (например Word или что-то другое).
Вызываем dll-функцию. Функция динамически создает модальную форму №1, которая в свою очередь создает еще одну модальную форму №2. В процессе работы пользователя в форме №2 выдается сообщение. (например, функцией ShowMessage или это может быть сообщение об ошибке). После того как пользователь прочел сообщение и нажал ОК, пользователь видит не форму №2, а приложение.

Отредактировано Ramzay - 09.03.2007, 01:23
 
Послать сообщение E-mail адрес  Top
olegenty
Отправлено: 09.03.2007, 08:26 Цитировать


Ветеран


Группа: Модератор
Сообщений: 2412
Пользователь № 507
Регистрация: 13.02.04



Для начала, есть ощущение, что EXE и DLL ты собрал статически, а не динамически. Пересобери динамически (Build with runtime packages и Use dynamic RTL) и данные эффекты должны улетучиться. При статической сборке экземпляры глобальный объектов (Application, Screen, Printer, etc) - локальны для EXE и для DLL (свои для каждого модуля то есть). При динамической - все модули "пользуются" единственным экземпляров данных объектов, созданных в EXE.

--------------------
Управлять можно лишь тем, что можно измерить.
Восточная мудрость.
 
Послать сообщение E-mail адрес ICQ  Top
Ramzay
Отправлено: 09.03.2007, 14:58 Цитировать


Дежурный стрелочник


Группа: Участник
Сообщений: 31
Пользователь № 3586
Регистрация: 31.12.06



QUOTE (olegenty @ 09.03.2007, 08:26)
Для начала, есть ощущение, что EXE и DLL ты собрал статически, а не динамически. Пересобери динамически (Build with runtime packages и Use dynamic RTL) и данные эффекты должны улетучиться.

Установка птицы "Build with runtime packages", оказывает заметное положительное воздействие. Но при этом придется за своей dll-кой таскать кучу пакеджей, а я к этому пока психологически не готов.

Что делает "Use dynamic RTL" - не понятно.

А нет ли какой-нибудь функции или метода, который бы позволил сделать окно задачи текущим окном Windows и вынести ее на передний план всех окон Windows?
 
Послать сообщение E-mail адрес  Top
Tantos
Отправлено: 09.03.2007, 18:20 Цитировать


Станционный диспетчер


Группа: Участник
Сообщений: 108
Пользователь № 2982
Регистрация: 15.11.06



QUOTE (Ramzay @ 09.03.2007, 21:58)
А нет ли какой-нибудь функции или метода, который бы позволил сделать окно задачи текущим окном Windows и вынести ее на передний план всех окон Windows?

1. SetForegroundWindow
2. Вдогонку

--------------------
Чем больше узнаю людей, тем больше люблю компьютеры.
 
Послать сообщение ICQ  Top
3 ответов с: 09.03.2007, 01:19 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Вопросы программирования в C++Builder
ОтветитьНовая темаНовый опрос