none
Отображение одного окна, в области другого RRS feed

  • Вопрос

  • Здравствуйте. Простите если буду формулировать свой вопрос некорректно, я пока только учусь. Такая ситуация: есть у меня два приложения, одно на DirectX а второе CLR. У второго приложения на форме есть панель. Как сделать так, чтобы первое приложение открывалось не как отдельная форма, а внутри второго (внутри панели)? Спасибо. Язык Visual C++.
    19 декабря 2014 г. 17:50

Ответы

  • Нужно использовать функцию SetParent.

    Что-то вроде:

    Process^ p = Process::Start("notepad.exe");
    p->WaitForInputIdle();
    SetParent(p->MainWindowHandle, panel1->Handle);

    Только нужно скастовать правильно к HWND в последней строке. Я знаю как это сделать в C#, а с C++/CLI разбирайтесь сами.

    19 декабря 2014 г. 19:25

Все ответы

  • Нужно использовать функцию SetParent.

    Что-то вроде:

    Process^ p = Process::Start("notepad.exe");
    p->WaitForInputIdle();
    SetParent(p->MainWindowHandle, panel1->Handle);

    Только нужно скастовать правильно к HWND в последней строке. Я знаю как это сделать в C#, а с C++/CLI разбирайтесь сами.

    19 декабря 2014 г. 19:25
  • Уважаемый Леонтий. Вы задаете уже не первый вопрос в форуме, но, к сожалению, оставляете созданные Вами темы без внимания. Данный форум используется другими пользователями для поиска ответов на вопросы. Поэтому, если Вы получили ответ на Ваш вопрос, закрывайте тему имеющимися для этого способами.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    19 декабря 2014 г. 22:12
  • А как я должен закрывать тему, если ответа я так и не получил?
    20 декабря 2014 г. 17:27
  • А Вы посмотрите список Ваших тем. Что-то "висит" уже много времени без Вашего ответа, а что-то закрыто модераторами, но не Вами. Еще раз напоминаю: общение в форуме предполагает взаимность, а не только потребление :)

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    20 декабря 2014 г. 17:37
  • Я бы и рад помочь, да только знаю ещё маловато)
    20 декабря 2014 г. 17:51
  • Так что именно у вас не получается? Приведение типов? Подключение библиотек или пространств имён?
    20 декабря 2014 г. 19:06
  • Мне нужно чтобы объяснили принцип работы и если можно несколько строчек примера.
    20 декабря 2014 г. 19:20
  • Мне нужно чтобы объяснили принцип работы и если можно несколько строчек примера.
    Process^ p = Process::Start("notepad.exe"); // запускаем приложение
    p->WaitForInputIdle(); // дожидаемся пока процесс полностью запустится
    SetParent(p->MainWindowHandle, panel1->Handle); // устанавливаем для главного окна приложения нового родителя - панель

    Это весь пример.

    Хотите чего-то больше - хотя бы укажите тип вашего приложения.

    20 декабря 2014 г. 19:36
  • Я понял!) Пришлось ещё пообитать на сайте документации, но дошло наконец) Это оказывается MDI формы называется, хотя надо признать - это немного не то, однако теперь попробую пойти в этом направлении.

    21 декабря 2014 г. 3:18