用win32打开一个没有标题栏的窗口

ble*_*jzz 19 c++ windows win32gui winforms

我正在为Windows开发一个c ++应用程序.我正在使用win32 API.我有一个非常简单的问题,我无法找到答案.如何打开没有标题栏的窗口(没有控件,图标和标题),并且无法调整大小.

我用于创建窗口的应用程序的一段代码:

      hWnd = CreateWindow(szWindowClass, 0, (WS_BORDER ),
             0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL);
Run Code Online (Sandbox Code Playgroud)

更新:

要在c#中执行此操作,您只需定义以下代码:

 FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
 ControlBox = false;
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 20

hWnd = CreateWindow(szWindowClass, 0, (WS_BORDER ), 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL); 

SetWindowLong(hWnd, GWL_STYLE, 0); //remove all window styles, check MSDN for details

ShowWindow(hWnd, SW_SHOW); //display window
Run Code Online (Sandbox Code Playgroud)

  • 如果在 .NET (c#) 中可能比在 win32 (c++) 中可能。一个示例应用程序是系统音量(windows7) (3认同)
  • SetWindowLong(hwnd,GWL_STYLE,WS_BORDER | WS_THICKFRAME); SetWindowPos(hwnd,0,0,0,100,50,SWP_FRAMECHANGED); //重绘窗口ShowWindow(hwnd,SW_SHOW)的一些技巧; (2认同)
  • `SetWindowLong` 可以轻松删除。你可以使用 0 代替 `WS_BORDER`,但你可能想要 `WS_POPUP` 样式,因为 0 表示 `WS_OVERLAPPED`。如上面的评论中所述,添加`WS_THICKFRAME`样式以获得窗口周围的大小边框,否则窗口周围不会显示可见边框。 (2认同)

小智 5

HWND hWnd ;
hWnd = CreateWindow(szWindowClass, 0, (WS_BORDER ), 0, 0, 100, 100, NULL, NULL, Instance, NULL); 
SetWindowLong(hwnd, GWL_STYLE, WS_BORDER );  // With 1 point border
//OR
SetWindowLong(hwnd, GWL_STYLE, 0 );  // Without 1 point border = white rectangle 
SetWindowPos(hwnd, 0, 150, 100, 250, 250, SWP_FRAMECHANGED); 

if (!hWnd)
 return FALSE ;
else
ShowWindow(hwnd, SW_SHOW);
Run Code Online (Sandbox Code Playgroud)