105 lines
4.0 KiB
C++
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*/)
|
|
{
|
|
}
|
|
|