如果使用SDL_SetVideoMode()創建窗口,則返回表面而不是窗口句柄。有沒有辦法獲得SDL_Window句柄?我知道有一個SDL_GetWindowFromID函數,但我也不知道如何獲取ID,除了SDL_GetWindowID函數,這將需要我已經有窗口句柄。當使用SDL_SetVideoMode時,有沒有辦法獲得內部SDL_Window指針或ID?
有什麼建議嗎?請注意,保持跨平臺可移植性非常重要,因此如果可能的話,我更願意使用內置的SDL功能。
如果它有幫助,我試圖獲取和設置窗口位置和窗口大小,而這些功能需要一個窗口句柄。
謝謝!
編輯:我還應該提到,我正在改變視頻模式在用戶的請求,所以我不能只使用默認ID爲1,因爲這個ID改變每次我調用SDL_SetVideoMode()。
(檢查初始化中的錯誤)。但SDL_SetVideoMode函數也負責創建窗口。我想獲得一個指向它創建的SDL_Window的指針。 – Kelsie 2010-06-04 02:47:43
@chrensli,我認爲你錯了 - 你能指點我在SDL文檔中的位置,他們說SetVideoMode創建一個窗口?無論如何,爲了獲得一個全屏窗口,爲什麼不使用帶'True'參數的'SDL_Window'構造函數(該參數的名字是'fullscreen',默認爲'False')。 – 2010-06-04 03:24:23
http://www.libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode - 標誌列表包含兩個標誌(SDL_NOFRAME和SDL_RESIZABLE),它們與創建窗口完全相關。但是我也在查看這個函數的源代碼,它使用SDL_CreateWindow來創建一個窗口。我最終做了一些有點冒險的事情 - 我在SDL_SetVideoMode函數附近添加了一個SDL_GetWindow函數,該函數返回我正在嘗試獲取的窗口句柄。但這不是一件好事。我可以自己創建一個窗口,但似乎有很多這樣做。 – Kelsie 2010-06-04 03:31:49