实质上不要说外部程度,便是不同的线程搞这种父子窗口嵌套齐容易出问题。平常的悉数窗口应当在团结个界面线程中 —— 这是基本游戏规章。
镶嵌外部程度窗口,用任何话语齐不是一个浅易的 setParent 不错处置的事情。分辩只是是 aardio 窗口会自相宜退换界面,这促使问题不错提前在莳植环境中被检测出来。要是你换一个编程话语而况浅尝辄止 —— 你可能发现不了着实的问题 。
就以镶嵌记事本窗口为例,咱们看一看 aardio 自带表率的开动遵循:
上头表率的源代码其实很浅易:
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=886;bottom=627;parent=...)
winform.add(
button={cls="button";text="点这里试试";left=554;top=561;right=801;bottom=620;color=14120960;db=1;dr=1;font=LOGFONT(h=-14);note="这点里操作记事本的裁剪框";z=2};
static={cls="static";left=46;top=22;right=854;bottom=542;db=1;dl=1;dr=1;dt=1;z=1}
/*}}*/
import news.bfgr5.cn winex;
import process;
process.executeWaitInput(" news.huanbaocl.com.cn notepad.exe");//开动记事本
var hwndNotepad,hNotepadEdit = winex.wait(,,"Notepad","<RichEditD2DPT>|<Edit>");//查找句柄
//悬浮影子窗口:外部程度窗口附加到 winform.static 并出入相随的自相宜缩放退换位置
winex.orphanWindow(winform.static,hwndNotepad)
//退出措施前让记事本退出
winform.onClose = news.hkdrama.cn function(hwnd,message,wParam,lParam){
if(!winex.closeAndWait(hwndNotepad)) return 1;
}
import winex.ctrl.edit;
var edit = news.3g210.cn winex.ctrl.edit(hNotepadEdit);
winform.button.oncommand = function(id,event){
edit.text="测试一下";
edit.print("测试调用函数",123,{ 1,2,3 })
}
winform.show();
win.loopMessage();
收货于 aardio 中强大的 orphanWindow,orphanWindow 在news.hubeisai.cn aardio 措施中是很常用的。你学习任何一门话语,这些基础且常用的控件功能齐需要有所了解,表率也需要望望。
aardio 中镶嵌外部程度窗口的库、表率其实极端多,举例 Electron 的表率便是镶嵌外部程度窗口,这个我也踩过不少坑,最难发现的是在一些电脑上平常,在一些电脑上出现不成输入,边框无法排斥等奇怪的问题,虽然这些问题最终 aardio 齐解决了。要是你念念要你写的措施莫得问题 —— 这齐需要履历艰苦的经过,不管用什么编程话语齐通常。
大略说你用非 Python 话语写的界面镶嵌一下 Python 用m.bfgr5.cn tkinter 杀青的界口试试你会碰到若干缺乏。aardio 作念这事很浅易:
一个更有趣有趣的例子是 MPlayer 视频播放器,这其实亦然调用 MPlayer.exe,看表率:
镶嵌 aardio 窗口中的遵循:
aardio 轨范库中的 web.view 镶嵌的 WebView2 —— 这其实亦然外部程度创建的窗口。
其实多望望表率,你会发现还有更多这么的好东西。
winex程度窗口记事本表率发布于:广东省声明:该文不雅点仅代表作家本东谈主,搜狐号系信息发布平台,搜狐仅提供信息存储空间奇迹。