c - 有没有更好的方法来删除标题栏上的所有三个按钮并使用 Windows API 删除滚动条?

标签 c winapi button console-application mingw32

列出了到目前为止我在“Windows 7”中使用的删除标题栏上所有三个按钮并删除滚动条的代码:

#define WINVER 0x0501 // WinXP and UP
#include <windows.h>

int main ( void ) 
{
     //Get a console handle
     HWND ConsoleWindow = GetConsoleWindow();

     //Change Settings
     SetWindowLong (ConsoleWindow, GWL_STYLE, WS_THICKFRAME);
     SetWindowLong (ConsoleWindow, GWL_STYLE, WS_CAPTION);
     SetWindowPos  (ConsoleWindow, HWND_TOPMOST, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_SHOWWINDOW);

     //Resize
     system ("mode con cols=75 lines=50");
     system ("pause>nul");
     return 0;
}

编译命令:

mingw32-gcc.exe -c "Console_Graphing_10.c" -o "Console_Graphing_10.o"
mingw32-gcc.exe -o "Console_Graphing_10.exe"  "Console_Graphing_10.o"

但这无法删除标题栏上的所有三个按钮,也无法删除“Windows XP”中的滚动条

有没有更好的代码来实现这个目标?谢谢。

最佳答案

你可以试试这个:

#define WINVER 0x0501 // WinXP and UP
#include <windows.h>

int main ( void ) 
{
  LONG style;
  HWND ConsoleWindow;

  ConsoleWindow = GetConsoleWindow();

  style = GetWindowLong(ConsoleWindow, GWL_STYLE); 
  style &= ~( WS_MINIMIZEBOX | WS_SYSMENU ); 
  SetWindowLongPtr(ConsoleWindow, GWL_STYLE, style);

  SetWindowPos(ConsoleWindow, NULL, 0, 0, 0, 0, SWP_FRAMECHANGED |
  SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);

  system ("pause>nul");
  return 0;
}

所有按钮都将被删除:

enter image description here

关于c - 有没有更好的方法来删除标题栏上的所有三个按钮并使用 Windows API 删除滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126202/

相关文章:

arrays - 以编程方式在数组中设置按钮标题

c - C 中的段错误。适用于主要功能但不适用于我的功能

c - fork() 系统调用的工作原理

c - 为什么 Windows CreateFile(<no share access>) 对我撒谎?

api - 访问SysTreeView32的子节点

firefox - 如何将下拉菜单添加到 Firefox 插件 sdk 支持的插件工具栏按钮?

C:一次维护N个并发pthread,进行M>>N个独立计算

c - 发送信号后,waitpid停止等待

c - c 中的异步 io 使用 windows API : which method to use and why does my code execute synchronous?

Flutter onPressed 函数