很多文章介绍获取UE4主窗口都是通过GetActiveWindow或者FindWindow等方法,这种方法不是很方便,也不准确。
可以通过UEngine的Viewport获取NativeWindow来得到UE4的主窗口句柄,通过句柄可以调用WINAPI函数来修改窗口风格等。

调用Windows窗口函数需要包含以下头文件和编译模块。

引用头文件

#        include <windows/WindowsWindow.h>
#include "Windows/AllowWindowsPlatformTypes.h"
#       include <windows.h>
#       include <shellapi.h>
#include "Windows/HideWindowsPlatformTypes.h"

编译模块

添加"Slate", “SlateCore”, “ApplicationCore”

     PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Networking", "XmlParser", "Sockets", "CinematicCamera", "Slate", "SlateCore", "ApplicationCore" });

获取HWND

#if PLATFORM_WINDOWSTSharedPtr<FGenericWindow> NativeWindow = GEngine->GameViewport->GetWindow()->GetNativeWindow();auto Window = static_cast<FWindowsWindow*>(NativeWindow.Get());auto hWnd = Window->GetHWnd();
#endif // #if PLATFORM_WINDOWS

调用WINAPI函数

#if PLATFORM_WINDOWSTSharedPtr<FGenericWindow> NativeWindow = GEngine->GameViewport->GetWindow()->GetNativeWindow();auto Window = static_cast<FWindowsWindow*>(NativeWindow.Get());auto hWnd = Window->GetHWnd();SetWindowLongPtr(hWnd, GWL_STYLE, (LONG_PTR)style);SetWindowLongPtr(hWnd, GWL_EXSTYLE, (LONG_PTR)exstyle);
#endif // #if PLATFORM_WINDOWS

显示隐藏窗口

可以直接调用UEngine接口函数

  GEngine->GameViewport->GetWindow()->ShowWindow();GEngine->GameViewport->GetWindow()->HideWindow();

UE4 获取主窗口HWND和调用WINAPI函数相关推荐

  1. 进程相关(进程Id获取主窗口)

    1.知道进程handle 获取进程名称. PROCESS_INFORMATION* processInfo =(PROCESS_INFORMATION*)pid();    HANDLE hProce ...

  2. QT 如何获取主窗口的指针

    有时候需要获取主窗口指针,从而通过指针来使用其方法,详见代码: QMainWindow* getMainWindow() {foreach(QWidget *w, qApp->topLevelW ...

  3. Qt之如何获取主窗口的指针

    QMainWindow* getMainWindow() {foreach (QWidget *w, qApp->topLevelWidgets())if (QMainWindow* mainW ...

  4. python调用窗口_如何调用一个函数并在另一个窗口中打开?

    我用的是IDLE,但这应该足够让球滚动了.IDLE是在Windows上下载Python时随Python一起安装的IDE.您可以通过按Windows键并搜索空闲来打开它.在 这段代码很简单,但是它应该能 ...

  5. python 如何做密码对话框_Python GUI教程(八):在主窗口中调用对话框

    本篇将会介绍: 使用qt设计师创建两个窗口 转换设计师UI代码为Python代码 从主窗口中调用对话框窗口 一.创建两个窗口 根据本篇的最终目标--在主窗口中调用对话窗口,我们先使用qt设计师创建两个 ...

  6. QT应用程序-获取Application-获取主窗口指针-QT内嵌浏览器-QT菜单动作

    在编写QT程序时,有时需要获取主窗口程序指针和主窗口指针,方便控制界面,编写相应的逻辑,而QT则提供了类似的功能. 1.获取应用程序 qApp 宏就可以获取 QApplication 实例,只要使用了 ...

  7. 通过进程ID获得该进程主窗口的句柄

    一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的.所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程. typedef stru ...

  8. 《快速掌握PyQt5》第二十三章 主窗口QMainWindow

    第二十三章 主窗口QMainWindow 23.1 记事本应用 23.3 程序启动画面QSplashScreen 23.2 小结 <快速掌握PyQt5>专栏已整理成书出版,书名为<P ...

  9. WPF中任务栏只显示主窗口

    我们在用WPF开发的时候,常常会遇到在主窗口打开的情况下,去显示子窗口,而此时任务栏同时显示主窗口与子窗口.这样看起来很不美观.所以在弹出子窗口之前,设置它的几个相应属性,便不会出现这种问题了. 1 ...

最新文章

  1. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS
  2. Mac OS包管理器Homebrew
  3. 【CyberSecurityLearning 24】kali中间人攻击
  4. WebService开发
  5. 关于__attribute__ ((packed))
  6. 位图bitmap应用
  7. 转载! 一图读懂 SignalR
  8. java内存泄漏与内存溢出
  9. Spring WebSocket入门(一) 转载
  10. @Autowired与@Resource用法
  11. WIN7下 VS2008 无法调试ASP.NET
  12. JAVA实训心得体会(精选4篇)
  13. 2005年linux手机系统,2005年智能手机点评之其他操作系统篇
  14. 圣思园的随堂视频发布了
  15. 实用常识 | 写论文时如何引用插入脚注 / 如何自定义脚注符号 / 如何将多个脚注合并在一起
  16. 青岛市中小学学籍系统服务器,全国各省市中小学学籍网登录入口
  17. 【CPU设计实战】简单流水线CPU设计
  18. 不二少年在路上之兄弟连完美落地
  19. Thinkpad E470重装WIN7系统后,重启进入boot menu的问题
  20. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

热门文章

  1. 智能摄像头在智能家居应用中的利弊分析
  2. html按住语音如何看前面内容,单音语音内容.html
  3. 牛客小白月赛B JAVA大数或String
  4. 习题3-5 三角形判断
  5. str与__str__、repr与__repr__的关系
  6. Kubernetes Deployment控制器(二十)
  7. java 语言是跨平台的吗_java语言的跨平台特点是由什么保证的?有什么用吗?
  8. 互联网云厂商,打响能源TO B争夺战
  9. 阴阳师召唤式神app(安卓)
  10. 百度2015春季实习生招聘附加题