Есть ли способ проверить, имеет ли форма Границу формы? (ручкой)
Я хочу проверить, имеет ли форма Границу формы по ее дескриптору. И ручка из другого приложения.
Как я могу справиться с этим? Пожалуйста, помогите мне.. Спасибо!
2 ответа
Решение
[DllImport("user32.dll")]
extern static int GetWindowLong(IntPtr hWnd, int nIndex);
const int GWL_STYLE = -16;
const int WS_BORDER = 0x00800000; // thin border
const int WS_THICKFRAME = 0x00040000; // sizing (thick) border
public static bool NativeWindowHasBorder(IntPtr hWnd)
{
return (GetWindowLong(hWnd, GWL_STYLE) & (WS_BORDER | WS_THICKFRAME)) != 0;
}
Control
Сами на самом деле не имеют ручки. Control.Handle
на самом деле возвращает родительское окно .Handle
,
Из MSDN дляControl.Handle
:
Получает дескриптор окна, с которым связан элемент управления.
Если вы посмотрите на декомпилированный источник для Control
, вот увидишь:
internal IntPtr HandleInternal
{
get
{
return this.window.Handle;
}
}
редактировать
То, что я сказал выше, совершенно неверно. Я оставляю это ради истории.
Это можно легко доказать, поставив Button
на Form
и глядя на IntPtr Handle
ценность для них. Они разные.