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

105 lines
4.0 KiB
C++

#include <dialog/dyndlg.hpp>
#include <common/widestr.hpp>
DynamicDialog::DynamicDialog(void)
{
mDestroyHandler.setCallback(this,&DynamicDialog::destroyHandler);
mInitDialogHandler.setCallback(this,&DynamicDialog::initDialogHandler);
mCloseHandler.setCallback(this,&DynamicDialog::closeHandler);
mDialogCodeHandler.setCallback(this,&DynamicDialog::dialogCodeHandler);
mCommandHandler.setCallback(this,&DynamicDialog::commandHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
insertHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
}
DynamicDialog::DynamicDialog(const DynamicDialog &someDynamicDialog)
{
mDestroyHandler.setCallback(this,&DynamicDialog::destroyHandler);
mInitDialogHandler.setCallback(this,&DynamicDialog::initDialogHandler);
mCloseHandler.setCallback(this,&DynamicDialog::closeHandler);
mDialogCodeHandler.setCallback(this,&DynamicDialog::dialogCodeHandler);
mCommandHandler.setCallback(this,&DynamicDialog::commandHandler);
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
insertHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
insertHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
}
DynamicDialog::~DynamicDialog()
{
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
removeHandler(VectorHandler::InitDialogHandler,&mInitDialogHandler);
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
removeHandler(VectorHandler::DialogCodeHandler,&mDialogCodeHandler);
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
}
void DynamicDialog::createDialog(HWND hParent,DialogTemplate &someDialogTemplate,DialogType typeDialog)
{
HINSTANCE hInstance((HINSTANCE)::GetWindowLong(hParent,GWL_HINSTANCE));
if(ModalDialog==typeDialog)::DialogBoxIndirectParam(hInstance,(DLGTEMPLATE*)someDialogTemplate,hParent,DWindow::DlgProc,(LONG)(LPSTR)(DWindow*)this);
else if(!isValid())::CreateDialogIndirectParam(hInstance,(DLGTEMPLATE*)someDialogTemplate,hParent,DWindow::DlgProc,(LONG)(LPSTR)(DWindow*)this);
}
void DynamicDialog::createDialog(DialogTemplate &someDialogTemplate,DialogType typeDialog)
{
if(ModalDialog==typeDialog)::DialogBoxIndirectParam(processInstance(),(DLGTEMPLATE*)someDialogTemplate,(HWND)0,DWindow::DlgProc,(LONG)(LPSTR)(DWindow*)this);
else if(!isValid())::CreateDialogIndirectParam(processInstance(),(DLGTEMPLATE*)someDialogTemplate,(HWND)0,DWindow::DlgProc,(LONG)(LPSTR)(DWindow*)this);
}
CallbackData::ReturnType DynamicDialog::closeHandler(CallbackData &/*someCallbackData*/)
{
destroy();
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType DynamicDialog::destroyHandler(CallbackData &someCallbackData)
{
dlgDestroyDialog(someCallbackData);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType DynamicDialog::initDialogHandler(CallbackData &someCallbackData)
{
return dlgInitDialog(someCallbackData);
}
CallbackData::ReturnType DynamicDialog::commandHandler(CallbackData &someCallbackData)
{
WORD cmdReturn(dlgCommand(someCallbackData.wmCommandID(),someCallbackData));
if(IDCANCEL==someCallbackData.wmCommandID()&&!cmdReturn)endDialog(FALSE);
else if(IDOK==someCallbackData.wmCommandID()&&!cmdReturn)endDialog(TRUE);
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType DynamicDialog::dialogCodeHandler(CallbackData &someCallbackData)
{
return dlgCode(someCallbackData);
}
// *** virtuals
WORD DynamicDialog::dlgCommand(DWORD /*commandID*/,CallbackData &/*someCallbackData*/)
{
return FALSE;
}
WORD DynamicDialog::dlgCode(CallbackData &/*someCallbackData*/)
{
return DLGC_WANTTAB;
}
BOOL DynamicDialog::dlgInitDialog(CallbackData &/*someCallbackData*/)
{
return TRUE;
}
void DynamicDialog::dlgDestroyDialog(CallbackData &/*someCallbackData*/)
{
}