关于orphanWindow(true)脱离父窗口之后遇到的一个问题及解决办法

By admin at 2018-10-16 • 0人收藏 • 1552人看过

GIF.gif

环境:

问题1:

1, 主界面中有一个custom控件

2,上面的custom加载一个winfrom

3,这个winform中有一个plus控件, 这个plus控件利用orphanWindow(true)脱离父窗口


此时,运行界面之后,点击最小化 , 窗口最小化,但是这个plus却还在原地.


解决办法:

参考了shadow库里的写法, 增加winform.wndproc() 消息处理, 拦截窗口最小化和其他最大化,还原等指令, 使这个plus处于hide的两个状态即可.

这里需要注意, 需要拦截的消息为mainform这个第一层界面的消息, 所以, 需要对parent进行判断.

方式一: 自己判断父子关系

if(winform.parent){
	winform.parent.wndproc = function(hwnd,message,wParam,lParam){
		select( message ) { 
			case 0x18/*_WM_SHOWWINDOW*/ {
				winform.plus.hide = false; 
			}
			case 0x5/*_WM_SIZE*/{
				if( wParam == 0x1/*_SIZE_MINIMIZED*/ ) winform.plus.hide = true;
				else winform.plus.hide = false;
			}
			else{
				
			}
		}
	}	
}

方式二:直接处理mainform消息

	mainForm.wndproc = function(hwnd,message,wParam,lParam){
		select( message ) { 
			case 0x18/*_WM_SHOWWINDOW*/ {
				winform.plus.hide = false; 
			}
			case 0x5/*_WM_SIZE*/{
				if( wParam == 0x1/*_SIZE_MINIMIZED*/ ) winform.plus.hide = true;
				else winform.plus.hide = false;
			}
			else{
				
			}
		}
	}	

这两个效果都一样.....

相当来说, 我更倾向于第二种办法, 简洁不出错.哈

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...