我不知道这个标题对你们有没有意义,我的英语不是很好所以我会通过图片来解释我的问题(我没有足够的代表很抱歉)
所以在我的解决方案中我有 2 个项目:
我想做的是通过第一个“展示”我的第二个,就像这样:
我听起来像个菜鸟……但这可能吗?如果是,我该如何实现?
都是用C++写的
感谢您的帮助。
最佳答案
这是一个需要在合理篇幅内完整回答的复杂问题。所以我可以首先提供,保证这样做是可能的,其次,提供如何进行的大致轮廓。
根据您所需的集成级别,基本上有两种可能的方法: Windows 屏幕保护程序是独立的 exe 文件。尽管如此,它们仍可以将自己渲染到 Windows 的“预览”对话框中。 这是通过预览对话框启动的 screensaver.exe 实现的 - 它在命令行上传递其 HWND。
所以 - 为此,您需要做 3 件事
- 说服您的托管应用程序 (CocosHelper) 为您提供表单的 HWND,并使用包含该编号的命令行启动您的 cocos 应用程序。
- 在您的 cocos 项目中,您将转到您的 AppDelegate applicationDidFinishLaunching 实现,并从命令行检索 hwnd。
- 您将创建窗口 GLViewImpl 类的子类,它会在创建 OpenGL View 时将其父级设置为提供的窗口 - 您的 applicationDidFinishLaunching 方法将创建此子类 GLViewImpl 而不是基本的 cocos 版本。
下一个方法以此为基础,将 cocos 项目放入与宿主应用程序相同的进程空间 - 假设宿主应用程序是 win32 桌面应用程序。
- 创建第三个“CocosDllProject”作为“CocosProject”项目的克隆。将其更改为“动态库”而不是“应用程序”并删除“main.cpp”文件。
- 添加一个新的“CocosDllMain.cpp”文件并向其添加一个入口函数。 “RunCocos”之类的。确保此方法是从 dll 中导出的,并且它将具有先前“main”方法的内容,但它应该将 HWND 参数作为参数传递给(修改后的)AppDelegate。这将是父窗口。
- 将此dll作为依赖添加到其他项目中,并在适当的时候调用“RunCocos”。
关于c++ - 如何通过另一个应用程序 'show' 一个应用程序 (visual c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857446/