问题描述
忽略鼠标事件,对输入透明,窗口只是一个蒙版画布,从不响应任何键盘/鼠标事件,我如何在 SDL 中做到这一点?我在 Windows 中做过这个,但我不知道在 linux Xlib 中
int WIN_SetwindowOpacity(_THIS,SDL_Window * window,float opacity)
{
const SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
const HWND hwnd = data->hwnd;
LONG style = getwindowlong(hwnd,GWL_EXSTYLE);
if (window->flags & SDL_WINDOW_LOSE_FOCUS)
{
style |= WS_EX_TRANSPARENT; //implement here for windows
}
SDL_assert(style != 0);
if (opacity == 1.0f) {
/* want it fully opaque,just mark it unlayered if necessary. */
if (style & WS_EX_layered) {
if (SetwindowLong(hwnd,GWL_EXSTYLE,style & ~WS_EX_layered) == 0) {
return WIN_SetError("SetwindowLong()");
}
}
} else {
const BYTE alpha = (BYTE) ((int) (opacity * 255.0f));
/* want it transparent,mark it layered if necessary. */
if ((style & WS_EX_layered) == 0) {
if (SetwindowLong(hwnd,style | WS_EX_layered) == 0) {
return WIN_SetError("SetwindowLong()");
}
}
if (SetlayeredWindowAttributes(hwnd,alpha,LWA_ALPHA) == 0) {
return WIN_SetError("SetlayeredWindowAttributes()");
}
}
return 0;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)