实现窗口屏幕居中的C++代码源码(考虑任务栏)

本篇文章属于《518抽奖软件开发日志》系列文章的一部分。

我在开发《518抽奖软件》(www.518cj.net)的时候,需要对话框居中的功能。对话框默认是居中的,但是要移动对话框到第二屏并居中,所以要自己实现代码。通过关键函数SystemParametersInfo~SPI_GETWORKAREA获得屏幕除任务栏外的区域。具体代码如下。

void Tfuns::center_box(HWND hDlg)
{
	RECT desk = { 0 };
	SystemParametersInfo(SPI_GETWORKAREA, 0, &desk, 0);
	int cx = desk.right - desk.left; 
	int cy = desk.bottom - desk.top;

	RECT rc = { 0 };
	GetWindowRect(hDlg, &rc);
	int wnd_w = rc.right - rc.left;
	int wnd_h = rc.bottom - rc.top;

	int x = (cx - wnd_w) / 2 + desk.left;
	if (x < 0) x = 0;
	int y = (cy - wnd_h) / 2 + desk.top;
	if (y < 0) y = 0;

	SetWindowPos(hDlg, NULL, x, y, 0, 0, SWP_NOSIZE);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值