Window:楼上清风

1、解决适配高DPI,导致UI无法只适应。

设置SetProcessDPIAware API告诉系统本进程是DPI感知会自适配DPI变化,系统不会对本进程创建的窗口进行自动放大。

HINSTANCE hUser32 = LoadLibrary(_T("user32.dll"));
if (hUser32)
{
  typedef BOOL(WINAPI* LPSetProcessDPIAware)(void);
  LPSetProcessDPIAware pSetProcessDPIAware = (LPSetProcessDPIAware)GetProcAddress(hUser32, "SetProcessDPIAware");
  if (pSetProcessDPIAware)
  {
	 pSetProcessDPIAware();
  }
  FreeLibrary(hUser32);
}
2、设置当前窗口焦点,置前。
HWND hwnd = FindWindow(_T("OsrWindow"), NULL);
::SetFocus(hwnd);
::SetForegroundWindow(hwnd);
3、禁止和启动当前窗口。
HWND hwnd = FindWindow(_T("OsrWindow"), NULL);
::EnableWindow(hwnd, FALSE); 启用:TRUE
4、WS_CLIPCHILDREN和WS_CLIPSIBLINGS。

WS_CLIPCHILDREN:主要是用于父窗口,也就是说当在父窗口绘制的时候,父窗口上还有一个子窗口,那么设置了这个样式的话,子窗口区域父窗口就不负责绘制。
WS_CLIPSIBLINGS:子窗口间相互裁减。也就是说当两个窗口相互重叠时,设置了WS_CLIPSIBLINGS样式的子窗口重绘时不能绘制被重叠的部分。

//子窗模式,解决重绘导致的问题,应用于CEF子窗模式。
HWND hWnd = CreateWindow(
		m_wstrWndName.c_str(),
		_T(""),
		WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
		0,
		0,
		800,
		800,
		GetWindow()->GetHWND(),
		NULL,
		hInstance,
		this);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拾荒的小海螺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值