ドッキングパレットを実装する
説明
ドッキングパレットを実装する方法はとても簡単です。パレットにGUIDを指定するだけです。
パレットにGrowステータスを指定する
- growを指定するとパレットの幅・高さを変更できるようになります
- ドッキングの際に自動的にパレットのサイズが変更されるため
- .grcを変更したときには必ずコンパイルかリビルドを行ってください。
'GDLG' 32500 Palette | grow | close 0 0 200 300 "SamplePalette" {
/* [ 1] */ SingleSelList 2 2 396 296 SmallPlain PartialItems 21 HasHeader 21
}
パレットのGUIDを生成する
- GUIDの生成方法はwebで「GUID生成」と調べるとたくさん検索にヒットします
const GS::Guid SamplePaletteGuid{ "C67E8137-A2AC-42FD-BDE6-413F509731B8" };
const Int32 SamplePaletteGuidRefId = (Int32)GS::GenerateHashValue(SamplePaletteGuid);
SamplePalette::SamplePalette()
: DG::Palette(ACAPI_GetOwnResModule(), 32500, ACAPI_GetOwnResModule(), SamplePaletteGuid)
プロジェクトにパレットを登録する
- プロジェクトにパレットを登録すると、プロジェクトの様々なイベント(たとえば作業環境の適用による表示の切り替えなど)を取得し対応することができます。
- また登録時にパレットが利用可能なビューを指定することも可能です。
GSErrCode __ACENV_CALL PaletteAPIControlCallBack(Int32 referenceID, API_PaletteMessageID messageID, GS::IntPtr param)
{
if (referenceID != SamplePaletteGuidRefId)
return NoError;
switch (messageID) {
case APIPalMsg_OpenPalette:
if (!SamplePalette::GetInstance().IsPaletteVisible()) {
SamplePalette::GetInstance().ShowPalette();
}
break;
case APIPalMsg_ClosePalette:
SamplePalette::GetInstance().ClosePalette();
break;
case APIPalMsg_HidePalette_Begin:
case APIPalMsg_HidePalette_End:
case APIPalMsg_DisableItems_Begin:
case APIPalMsg_DisableItems_End:
case APIPalMsg_IsPaletteVisible:
default:
break;
}
return NoError;
}
GSErrCode __ACENV_CALL Initialize (void)
{
GSErrCode err = NoError;
ACAPI_RegisterModelessWindow(SamplePaletteGuidRefId, PaletteAPIControlCallBack, API_PalEnabled_FloorPlan +
API_PalEnabled_Section + API_PalEnabled_Elevation + API_PalEnabled_InteriorElevation +
API_PalEnabled_3D + API_PalEnabled_Detail + API_PalEnabled_Worksheet + API_PalEnabled_Layout +
API_PalEnabled_DocumentFrom3D, GSGuid2APIGuid(SamplePaletteGuid));
return err;
}
GSErrCode __ACENV_CALL FreeData (void)
{
GSErrCode err = NoError;
ACAPI_UnregisterModelessWindow(SamplePaletteGuidRefId);
return err;
}
class SamplePalette
: public DG::Palette
, public DG::PanelObserver
, public DG::ListBoxObserver
{
public:
bool IsPaletteVisible();
};
bool SamplePalette::IsPaletteVisible()
{
return instance != nullptr && instance->IsVisible();
}
ドッキングパレットを実装する
説明
ドッキングパレットを実装する方法はとても簡単です。パレットにGUIDを指定するだけです。
パレットにGrowステータスを指定する
パレットのGUIDを生成する
プロジェクトにパレットを登録する