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

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

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{
				
			}
		}
	}	

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

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

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...