2009-11-30 25 views
3

我引導人們相信,函數指針將被用來將函數分配給將以某種方式用作按鈕的圖像,但我無法在其上找到任何像樣的資源。如何在C++/directx中設置菜單系統(可點擊按鈕)?

如何在C++中設置按鈕菜單?例如,有保存,加載,退出,新的按鈕。

編輯:我並不擔心可移植性的這個例子。我寧願自己做,而不是使用預定義的框架。它只會在Windows機器上運行。

回答

4

基本上,你必須盡一切自己的繪圖,鼠標跟蹤,等有在DirectX SDK本身的樣本,顯示整個窗口框架,與對照。

但是,通過使用諸如CEGUI之類的東西,可以大大簡化此操作。 Crazy Eddie的圖形用戶界面提供了一個完整的框架,可以直接進行換膚,在DirectX中查看顯示和控件,包括按鈕,菜單等。

0

這不是語言功能,因爲您的答案意味着 - 您現在處於通常不可移植的GUI和框架領域。

因此,既然我建議Qt它是跨平臺的,成熟的,記錄和成熟。還有其他選項,並且有許多常見問題可以指導您。

+1

DirectX已經不可移植,所以Qt並沒有給你太多的MFC(儘管我更喜歡使用它)。如果Mark想把按鈕放在他的DX窗口中,Qt根本不起作用。 – 2009-11-30 16:58:15

5

當用戶按下鼠標,您需要自己寫一堆其中繪製的圖形用戶界面(按鈕,文本)以及一些基本的「碰撞檢測」來檢測是否點擊了鼠標按鈕內部GUI類的按鈕。

你不一定非要使用函數指針,它們更方便。下面的例子是一樣的能力。

我反而寫一個按鈕類,有位置,寬度,高度等,那麼你可以寫,如果在單擊鼠標,不需要任何硬編碼,你應該不惜一切代價避免一個返回的方法。

如果你想實現一個非常基本的和非柔性的GUI,你可以發現這樣的鼠標點擊):

if (mouseWasClicked == true) 
{ 
    if ((mouseX > startButton.minX && mouseX < startButton.maxX) && 
     (mouseY > startButton.minY && startButton.maxY < mouseY)) 
    { 
     loadGame(); 
    } 
} 

不過我建議使用適當庫的GUI系統,如CEGUI它是開源的,可以與像Ogre和其他渲染引擎一起工作。 CEGUI也是可移植的,比Qt輕得多。如果您正在編寫遊戲,建議您使用它。

不要重新發明輪子,除非你試圖學習低層次如何工作,使用經過驗證的東西。

+0

+1不試圖重新發明車輪 – Ramilol 2010-11-27 01:14:02

相關問題