Win32中设置窗体失去焦点,并重新获取焦点

因为项目需求,在打开新窗体的同时,需要之前窗口不可被点击,但是最好不要消失,找了很久找到了一种方法:

	//找到窗口属性
	LONG   dwNewLong = GetWindowLong(hWndMain, GWL_EXSTYLE);
	//隐藏窗口
	dwNewLong |= WS_EX_TRANSPARENT | WS_EX_LAYERED;
	SetWindowLong(hWndMain, GWL_EXSTYLE, dwNewLong);
	//显示窗口
	//dwNewLong ^= WS_EX_TRANSPARENT | WS_EX_LAYERED;
	//SetWindowLong(hWndMain, GWL_EXSTYLE, dwNewLong);

这里的原理是将hWndMain窗口屏蔽掉鼠标和键盘的响应,但是保留在桌面最底层,相当于嵌入了桌面背景
如果再次调用显示窗口的函数可将其激活

你可能感兴趣的:(c++)