2014-09-09 5 views
1

Раньше мы использовали usercontrols для отображения модальных диалогов. Теперь решили реализовать его как окно wpf. И у меня есть одна проблема. Я хочу установить родительский элемент окна в конструктор моего modaldialogwindow. Я знаю hwnd моего родительского окна (могу получить его по имени процесса) , и я не знаю, как получить hwnd дочернего окна (мой модальный диалог) в const.Установить родительское окно wpf

Или мне нужно SetParent для этого окна, как этот

var window = new ModalDialogWindow(Properties.Resources.ChangeLabelPartDialogTitle, ChangeLabelPartDialog); 
Setparent(Childhwnd,parenthwnd); 
      window.ShowDialog(); 

Но я не знаю, как получить HWND этого окна перед тем showdialog() методом

+0

Не могли бы вы добавить параметр в конструктор ModalDialogWindow передать в стоимости окна что порождает диалог? –

+1

Почему вы знаете hwnd? Вы можете установить владельца непосредственно из дочернего окна, установив его свойство Owner в родительское окно. –

+0

Это было первое решение. Но это не работает в нашей ситуации. У нас есть ситуация, когда модальный диалог потеряет родителя (владельца) , поэтому я решил использовать winapi – Aidanpraid

ответ

0

Handle родительского окна все, что вам нужно. Чтобы установить родительский для вашего диалогового окна вы можете использовать класс System.Windows.Interop.WindowInteropHelper, как показано в коде ниже:

public partial class ModalDialogWindow : Window 
{ 
    public ModalDialogWindow(IntPtr parentWindowHandle) 
    { 
     InitializeComponent(); 

     var interop = new WindowInteropHelper(this); 
     interop.EnsureHandle(); 
     // this is it 
     interop.Owner = parentWindowHandle; 
    } 
} 
Смежные вопросы