class GeDialog : GeUserDialog { var createlayout; public: GeDialog(pluginid); Message(msg); Init(); CreateLayout(); Command(id,msg); CoreMessage(id,msg); Timer(msg); AskClose(); } GeDialog::GeDialog(pluginid) { createlayout = FALSE; super(pluginid); } GeDialog::Init() { return FALSE; } GeDialog::CreateLayout() { return FALSE; } GeDialog::Command(id,msg){ return FALSE; } GeDialog::CoreMessage(id,msg){ return FALSE; } GeDialog::Timer(msg) { } GeDialog::AskClose() { return FALSE; } GeDialog::Message(msg) { try { switch (msg->GetId()) { case BFM_INIT: if (createlayout) return TRUE; createlayout = TRUE; return CreateLayout(); case BFM_DESTROY: createlayout = FALSE; break; case BFM_INITVALUES: return Init(); break; case BFM_CORE_MESSAGE: return CoreMessage(msg->GetInt(BFM_CORE_ID),msg); break; case BFM_ACTION: return Command(msg->GetInt(BFM_ACTION_ID),msg); break; case BFM_CHECKCLOSE: return AskClose(); break; case BFM_TIMER_MESSAGE: Timer(msg); return TRUE; break; } return FALSE; } catch(ExLastException) { ExShowLastError(); return FALSE; } }