Привет всем,
Помогите пожалуйста с ребусом..неделю не могу победить.
Есть окно приложения, на нем есть панель типа Canvas — в коде ниже фигурирует как myPanel
Задача найти окно запущенного рядом Notepad, сделать его дочерним окном моего приложения и вписать положение и размеры окна Notepad в поле занимаемое myPanel.
IntPtr hParent=Process.GetCurrentProcess().MainWindowHandle;
IntPtr hWnd = IntPtr.Zero;
foreach (Process pList in System.Diagnostics.Process.GetProcesses())
{
if (pList.MainWindowTitle.Contains("Notepad"))
{
hWnd = pList.MainWindowHandle;
}
}
SetParent(hWnd, hParent);
Point ptPanelOrigin = myPanel.PointToScreen(new Point(0, 0));
MoveWindow(hWnd, (int)ptPanelOrigin.X, (int)ptPanelOrigin.Y, (int)myPanel.ActualWidth, (int)myPanel.ActualHeight, true);
Для "захвата" и позиционирования окна Notepad использую функции WinApi.
Соответстветнно окно находится, дочерним делается, а вот с позиционирование и размерами беда. Никак он не хочет занимать нужное положение и размеры.
Всё время мимо панели. Всегда окно Notepad сдвинуто вниз и вправо и по ширине и высоте не совпадает с размерами панели.
Кодом я пытаюсь найти верхнюю левую точку панели, перевести её в координаты экрана и на эту точку сдвинуть левый верхний угол Notepad. Вроде очевидно всё..но не срабатывает.
где могут быть грабли?