我在GLFW3 documentation中寻找本机API访问以获取HWND,但它不在我的GLFW/glfw3.h文件中。是否有任何#define可以由编译器找到?我也无法使用text-finder在文件本身中手动找到它,那么如何获得它?

PS。我无法标记glfw3

编辑:

码:

#define GLFW_INCLUDE_GLU

#define GLFW_EXPOSE_NATIVE_WGL
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GL/GLFW/glfw3native.h>
#include <GL/GLFW/glfw3.h>

#include <ctime>
#include <cstdlib>
...

int main()
{
    //glfw setup
    ...
    //bla bla bla
    ...
    //all I want to do is to call this one
    ScreenToClient( glfwGetWin32Window(window), &point);
}

最佳答案

在对您的问题感到困惑之后,我尝试了一下,我认为包含顺序就是您的问题。一个最小的代码示例,可以在Linux上模仿您在Windows上尝试执行的操作,可以按预期进行编译和运行:

#define GLFW_EXPOSE_NATIVE_X11
#define GLFW_EXPOSE_NATIVE_GLX
#include <GLFW/glfw3.h>
#include <GLFW/glfw3native.h>

int main (int argc, char ** argv)
{
  glfwInit();
  GLFWwindow* window = glfwCreateWindow (256, 256, "GLFW", nullptr, nullptr);
  glfwGetX11Window(window);
  glfwTerminate();

  return 0;
}


编辑:添加了glfwTerminate()的倾斜,以进行适当的清理。请注意,当然应该进行适当的错误检查,但是为了说明一个最小的示例,以上内容就足够了。

08-16 03:38