SetWindowPos函数

SetWindowPos函数

定义:更改子窗口、弹出窗口或顶级窗口的大小、位置和 Z 顺序。 这些窗口根据其在屏幕上的外观进行排序。 最上面的窗口接收最高排名,是 Z 顺序中的第一个窗口。

提示:此函数是bool类型的

这个函数对于我们最大的作用就是置顶

当然,也有很多博主有其它很好的方法,这里就不介绍了

语法:

BOOL SetWindowPos(
   HWND hWnd,       // 要移动的窗口句柄
   HWND hWndInsertAfter, // 插入位置的新窗口句柄,如果为NULL,则置于顶层
   int X,           // 新左上角坐标X
   int Y,           // 新左上角坐标Y
   int cx,          // 新宽度
   int cy,          // 新高度
   SWP flags        // 操作标志
);

其中参数含义如下:

  • hWnd: 需要改变位置的窗口的句柄。
  • hWndInsertAfter: 如果非空,新窗口将插入此窗口之后;如果是NULL,则放置到所有窗口之上。
  • X 和 : 窗口的新左上角坐标。Y
  • cx 和 : 新窗口的尺寸。cy
  • SWP 参数是一个枚举,可以指定如是否更改大小、是否重叠另一个窗口等操作。

常见的值有:SWP

  • SWP_NOSIZE : 不改变窗口大小。
  • SWP_NOMOVE : 不改变窗口位置。
  • SWP_NOZORDER : 不改变窗口的堆叠顺序。
  • SWP_FRAMECHANGED : 如果窗口大小或位置改变了,那么其边框会更新。

可以这么写:

SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

获取句柄不会的可以看上一章

而这次,究极无敌恶心的来了:

我们不把自己的运行框隐藏,因为大概率关不掉,但是,不隐藏依旧可以轻松解决。

所以,我们只需要让这个置顶就可以了

#include <windows.h> 
#include<bits/stdc++.h>
using namespace std;
int main()
{
    HWND hwnd=GetForegroundWindow();
    ShowWindow(hwnd,SW_HIDE);
    while(1)
    {
        SetCursorPos(rand()%1000,rand()%1000);
        SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
    }
}

当然,这样的话还不够,我们还可以加一些嘲讽的东西

#include <windows.h> 
#include<bits/stdc++.h>
using namespace std;
int main()
{
    HWND hwnd=GetForegroundWindow();
    ShowWindow(hwnd,SW_HIDE);
    while(1)
    {
        SetCursorPos(rand()%1000,rand()%1000);
        SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
        cout<<"       **********          "<<'\n';
        cout<<"     **************        "<<'\n';
        cout<<"    ****************       "<<'\n';
        cout<<"     **************        "<<'\n';
        cout<<"      **********           "<<'\n';
        cout<<"      *****                "<<'\n';
        cout<<"      *****            ****"<<'\n';
        cout<<"     ******************    *"<<'\n';
        cout<<"     ****              ****"<<'\n';
        cout<<"     ******************    *"<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****************      "<<'\n';
        cout<<"     ****           *      "<<'\n';
        cout<<"     ************   *      "<<'\n';
        cout<<"                *   *      "<<'\n';
        cout<<"                *   *      "<<'\n';
        cout<<"                *   *      "<<'\n';
        cout<<"                *** ***    "<<'\n';
        Sleep(0.0001);
        system("cls");
        cout<<"       **********          "<<'\n';
        cout<<"     **************        "<<'\n';
        cout<<"    ****************       "<<'\n';
        cout<<"     **************        "<<'\n';
        cout<<"      **********           "<<'\n';
        cout<<"      *****            ****"<<'\n';
        cout<<"      *****    ********    *"<<'\n';
        cout<<"     **********        ****"<<'\n';
        cout<<"     ****      ********    *"<<'\n';
        cout<<"     **********            "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****                  "<<'\n';
        cout<<"     ****  ********            "<<'\n';
        cout<<"     ******        *         "<<'\n';
        cout<<"     ****           *      "<<'\n';
        cout<<"     ****  ******    *      "<<'\n';
        cout<<"     ******    *    *      "<<'\n';
        cout<<"              *    *      "<<'\n';
        cout<<"             *    *      "<<'\n';
        cout<<"            *    *    "<<'\n';
        cout<<"            ***  ***    "<<'\n';
        Sleep(0.0001);
        system("cls");
        SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
    }
}

加什么完全是个人喜好的问题,可以随意选择

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值