Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли форму другого (запущенного) приложения... ... сделать MDIChild-формой? 
:(
    Опции темы
Softaz
Дата 30.11.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Имеется форма-MDI Container. Все остальные формы - дочерние.
Программа также может запускать другие приложения (например, calc.exe smile)

Можно ли форму запущенного приложения "засунуть" как MDIChild? А то не красиво получается.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Дрон
Дата 30.11.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 93



Цитата(Softaz @  30.11.2006,  13:55 Найти цитируемый пост)
Можно ли форму запущенного приложения "засунуть" как MDIChild? А то не красиво получается. 

По хорошему -- не стоит, но вообще-то можно, во всяком случае я таким баловался на С++. Сейчас поищу исходник.

Добавлено @ 14:13 
Если понимаешь в С++, то можешь глянуть (только учти, что это просто эксперименты -- всё в кучу свалено).
Потом, если будет время, попробую для .NET переделать... 
Но вообще это баловство, например, я не уверен, как это будет работать для Windows Vista.

Это сообщение отредактировал(а) Дрон - 30.11.2006, 14:14

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  W32Test.zip 36,85 Kb


--------------------
Да. Именно так.
PM   Вверх
Softaz
Дата 30.11.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Спасибо.
Раз не стоит, так не стоит. Оставим, как есть.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Exception
Дата 30.11.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 5
Всего: 186



Коли не ошибаюсь, нужна SetParentWindow. Я так когда-то кнопку "Пуск" заставлял прыгать на формочку VB 6 smile  smile .
PM   Вверх
DarkDragon
Дата 1.12.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Почему не стоит?
Если уж Exception так извращался! smile
Ну надо же придумать такое. Кнопку пуск заталкать на форму! smile  smile smile
Хотя фиг его знает что тама на Vist'e получитсяsmile

Я это проверял:

Воощем создал 2 приложения: первое при загрузки, кидает свой Handle (hWnd, Handle.ToInt32()) в реестр, а второе получает с реестра hWnd, и превращает его в дочернюю форму, путем SetWindowParent (int hMainWnd, int hChildWnd), помоему АПИ ф-ция так называется? Она находится в User32.Dll

Эксперемент делал на .NET.
PM MAIL   Вверх
ivashkanet
Дата 2.12.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



DarkDragon, ну так покажи.
Или это ноу хау?

Это сообщение отредактировал(а) ivashkanet - 2.12.2006, 00:12
PM MAIL WWW ICQ   Вверх
DarkDragon
Дата 4.12.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 3
Всего: 8



Цитата(ivashkanet @  2.12.2006,  00:12 Найти цитируемый пост)
это ноу хау?
 Да вообщем то нет. Просто давно я это извращался.

Цитата(ivashkanet @  2.12.2006,  00:12 Найти цитируемый пост)
DarkDragon, ну так покажи.
 Ща попробую показать.

Все приложение писать не буду.

Приложение номер 1:
Код

//создаем обработчик события:
        private void Form1_Load(object sender, System.EventArgs e)
        {
            Microsoft.Win32.RegistryKey rk = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey (Microsoft.Win32.RegistryHive.LocalMachine,Environment.MachineName);
            rk = rk.OpenSubKey ("SOFTWARE",true);
            rk = rk.CreateSubKey ("DOTNETAPP1");
            rk.SetValue (null, Convert.ToString (this.Handle.ToInt32()));
            rk.Close();
        }
//Добавляем:
 Form1.Load += New EventHandler (Form1_Load);

Компилим, и беремся за второе приложение.

Приложение номер 2:
Код

// Имопрт библиотеки:
using System.Runtime.InteropServices;

//Импорт ф-ции:
[DllImport ("user32.Dll")]
public static extern int SetParent (int hWndChild, int hWndNewParent); // Не я и не Exception так точно и не вспомнили :) 

//Обрабочик события Load:
        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.IsMdiContainer = true;
            Microsoft.Win32.RegistryKey rk = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey (Microsoft.Win32.RegistryHive.LocalMachine,Environment.MachineName);
            rk = rk.OpenSubKey ("SOFTWARE\\DOTNETAPP1");
            int Handle = Convert.ToInt32 (rk.GetValue (null));
            rk.Close();
            SetParent (Handle, this.Handle.ToInt32());
        }

//Добавляем:
 Form1.Load += New EventHandler (Form1_Load);


Сначала запускаем App1, потом App2, после чего App1 пропадет, и появится в App2. Если не будет его видно, то на полный экран App2 форму сделать надо.

Тока после эксперемента нужно делить HKEY_LOCAL_MACHINE => SOFTWARE => DOTNETAPP1, чтобы мусора в реестре было меньше. 

Это сообщение отредактировал(а) DarkDragon - 4.12.2006, 16:52
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.