如何关闭窗口的WS_CAPTION样式(使用user32.dll)?

时间:2009-09-13 07:08:38

标签: c# user32

我将第三方应用程序嵌入到C#Windows窗体的面板中(使用来自user32.dll的SetParent)。我需要关闭标题栏窗口样式WS_CAPTION,使其看起来像托管应用程序的一部分。

如何更改窗口的样式以实现此目的?

例如,假设_hWnd是要嵌入的应用程序的句柄。

4 个答案:

答案 0 :(得分:2)

如果内存服务,你可以在样式上执行GetWindowLong,对该值执行| = ~WS_CAPTION,然后使用SetWindowLong。请参阅MSDN中的那些API。

另见:http://www.codeguru.com/forum/showthread.php?t=352963

答案 1 :(得分:1)

SetWindowLong(_ hWnd,GWL_STYLE,GetWindowLong(_ hWnd,GWL_STYLE)& ~WS_CAPTION);

答案 2 :(得分:1)

答案 3 :(得分:0)

使用GetWindowLong检索窗口样式,屏蔽WS_CAPTION位,然后使用SetWindowLong设置更新的样式:

var style = GetWindowLong(_hWnd, GWL_STYLE);
SetWindowLong(_hWnd, GWL_STYLE, style & ~WS_CAPTION);

并使用以下帮助程序代码:

const int GWL_STYLE = -16;
const int WS_CAPTION = 0x00C00000;

[DllImport ("user32")]
private static extern int GetWindowLong(System.IntPtr hwnd, int nIndex);

[DllImport ("user32")]
private static extern int SetWindowLong(System.IntPtr hwnd, int index, int newLong);