WinApi - 如何修改控制台窗口?

时间:2013-08-05 09:08:17

标签: winapi console window

我希望修改控制台窗口。我拿到了手柄。 this有助于改变它。但我怎么能

  • 删除关闭按钮
  • 删除最大化按钮
  • 删除图标
  • 禁用调整大小

// C# syntax
StringBuilder buffer = new StringBuilder(260);
IntPtr window = FindWindow(null, buffer.ToString(0, GetConsoleTitle(buffer, buffer.Capacity)));

uint a = (uint)((WS_BORDER | WS_CAPTION) & (~WS_ICONIC));
SetWindowLongPtr(window, -16, new IntPtr(a)); // GWL_STYLE = -16

由于某种原因,此次通话后窗口被打破。我不能再用鼠标移动它,所有点击都会通过鼠标移动到其他窗口。

1 个答案:

答案 0 :(得分:2)

您移除了所有窗口样式,并仅添加了WS_BORDERWS_CAPTION。你应该做的是:

  1. 通过调用GetWindowLongPtr
  2. 读取当前窗口样式
  3. 按位AND逐位取消要删除的样式。
  4. 通过调用SetWindowLongPtr
  5. 设置窗口样式