使用CreateWindowEx创建一个没有图标的窗口

Nea*_*l P 5 c windows winapi createwindow createwindowex

使用C#,我很容易就能得到我想要的效果:

标题栏中没有图标的标准窗口

然而,我无法做用下的Win32 API的,我不知道如何创建具有窗口同样的事情没有图标(在所有),但仍然有一个标题,最小化按钮,以及关闭按钮.

我正确地注册了我的课程,但我无法弄清楚要为窗口样式/扩展窗口样式添加什么.

static const TCHAR lpctszTitle[] = TEXT("Stuff"), lpctszClass[] =
  TEXT("StuffClass");

HWND hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST, lpctszClass,
  lpctszTitle, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
  CW_USEDEFAULT, 0, 250, 55, NULL, NULL, hThisInstance, NULL);
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了:

标准窗口标题栏中带有图标

它仍然在标题栏中有一个图标,而不是我想要的.

Cod*_*ray 7

标准窗口需要一个图标,因为它需要在屏幕底部的任务栏中使用某种形式的表示.如果其中一个主窗口没有图标,当你在窗口切换器中按Alt+ 时应该显示什么Tab

您需要指定WS_EX_DLGMODALFRAME扩展样式.当您关闭标题栏中的图标时,这与WinForms设置的效果相同.

需要确保你没有指定一个图标,当你注册窗口类.您需要将结构的hIconhIconSm字段设置WNDCLASSEX为0.

将您的代码更改为以下内容:

static const TCHAR lpctszTitle[] = TEXT("Stuff"), lpctszClass[] =
  TEXT("StuffClass");

HWND hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST, lpctszClass,
  lpctszTitle, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
  CW_USEDEFAULT, 0, 250, 55, NULL, NULL, hThisInstance, NULL);
Run Code Online (Sandbox Code Playgroud)