Как сделать форму topmost только для приложения?
Я делаю надстройку excel, в которой при нажатии на пункт меню или кнопку панели инструментов открывается форма. Я установил верхнюю форму в true, но она остается Верхней для всех приложений windows xp. Мне просто нужно оставаться на вершине только для Microsoft Excel.
Я выбрал проект в Visual Studio 2008, в Excel - > 2003.
пожалуйста, скажите мне, как это сделать любым способом ........
2 ответов
вы можете установить владельца формы в качестве окна Microsoft Excel. В Windows принадлежит windows всегда отображаются над их владельцем. Диалоги и такие вещи, как окно поиска в Excel, принадлежат windows, что позволяет им отображаться над их владельцем.
есть несколько способов, которыми вы можете установить родителя формы:
- на форма.Владелец свойство (хотя владельцем должна быть другая форма)
- использовать форма.Показать (владелец IWin32Window) перегрузка. (См. блоге Как перевести оконную ручку в IWin32Window).
- использовать SetWindowLong() с параметром GWLP_HWNDPARENT.
- использовать ShowDialog () как предложил Микаэль Свенсон.
Это требует, чтобы вы знали дескриптор окна приложений Excel.
[Edit-changed code]
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
void func()
{
Form1 f = new Form1();
SetParent(f.Handle, (IntPtr)ThisAddIn.ExcelApplication.Hwnd);
f.Show();
}