我正在尝试将自定义版本的DOSBox中的某些C ++代码从SDL1.2更新为SDL2。令我感到困惑的是:
SDL_SysWMinfo systemInfo;
SDL_VERSION(&systemInfo.version);
if(SDL_GetWindowWMInfo(window, &systemInfo) !=1) return;
if (!::OpenClipboard(systemInfo.info.win.window)) return;
SDL_GetWindowWMInfo在SDL_syswm.h中以这种方式定义:
typedef struct SDL_SysWMinfo SDL_SysWMinfo;
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, SDL_SysWMinfo * info);
当我尝试在Visual Studio 2010中构建时,我收到此错误,由上面代码中的第三行引发:
1> sdlmain.cpp
1>..\src\gui\sdlmain.cpp(2966): error C2065: 'window' : undeclared identifier
我认为答案就在这里:
https://gamedev.stackexchange.com/questions/82068/how-can-i-obtain-a-window-handle-in-sdl-2-0-3
但我是初学者,无法弄清楚如何使其适应我自己的代码。如果有人愿意帮助一个完整的初学者,我将不胜感激。
答案 0 :(得分:0)
通过添加第一行解决(正如SDL维基中清楚解释的那样):
SDL_Window* window;
SDL_SysWMinfo systemInfo;
SDL_VERSION(&systemInfo.version);
if(SDL_GetWindowWMInfo(window, &systemInfo) !=1) return;
if (!::OpenClipboard(systemInfo.info.win.window)) return;