用glfw写了一个3d引擎,最近想做一个3d鼠标宠物,需要窗口背景透明,全屏,置顶。
Step 1
获取桌面分辨率
// 获取屏幕分辨率
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
int width = mode->width;
int height = mode->height;
Step 2
将窗口设置为全屏
// 将窗口设置为全屏
glfwSetWindowPos(m_Window, 0, 0); // 将窗口移动到屏幕左上角
glfwSetWindowSize(m_Window, width, height); // 将窗口大小设置为屏幕分辨率
Step 3
置顶窗口
glfwSetWindowAttrib(m_Window, GLFW_FLOATING, GLFW_TRUE); //置顶窗口
Step 4
窗口背景透明
// HWND hwndGLFW = GetWindow().GetNativeWindowID();
HWND hwndGLFW = glfwGetWin32Window(m_Window);
CC_INFO("Window handle: %p \n", hwndGLFW); // 在控制台中输出窗口句柄的地址
LONG ret = ::GetWindowLong(hwndGLFW, GWL_EXSTYLE);
ret = ret | WS_EX_LAYERED;
::SetWindowLong(hwndGLFW, GWL_EXSTYLE, ret);
::SetLayeredWindowAttributes(hwndGLFW, RGB(0, 0, 0), 255, LWA_COLORKEY | LWA_ALPHA);
```