2011-11-07 34 views
2

如何從使用glfwopenWindow函數調用創建的窗口中刪除最大化按鈕?從使用glfw創建的窗口中刪除最大化按鈕

目前,我在做什麼是:

windowHandle = GetForegroundWindow(); 
long Style = GetWindowLong(windowHandle, GWL_STYLE); 
Style ^= WS_MAXIMIZEBOX; 
SetWindowLong(windowHandle, GWL_STYLE, WS_MAXIMIZEBOX); 

在哪裏,我得到的窗口句柄,然後切換最大化位。然後我重新應用窗口樣式。但這不起作用,它使窗口完全空白,沒有任何按鈕或標題欄。無論如何刪除最大化按鈕。我不想改變,只要調整大小功能被稱爲

+0

截圖http://i.imgur.com/7LmEU.png – viraj

回答

5

你的代碼竊聽窗口大小,因爲你不傳回的舊樣式,從而清除所有樣式的標誌,除了WS_MAXIMIZEBOX,應改爲:

windowHandle = GetForegroundWindow(); 
long Style = GetWindowLong(windowHandle, GWL_STYLE); 
Style &= ~WS_MAXIMIZEBOX; //this makes it still work when WS_MAXIMIZEBOX is actually already toggled off 
SetWindowLong(windowHandle, GWL_STYLE, Style); 

還,如果你打算在未來的x64兼容

+0

+1 GetWindowlongPtr提你應該使用GetWindowlongPtr基礎功能。儘管我不會這樣做,但我總是更願意讓我的代碼跨平臺移植。 – sarat

+4

不要使用'GetForegroundWindow',因爲不能保證你的窗口是前景窗口。如果你的程序意外地從任務管理器中刪除了MAXIMIZE按鈕,不會感到難過嗎?想必你已經知道你的窗戶把手;直接使用它。 (至少切換到'GetActiveWindow',它會爲你的線程獲得活動窗口。) –

+0

@raymond:你應該評論OP的問題,看到他的代碼,但你100%正確 – Necrolis

相關問題