瀏覽視窗的基礎類別是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)
沒有留言:
張貼留言