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

 

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

説明

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

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

  • 要素の情報を取得する関数を追加
  1. class SamplePalette
  2. : public DG::Palette
  3. , public DG::PanelObserver
  4. , public DG::ListBoxObserver
  5. {
  6. public:
  7. void GetElementList();
  8. ...
  9. };
  1. void SamplePalette::GetElementList()
  2. {
  3. listBox.DeleteItem(DG::ListBox::AllItems);
  4. GSErrCode err = NoError;
  5. GS::Array<API_Guid> elemGuids;
  6. err = ACAPI_Element_GetElemList(API_ZombieElemID, &elemGuids);
  7. if (err != NoError)
  8. return;
  9. for (API_Guid guid : elemGuids)
  10. {
  11. API_Element elem = {};
  12. elem.header.guid = guid;
  13. err = ACAPI_Element_Get(&elem);
  14. if (err != NoError)
  15. continue;
  16. listBox.AppendItem();
  17. GS::UniString text = ElemID_To_Name(elem.header.typeID);
  18. listBox.SetTabItemText(DG::SingleSelListBox::BottomItem, 1, text);
  19. }
  20. }
  21. void SamplePalette::ShowPalette()
  22. {
  23. DG::Palette::Show();
  24. DG::Palette::BringToFront();
  25. GetElementList();
  26. }

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

DG::PanelObserverの関数をoverride

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

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

  1. void SamplePalette::PanelCloseRequested (const DG::PanelCloseRequestEvent& ev, bool* accepted)
  2. {
  3. UNUSED_VARIABLE(ev);
  4. HidePalette();
  5. *accepted = true;
  6. }

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

続きをみる