GUI01-用C++在Windows桌面上打个叉❌

我们的目标是,只写一二十行代码,用 Windows自带的原生接口,强行在桌面上打个大红❌,如图:

写了大半年C++,天天和“黑乎乎” 的小窗口你侬我侬?赶紧来打开一扇“Windows”,从窗口跳进全新的GUI世界吧。

0. 视频

GUI01-在Windows桌面上打个大叉叉

1. 使用的 Windows API

1.1 GetSystemMetrics

说明:查询(检索)指定的 Windows (下同)系统的配置或度量。

在本例中,我们使用的 入参 nIndex 有两个:

  • SM_CXFULLSCREEN : 取主桌面的屏幕宽度;
  • SM_CYFULLSCREEN :取主桌面的屏幕高度。

注意:

  1. 如果有多个显示器,仅取主桌面;
  2. 经实测,宽度或高度不会包含任务栏。即:如任务栏布置为横向(常见:底部),则取桌面高度时,不含任务栏高度,如果任务栏布置为竖向,则取桌面宽度时,不含任务的宽度。

本课使用:

DesktopWidth = ::GetSystemMetrics(SM_CXFULLSCREEN);
DesktopHeight = ::GetSystemMetrics(SM_CYFULLSCREEN);

1.2 SetTimer

说明:设置一个定时器。

入参:

  1. hwnd:指定 定时器要绑定的窗口的句柄;该窗口可接收定时消息,也可指定为 nullptr,则定时器改为调用 lpTimerFunc: 指定的回调函数。
  2. nIDEvewnt:指定定时器事件编号;
  3. uElapse:指定定时间隔时长,单位为毫秒;
  4. lpTimerFunc :定时到点时,调用的函数;

本课使用:

::SetTimer(hwndDlg, ID_TIMER, 80 /*毫秒*/, OnTimer);

1.3 KillTimer

说明:通过指定窗口句柄和定时器事件编号,结束之前设置的定时器。

本课使用:

::KillTimer(hwndDlg, ID_TIMER);

1.3 GetDC

说明: 获取入参 hWnd 指定的窗口绘图用的设备上下文(Device Context);如 hWnd 为 nullptr,则返回整个屏幕的设备上下文。

注意: 使用完后,需调用 ReleaseDC() 归还。

本课使用:

auto hDC = ::GetDC(nullptr); // 得到主桌面的 DC (“画板”)

1.4 CreatePen

原型:

HPEN CreatePen(
  int      iStyle, // 画线风格
  int      cWidth, // 画线宽度
  COLORREF color   // 画线条颜色
);

说明:创建指定风格、宽度、颜色的笔资源。

参数:

  1. iStyle :支持: PS_SOLID(实线)、PS_DASH(虚线)、PS_DOT(点线)等风格;
  2. cWidth :宽度,单位为 象素;
  3. colro : 颜色,可使用宏 RGB(r, g, b) 组合 red、green、blue 三颜色的分量来创建不同颜色。

注意:
笔使用结束后,需及时调用 DeleteObject() 以释放所占用的资源。

本课使用:

//创建实线、宽10,红色的笔:
auto pen = ::CreatePen(PS_SOLID, 10, RGB(0xff, 0, 0)); 

1.5 更多 API

本课用到的全部 API 的详细说明,完整代码、完整项目文件下载,见 :

在Windows桌面上打个叉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南郁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值