我不知道标题对你们是否有意义,我的英语水平不是很好,所以我将通过图像解释我的问题(我没有足够的代表,对此表示抱歉)

因此,在我的解决方案中,我有2个项目:

c++ - 如何通过另一个应用程序“显示”一个应用程序(Visual C++)-LMLPHP

我正在尝试做的是“显示”我的第二个到第一个,就像这样:

c++ - 如何通过另一个应用程序“显示”一个应用程序(Visual C++)-LMLPHP

我听起来像个菜鸟……但这有可能吗?如果是,我该如何实现?

两者都是用C ++编写的

谢谢您的帮助。

最佳答案

要在合理的空间内完全回答,这是一个复杂的问题。因此,我可以首先提供确保已完成此操作的保证,其次,可以提供如何进行的概述。

根据所需的集成级别,基本上可以采用两种方法:
Windows屏保是独立的exe文件。尽管如此,他们仍可以将自己呈现给Windows“预览”对话框。
这是通过预览对话框启动的screensaver.exe完成的-它在命令行上传递了其HWND。

所以-为此,您需要做3件事


说服您的托管应用程序(CocosHelper)为您提供该表单的HWND,然后使用包含该编号的命令行启动您的cocos应用程序。
在您的cocos项目中,您将转到您的AppDelegate applicationDidFinishLaunching实现,并从命令行检索hwnd。
您将创建Windows GLViewImpl类的子类,该子类-在创建OpenGL视图时,将其父级设置为提供的窗口-您的applicationDidFinishLaunching方法将创建此子类GLViewImpl而不是基本的cocos版本。


假设主机应用程序是Win32桌面应用程序,则在此基础上的下一种方法是将cocos项目置于与主机应用程序相同的处理空间中。


创建第三个“ CocosDllProject”作为“ CocosProject”项目的副本。将其更改为“动态库”而不是“应用程序”,然后删除“ main.cpp”文件。
添加一个新的“ CocosDllMain.cpp”文件,并向其添加一个入口点函数。 “ RunCocos”之类的东西。确保此方法是从dll导出的,并且具有以前的“ main”方法的内容,但应将传递给(修改的)AppDelegate的HWND参数作为参数。这将是父窗口。
将此dll作为依赖项添加到另一个项目,并在适当的时间调用“ RunCocos”。

关于c++ - 如何通过另一个应用程序“显示”一个应用程序(Visual C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32857446/

10-17 01:27