Files
Work/dialog/DYNDLG.BAK
2024-08-07 09:16:27 -04:00

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