[英]C++ How to make a GUI in directx?
我對此主題沒有什么疑問。
我為按鈕創建了一個類,該類有問題。
問題是:
1.如果要單擊按鈕,我想創建要調用的函數,問題是如果單擊每個按鈕,每個按鈕都會做不同的事情。 所以我不知道如何創建對每個按鈕都會執行不同操作的函數。
我不知道我應該如何設計我的界面。
如果您能給我一個關於我應該如何設計GUI的想法,那將會很棒。
這是我的按鈕課
class GUIButtons
{
public:
GUIButtons(void);
~GUIButtons(void);
void LoadMesh(string fileName, int startAnimation, LPDIRECT3DDEVICE9 d3ddev);
void Render(float timeElapsed, D3DXMATRIX *matWorld);
void EventProc(HWND hWnd, UINT msg, LPDIRECT3DDEVICE9 d3ddev);
void Picking(HWND hWnd, LPDIRECT3DDEVICE9 d3ddev);
private:
CXFileEntity *Button;
};
編輯2:
伙計,這可能嗎?
我創建了兩個函數,然后將一個函數指向另一個函數。
像這樣
void a()
{
....
}
void b() = a;
編輯3:
好的,我應該對onClick()
函數使用這種方式。
void Onclick( void(*fun) )
{
fun();
}
我將函數傳遞給OnClick
不是調用函數。
我應該用這種方式嗎?
使用繼承/多態性:基類是GUIButtons
,每個新的單獨按鈕均來自該基類:
class MyButton : public GUIButtons { ... }
然后單擊的功能來自虛擬方法onClick()
或其他方法。
更多詳情:
class GUIButtons
{
... \\ lots of stuff
virtual void onClick() { };
};
class CloseButton : public GUIButtons
{
...
virtual void onClick()
{
//code to close window
}
};
class SettingsButton : public GUIButtons
{
...
virtual void onClick()
{
//stuff to open settings menu
}
};
單擊按鈕是一個動作/事件。 您可以將click動作封裝為一個類。 使用按鈕小部件的應用程序對此操作的解釋和使用方式有所不同。 gui庫必須通知已單擊了包含相關信息的按鈕。 您可以參考流行的GUI庫(例如Qt或Gtk +)作為示例,以了解它們如何實現GUI事件等等。
我建議您閱讀《 DirectX 9用戶界面:設計和實現》一書 。 我有它,我可能會說您會在這里找到所需的一切!!!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.