将Unreal4打包后的工程嵌入到Qt或者桌面中
#include "widget.h"
#include "ui_widget.h"
#include "windows.h"
#include <QWindow>
#include <QProcess>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
} //网上找到的把窗体嵌入桌面的函数
static BOOL enumUserWindowsCB(HWND hwnd,LPARAM lParam)
{
long wflags = GetWindowLong(hwnd, GWL_STYLE);
if(!(wflags & WS_VISIBLE)) return TRUE;
HWND sndWnd;
if( !(sndWnd=FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL)) ) return TRUE;
HWND targetWnd;
if( !(targetWnd=FindWindowEx(sndWnd, NULL, L"SysListView32", L"FolderView")) ) return TRUE; HWND* resultHwnd = (HWND*)lParam;
*resultHwnd = targetWnd; return FALSE;
}
//网上找到的把窗体嵌入桌面的函数
HWND findDesktopIconWnd()
{
HWND resultHwnd = NULL;
EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd);
return resultHwnd;
} void Widget::on_pushButton_clicked()
{
HWND hwnWindow=FindWindow(NULL,L"DemoGame");
HWND desktopHwnd=findDesktopIconWnd(); QWindow *window=QWindow::fromWinId((WId)hwnWindow); // //将窗口嵌入到桌面上
// LONG styleValue=GetWindowLong(hwnWindow,GWL_STYLE);
// styleValue&=~WS_CAPTION;
// SetWindowLong(hwnWindow,GWL_STYLE,styleValue);
// SetParent(hwnWindow,desktopHwnd); // //嵌入Qt窗口
// SetParent(hwnWindow,(HWND)QWidget::winId());
// window->showFullScreen(); //嵌入Qt窗口,需要设置焦点让Ue4接受按键事件
QWidget *windowWidget=QWidget::createWindowContainer(window);
ui->verticalLayout->addWidget(windowWidget);
windowWidget->setFocusPolicy(Qt::StrongFocus);
windowWidget->setFocus();
windowWidget->grabKeyboard();
windowWidget->grabMouse();
this->setFocusPolicy(Qt::ClickFocus); }
中间2个函数是用于查找桌面句柄的,另外2块注释的地方分别是,将打包工程嵌入到桌面、嵌入到Qt窗口的代码。
嵌入到Qt窗口有2种思路:1、直接使用WinAPI将窗口直接嵌入,缺点:你需要自己编写移动、Layout之类的调整代码。
2、使用createWindowContainer,将窗口作为QWidget嵌入,缺点:默认Widget会屏蔽掉按键事件,所以需要让其取得,也就是说需要完善好这一方面的逻辑。
本文有了更新 :https://www.cnblogs.com/blueroses/p/9151094.html
将Unreal4打包后的工程嵌入到Qt或者桌面中的更多相关文章
- 对《将Unreal4打包后的工程嵌入到Qt或者桌面中》一文的补充
在上一文中本人尝试将Ue4嵌入到Qt中,但依然有一些问题没有去尝试解决.今天因为帮助知乎专栏作者@大钊的关系,顺便进行补完. 2018.7.18更新: 正好在参加杭州UnrealCircle的时候见到 ...
- 当碰到需要调试打包后的js
在react中经常开发碰到不能热更中进行调试的,如IE之类的 这个时候我们就需要打包才能运行看到效果, 但是往往每次打包都需要很长的时间: 这个时候我们就可以直接找到打包后的文件,直接在改文件中修改: ...
- ActiveX控件打包、签名、嵌入详解
ActiveX控件打包.签名.嵌入详解 前言 在我们的一个项目中,使用到了大华网络监控摄像头枪机,网络上下载了其ActiveX插件,但是发现其所提供的类库没有打包处理.这就导致我们每次给用户安装的时候 ...
- Xcode: Run Script 的运用, 使build打包后自动+1
背景: 每次打包都要build+1处理,比较麻烦,使用 Run Script 的运用使build打包后自动+1 0. 使用xcode 添加run Script 然后就可以添加Run Script了 1 ...
- vue打包后js和css、图片不显示,引用的字体找不到问题
vue打包后js和css.图片不显示,引用的字体找不到问题:图片一般都是背景图片. 一.vue打包出现js和css不显示问题: 1.不使用mode:'history' 2.使用mode:'histor ...
- Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法
原文:Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法 前几个月使用Advanced Installer 打包了一堆安装包,其中有使用默认主题的,也有根据 ...
- 提高首屏页面加载速度,解决vue-cli打包后单个文件过大的问题
本教程是针对vue-cli3以上的版本,其实原理都大同小异,这个demo为vue-cli直接创建的项目,并在main.js中引入了echart.element-ui.lodash 首先看demo打包后 ...
- IDEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在问题处理
公司新项目需使用java技术栈,便使用IDEA搭建了一个多SpringBoot项目的聚合工程,因为初次使用,遇到了很多问题,maven打包时各种报错,在网上查了好多终于解决了,为巩固记忆,特作此记录. ...
- 简要分析webpack打包后代码
开门见山 1.打包单一模块 webpack.config.js module.exports = { entry:"./chunk1.js", output: { path: __ ...
随机推荐
- Python-pandas
Python-pandas Python 中处理时间序列的主要工具是 pandas 库. 1.pannas 基础 1.1使用 DataFrame 类的第一步 #!/etc/bin/python #co ...
- JSP页面元素构成
1.page指令 <%@ page 属性1="" 属性2="" 属性3=""> <%@ page language=&qu ...
- Libvlc API 简单说明 [转]
Libvlc API 简单说明 原文来自http://www.xuebuyuan.com/1519616.html libvlc_instance_t* libvlc_new(int argc, co ...
- yii2图片处理扩展yii2-imagine的使用
示例控制器: <?php /** * 图片常用处理 * * 需要 yii/yii2-imagine 的支持 * php composer.phar require --prefer-dist y ...
- C# I/O
获取运行时的动态目录 private static string GetDataDir_Data() { var parent = Directory.GetParent(Directory.GetC ...
- log4net 添加日志
1. 在config里配置一下 <configSections> <section name="log4net" type="System.Co ...
- 关于httpd服务的安装、配置
httpd是Apache超文本传输协议(HTTP)服务器的主程序.通常,httpd不应该被直接调用,而应该在linux系统中由 apachectl 调用.接下来我们将了解有关httpd服务的安装与配置 ...
- 转行进入IT前端,目标全栈
选择进入IT这个行业,未来充满着挑战,未来充满着机遇,互联网已经走入高速稳定的发展正轨了,前端大时代也已经到来了.前端之路怎么走,前端需要不停地学习新知识,跟紧时代的步伐,成为全栈工程师是前端的目标. ...
- 【http】四种常见的 POST 提交数据方式
来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...
- html中嵌入swf文件的几种方法
转自:http://blog.163.com/yuki_1154/blog/static/7120277120126109315935/ 找了很久终于找到一个比较全面的: 1. object + em ...