瀏覽視窗的基礎類別是WxBrower,每個頁面都需要繼承自它。它的重要成員有:
- MenuBar[wxMenuBar*]:如果有指定,切換到這頁時會出現指定的選單。UE會自動加上Docking子選單。
- Activated():切換到這頁時會呼叫此函式。
- Send(ECallbackEventType):這其實是FCallbackEventDevice界面的處理事件函式,WxBrower有繼承該界面並覆寫。預設是呼叫Update()。
- Update():更新視窗。像是如果收到CALLBACK_RefreshEditor_AllBrowsers事件的話預設會呼叫這個函式。
- IsClonable():傳回這個視窗允不允許被複製。不允許的話,Docking選單裡的Clone Browser選項會變成不能按。
範例
以下程式碼展示如何新增一個瀏覽視窗:
class WxMyBrowser : public WxBrowser { DECLARE_DYNAMIC_CLASS(WxMyBrowser); public: WxMyBrowser(); ~WxMyBrowser(); virtual void Create(INT DockID,const TCHAR* FriendlyName,wxWindow* Parent); virtual const TCHAR* GetLocalizationKey() const { return TEXT("MyBrowser"); } };因為只是一個空殼,實作只是加上主選單讓它可以dock/float。
IMPLEMENT_DYNAMIC_CLASS(WxMyBrowser, WxBrowser); class WxMBMyBrowser : public wxMenuBar { public: WxMBMyBrowser() { WxBrowser::AddDockingMenu( this ); } }; WxMyBrowser::WxMyBrowser() { } WxMyBrowser::~WxMyBrowser() { } void WxMyBrowser::Create(INT DockID,const TCHAR* FriendlyName,wxWindow* Parent) { WxBrowser::Create(DockID,FriendlyName,Parent); MenuBar = new WxMBMyBrowser(); }最後一定要在XXXEditor.ini裡註冊才會出現:
[UnrealEd.BrowserManager] +BrowserPanes=(PaneID=14,WxWindowClassName="WxMyBrowser",FriendlyName="MyBrowser",CloneOfPaneID=-1,CloneNumber=-1)
沒有留言:
張貼留言