首先我们定义窗口类,代码如下:
class CExportDetailDlg : public DG::Palette,
public DG::PanelObserver,
public DG::CompoundItemObserver,
{
public:
CExportDetailDlg();
virtual ~CExportDetailDlg();
static const GS::Guid& ODLBPaletteGuid();
static CExportDetailDlg& GetInstance();
virtual void PanelOpened(const DG::PanelOpenEvent& ev) override;
virtual void PanelCloseRequested(const DG::PanelCloseRequestEvent& ev, bool* accepted) override;
};
//32497 为grc文件中定义的对话框资源
CExportDetailDlg::CExportDetailDlg() :
DG::Palette(ACAPI_GetOwnResModule(), 32497, ACAPI_GetOwnResModule(), ODLBPaletteGuid())
{
this->Attach(*this);// init observer
AttachToAllItems(*this);
this->BeginEventProcessing();
}
CExportDetailDlg::~CExportDetailDlg()
{
this->EndEventProcessing();
this->Detach(*this);
DetachFromAllItems(*this);
}
const GS::Guid& CExportDetailDlg::ODLBPaletteGuid() {
// We need a fix and unique GUID to construct the palette to make it dockable.
//{6D609256-3F40-4E11-BD3E-2985D238D4C0}
static GS::Guid guid("6D609256-3F40-4E11-BD3E-2985D238D4C0");
return guid;
}
CExportDetailDlg& CExportDetailDlg::GetInstance()
{
static CExportDetailDlg instance;
return instance;
}
void CExportDetailDlg::PanelOpened(const DG::PanelOpenEvent& /*ev*/)
{
SetClientSize(GetOriginalClientWidth(), GetOriginalClientHeight());
}
void CExportDetailDlg::PanelCloseRequested(const DG::PanelCloseRequestEvent& /*ev*/, bool* /*accepted*/)
{
Hide();
}
跟模态窗口一样我们在grc文件中定义对话框资源
'GDLG' 32497 Palette | close 0 0 360 170 "构件详图 "
{
/* [ 1] */ Button 260 135 90 24 LargePlain "确定"
/* [ 2] */ Separator 15 115 330 2
/* [ 3] */ Button 160 15 150 24 LargePlain "前往选择"
/* [ 4] */ RadioButton 15 15 140 24 LargePlain 1 "框选平面范围出物料 "
/* [ 5] */ RadioButton 15 50 120 24 LargePlain 1 "整层出物料 "
/* [ 6] */ RadioButton 15 85 120 24 LargePlain 1 "整楼出物料 "
}
窗口显示
CExportDetailDlg::GetInstance().Show();
控件以及控件事件处理请参考模态窗口处理。
828

被折叠的 条评论
为什么被折叠?



