如何使用OpenGL画布在另一个程序中创建子窗口? 我在C++开发了一个第三方程序的插件,需要用OpenGL显示一个窗口。我想直接在Win32中编程(即不使用MFC或其他包装器)

如何使用OpenGL画布在另一个程序中创建子窗口? 我在C++开发了一个第三方程序的插件,需要用OpenGL显示一个窗口。我想直接在Win32中编程(即不使用MFC或其他包装器),c++,winapi,opengl,C++,Winapi,Opengl,我下载、编译并在我的机器上成功运行了它 然而,这是一个主程序,它循环并调用PeekMessage,如果有任何消息,则调用TranslateMessage和DispatchMessage,如果没有,则重新绘制OpenGL 我想“生成”一个Win32 OpenGL窗口,然后将控制权返回给第三方程序: void DisplayOpenGLWindow_ButtonPressed() { CreateWindowEx(...); InitOpenGL(...); return; } 但是我如何让

我下载、编译并在我的机器上成功运行了它

然而,这是一个主程序,它循环并调用PeekMessage,如果有任何消息,则调用TranslateMessage和DispatchMessage,如果没有,则重新绘制OpenGL

我想“生成”一个Win32 OpenGL窗口,然后将控制权返回给第三方程序:

void DisplayOpenGLWindow_ButtonPressed() {
 CreateWindowEx(...);
 InitOpenGL(...);
 return;
}
但是我如何让新窗口重新绘制OpenGL场景呢? 我尝试在回调函数中添加对重画OpenGL的调用:

case WM_PAINT:
{
   DrawGLScene();   
   return 0;
}
但这是行不通的;
即使透明的颜色是黑色,窗口也是全白色的。调整窗口大小和移动窗口都没有帮助。

答案会很大,因此我建议您阅读一些教程:)

链接:

Nehe主要使用Win32 api,因此要查找MFC教程/文章


另一件事:尝试在现代opengl版本3上使用fucus。及以上。

谢谢!看起来是个好的开始。你为什么不想用包装纸呢?我强烈建议您使用或类似的工具来为您做这类事情。