ShowWindow 函数

ShowWindow 用法

ShowWindow(窗口句柄,状态代码);

例如:

ShowWindow(12345,2);//最大化句柄号为12345的窗口,并激活
ShowWindow(FindWindow("ConsoleWindowClass",argv[0]),0);//隐藏当前窗口

如果要查找当前窗口句柄,可以使用:

FindWindow("ConsoleWindowClass",argv[0])
//C,C++,VB等语言有效

ShowWindow 例程

函数模板

ShowWindow(
  hWnd: HWND;       //要显示的窗口的句柄
  nCmdShow: Integer //选项, 参加下表
): BOOL;

nCmdShow参数可选值

SW_HIDE            = 0;  {完全隐藏,任务栏没图标}
SW_NORMAL =SW_SHOW = 1;  {最近的大小和位置显示,并激活}
SW_SHOW            = 5;  {最近的大小和位置显示,并激活}
SW_SHOWNOACTIVATE  = 4;  {最近的大小和位置显示,不激活}
SW_SHOWMINIMIZED   = 2;  {最小化, 激活}
SW_SHOWMAXIMIZED   = 3;  {最大化, 激活}
SW_MAXIMIZE        = 3;  {最大化, 不激活}
SW_MINIMIZE        = 6;  {最小化, 不激活}
SW_SHOWMINNOACTIVE = 7;  {同 SW_MINIMIZE}
SW_SHOWNA          = 8;  {同 SW_SHOWNOACTIVATE}
SW_RESTORE         = 9;  {初始的大小和位置显示}

返回值:

如果窗口以前可见,则返回值为非零。如果窗口以前被隐藏,则返回值为零。

删掉窗口按钮防止被误关

让关闭按钮失效

#include <Windows.h>
#include <stdio.h>
 
void main()
{
    DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
    DrawMenuBar(GetConsoleWindow());
    // 上面两句也可以换成
    // EnableMenuItem(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_GRAYED);
    printf("关闭按钮按不了了\n");
    system("pause");
}

隐藏关闭按钮

#include <Windows.h>
#include <stdio.h>
 
void main()
{
    HWND hwnd = GetConsoleWindow();
    LONG Style;    //窗口风格
    Style = GetWindowLong(hwnd, GWL_STYLE);   // 得到窗口风格   
    Style = Style & ~WS_CAPTION;             //去掉标题栏
    SetWindowLong(hwnd, GWL_STYLE, Style);     //为窗口设置新的风格
    printf("关闭按钮不见了\n");
    system("pause");
}

隐藏C++控制台窗口方法

方法一:查找窗口并隐藏

#include <windows.h>
int main(int argc,char *argv[])
    {
    /* 隐藏窗口前执行的代码 */
    ShowWindow(FindWindow("ConsoleWindowClass",argv[0]),0); //查找窗口隐藏自身 ..
    /* 隐藏窗口后执行的代码 */
    return 0;
    }

方法二:程序前加入代码

#ifdef _MSC_VER
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#endif
#include <windows.h>

例如:

#ifdef _MSC_VER
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#endif
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
    cout<<"Hello world!"<<endl;
    ::MessageBox(NULL , "" , "" , 0); //暂停程序,就可以在任务管理器看这个我们的程序是运行了!
    return 0;}

方法三:修改程序入口

建立Win32工程,自己改成WinMain接口

//--------------程序主体运行部分--------------
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    cout<<"Hello world!"<<endl;
    ::MessageBox(NULL , "" , "" , 0);
    //暂停程序,就可以在任务管理器看这个我们的程序是运行了!
    return 0;}
//--------------程序主体运行部分--------------

//--------------修改程序入口代码--------------
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    main();
    return 0;
}
//--------------修改程序入口代码--------------
Last modification:April 4, 2023
If you think my article is useful to you, please feel free to appreciate