86 lines
3.3 KiB
Plaintext
86 lines
3.3 KiB
Plaintext
#ifndef _DIALOG_DYNAMICDIALOG_HPP_
|
|
#define _DIALOG_DYNAMICDIALOG_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_DWINDOW_HPP_
|
|
#include <common/dwindow.hpp>
|
|
#endif
|
|
#ifndef _COMMON_CALLBACK_HPP_
|
|
#include <common/callback.hpp>
|
|
#endif
|
|
#ifndef _DIALOG_DIALOGITEMTEMPLATE_HPP_
|
|
#include <dialog/dlgitem.hpp>
|
|
#endif
|
|
#ifndef _DIALOG_DIALOGTEMPLATE_HPP_
|
|
#include <dialog/dlgtmpl.hpp>
|
|
#endif
|
|
|
|
class DynamicDialog : public DWindow
|
|
{
|
|
public:
|
|
enum DialogType{ModalDialog,ModelessDialog};
|
|
DynamicDialog(void);
|
|
virtual ~DynamicDialog();
|
|
void createDialog(HWND hParentWnd,DialogTemplate &someDialogTemplate,DialogType typeDialog=ModalDialog);
|
|
void createDialog(DialogTemplate &someDialogTemplate,DialogType typeDialog=ModalDialog);
|
|
protected:
|
|
virtual WORD dlgCommand(DWORD commandID,CallbackData &someCallbackData);
|
|
virtual void dlgInitDialog(CallbackData &someCallbackData);
|
|
virtual void dlgDestroyDialog(CallbackData &someCallbackData);
|
|
private:
|
|
DynamicDialog(const DynamicDialog &someDynamicDialog);
|
|
CallbackData::ReturnType initDialogHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType dialogCodeHandler(CallbackData &someCallbackData);
|
|
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
|
Callback<DynamicDialog> mInitDialogHandler;
|
|
Callback<DynamicDialog> mCloseHandler;
|
|
Callback<DynamicDialog> mDestroyHandler;
|
|
Callback<DynamicDialog> mDialogCodeHandler;
|
|
Callback<DynamicDialog> mCommandHandler;
|
|
};
|
|
|
|
inline
|
|
DynamicDialog::DynamicDialog(void)
|
|
: mDestroyHandler(this,&DynamicDialog::destroyHandler),
|
|
mInitDialogHandler(this,&DynamicDialog::initDialogHandler),
|
|
mCloseHandler(this,&DynamicDialog::closeHandler),
|
|
mDialogCodeHandler(this,&DynamicDialog::dialogCodeHandler),
|
|
mCommandHandler(this,&DynamicDialog::commandHandler)
|
|
{
|
|
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
|
insertHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
|
|
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
|
insertHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
|
|
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
|
}
|
|
|
|
inline
|
|
DynamicDialog::DynamicDialog(const DynamicDialog &someDynamicDialog)
|
|
: mDestroyHandler(this,&DynamicDialog::destroyHandler),
|
|
mInitDialogHandler(this,&DynamicDialog::initDialogHandler),
|
|
mCloseHandler(this,&DynamicDialog::closeHandler),
|
|
mDialogCodeHandler(this,&DynamicDialog::dialogCodeHandler),
|
|
mCommandHandler(this,&DynamicDialog::commandHandler)
|
|
{
|
|
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
|
insertHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
|
|
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
|
insertHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
|
|
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
|
}
|
|
|
|
inline
|
|
DynamicDialog::~DynamicDialog()
|
|
{
|
|
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
|
removeHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
|
|
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
|
removeHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
|
|
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
|
}
|
|
#endif
|
|
|