2016-09-29 5 views
0

私は、アプリケーションウィンドウを私のWindowsフォームアプリケーションに埋め込みしようとしています。テスト目的のために、私はメモ帳を使用しました。私は、以下のものを使用して、私のパネルにそれを埋め込むています:アプリケーションウィンドウがパネル中央に配置されていません(C#フォーム)

[DllImport("user32.dll")] 
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

結果はメモ帳が私のパネルに埋め込まれていることですが、それは右に外れどこかにある

public Form1() 
    { 
     InitializeComponent();  

     Process p = Process.Start("notepad.exe"); 
     Thread.Sleep(100); 
     SetParent(p.MainWindowHandle, panel1.Handle);   
    } 

。メモ帳の左上がパネルの左上隅に揃うように中央に配置されていません。私はそれを整列するためにノートパッドをドラッグして移動することができますが、私はそれを自動的にしたいです。

アンカー、ドック、マージン、パディングの設定で試してみましたが、実際には何もしませんでした。私は間違って何をしていますか?

+3

は、このヘルプをしていますか? http://stackoverflow.com/questions/3032246/c-sharp-open-process-and-changing-window-position – PaulF

+0

それがあります。ありがとう。 – trycatch22

答えて

1

まず、あなたがしようとしているのは完全に非標準的なもので、成功の保証はありません。アプリケーションは、そのウィンドウが最上位の親なしのウィンドウであるという事実に非常に頼っているかもしれません。

実験を主張する場合は、パネルのクライアント領域のRECTを取得し、ゲストアプリケーションのウィンドウでSetWindowPos()を呼び出して適切な場所に配置する必要があります。

(問題が解決しない場合、あなたはまた、座標をマップするためにMapWindowRect()を起動する必要があるかもしれません。しかし、これはおそらく必要とするべきではありません。)

関連する問題