イベント処理/リストボックスに情報を表示する方法

 

ダイアログイベント処理/リストボックスに情報を表示する方法

説明

前回作成したパレットのイベントを処理する方法や、リストボックスに情報を表示する方法を紹介します。

パネルが表示されたときに要素情報を取得する

  • 要素の情報を取得する関数を追加

class SamplePalette 
	: public DG::Palette
	, public DG::PanelObserver
	, public DG::ListBoxObserver
{
public:
    void GetElementList();
...
};

void SamplePalette::GetElementList()
{
	listBox.DeleteItem(DG::ListBox::AllItems);

	GSErrCode err = NoError;
	GS::Array<API_Guid> elemGuids;

	err = ACAPI_Element_GetElemList(API_ZombieElemID, &elemGuids);
	if (err != NoError)
		return;

	for (API_Guid guid : elemGuids)
	{
		API_Element elem = {};
		elem.header.guid = guid;

		err = ACAPI_Element_Get(&elem);
		if (err != NoError)
			continue;

		listBox.AppendItem();
		GS::UniString text = ElemID_To_Name(elem.header.typeID);
		listBox.SetTabItemText(DG::SingleSelListBox::BottomItem, 1, text);
	}
}

void SamplePalette::ShowPalette()
{
	DG::Palette::Show();
	DG::Palette::BringToFront();
	GetElementList();
}


パネルを閉じるときのイベントを取得する

DG::PanelObserverの関数をoverride

  • DG::PanelObserverの定義へいく
  • PanelCloseRequested関数をコピー
    • パネルを閉じるときにイベントを受け取る
class SamplePalette 
	: public DG::Palette
	, public DG::PanelObserver
	, public DG::ListBoxObserver
{
public:
	virtual	void PanelCloseRequested (const DG::PanelCloseRequestEvent& ev, bool* accepted) override;
...
};

PanelCloseRequestedイベント処理からパレットを非表示にする

void SamplePalette::PanelCloseRequested (const DG::PanelCloseRequestEvent& ev, bool* accepted)
{
	UNUSED_VARIABLE(ev);
	HidePalette();
	*accepted = true;
}

問題がなければリストボックスに要素情報が追加されています。

続きをみる