Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347

Задать владельца для формы из DLL

30.05.2018, 20:52. Показов 1300. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть dll, в ней форма. Dll писана в c++ Builder 2010, а прога, вызывающая dll в c++ Builder 6.

функция в main.cpp (dll)
C++
1
2
3
4
5
void open(TComponent *owner)
{
TForm1 *f = new TForm1(owner);
f->Show();
}
Если передать NULL - всё работает относительно правильно, но если указатель на форму проекта c++ builder 6, то получаем access violation.

Собственно, почему мне нужно задать владельца (родительскую форму): если дочерняя форма имеет родительскую, то она открывается поверх родительской (но не модально) - ЭТО то, что мне нужно. Установка в форме fsStayOnTop не помогает: форма начинает отображаться поверх вообще всех приложений.
Собственно, вопрос: как для формы из DLL установить владельца (чтобы форма из dll появлялась поверх родительской, но не модально)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2018, 20:52
Ответы с готовыми решениями:

Применить РеквизитФормыВЗначение для владельца формы
Здравствуйте, вопрос: есть форма, у ней владелец - другая форма или таблица формы. я хочу из этой формы, поменять данные во владельце. ...

Как определить/установить владельца для формы справочника
Доброго времени суток. Подскажите, как определить/установить владельца для формы справочника. Нужно для установки свойств второстепенной...

Доступ к членам формы владельца
Подскажите, пожалуйста, есть такая проблема: Работаю в vs 2008, из формы(Form1) вызываю диалоговое окно, в нем происходят какие - то...

9
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
30.05.2018, 20:56
Передать Handle формы и использовать WinAPI-шную SetParent - тоже не получается? Все-таки в DLL передавать указатель на класс, да еще и при разных версиях компиляторов - не очень хорошая идея, а WinAPI - он везде WinAPI.
1
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
30.05.2018, 21:15  [ТС]
C++
1
2
3
4
5
6
void Show(HWND owner)
{
    TForm1 *f = new TForm1(NULL);
        SetParent(f->Handle, owner);
    f->Show();
}
Всё равно access violation
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
30.05.2018, 21:31
В таком случае - нужны исходники DLL и проекта, пытающегося с ней работать (минимальные, на которых проявляется ошибка. Придумывать что-то самому не имеет смысла. Я придумаю, а оно возьмет и заработает у меня. Мне интересно взять и проверить чужое). BCB6 найдется, 2010 нет, но есть XE4, там не слишком много изменилось.
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
30.05.2018, 21:34  [ТС]
ok, поем и брошу
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
30.05.2018, 22:51  [ТС]
Собрал на скорую руку. На моём компе access не кидает, но и форму не отображает.
Вложения
Тип файла: rar DLLTest.rar (321.6 Кб, 6 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
30.05.2018, 23:47
У меня отображает форму:
Миниатюры
Задать владельца для формы из DLL  
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
31.05.2018, 00:54  [ТС]
странно, у меня не отображает.
А как себя форма ведёт: поверх дочернего и немодальное?

Добавлено через 43 секунды
может ты код правил?

Добавлено через 3 минуты
то есть поверх родительского

Добавлено через 47 минут
отображается, но интересным образом: только в пределах родительской формы. А можно сделать так, чтобы дочерняя могла выезжать за пределы родительской?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
31.05.2018, 01:45
Нет. На то она и дочерняя, что отображается только в пределах родительской.
1
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
31.05.2018, 02:48  [ТС]
Вот желаемый эффект:
C++
1
::SetWindowLong(f->Handle, GWL_HWNDPARENT, (LONG)owner);
Тема закрыта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.05.2018, 02:48
Помогаю со студенческими работами здесь

Как определить владельца формы?
Здравствуйте. Вообщем нужно определить владельца формы, и ему передать параметры. Параметры в общей массе одни и тежи. на данный...

Необходимо задать стили для формы
Форумчане помогите пожалуйста задать стили для вот этого кода <?php global $user_ID, $user_identity; get_currentuserinfo(); if...

Как задать BackgroundImage для формы
Как в WPF задать BackgroundImage для окна через C# код? Находил вот такие вот варианты this.Background = new ImageBrush(new...

Как программно задать комбинацию клавиш для вызова формы?
Как программно задать комбинацию клавиш для вызова формы?

Как задать для каждой кнопки формы свою проверку отсылаемых данных?
На форме есть несколько кнопок типа сабмит. При отправке данных на сервер данные в полях формы проверяются обработчиком на VBSCript по...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru