#include #include #include #include CMPDlg::CMPDlg(void) { mInitHandler.setCallback(this,&CMPDlg::initHandler); mCreateHandler.setCallback(this,&CMPDlg::createHandler); mCloseHandler.setCallback(this,&CMPDlg::closeHandler); mDestroyHandler.setCallback(this,&CMPDlg::destroyHandler); mCommandHandler.setCallback(this,&CMPDlg::commandHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } CMPDlg::CMPDlg(const CMPDlg &someCMPDlg) { // private implementation *this=someCMPDlg; } CMPDlg::~CMPDlg() { removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } CMPDlg &CMPDlg::operator=(const CMPDlg &someCMPDlg) { // private implementation return *this; } bool CMPDlg::perform(GUIWindow &parentWindow) { return ::DialogBoxParam(processInstance(),(LPSTR)"CMPDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this); } CallbackData::ReturnType CMPDlg::initHandler(CallbackData &someCallbackData) { setItems(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CMPDlg::createHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CMPDlg::closeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CMPDlg::destroyHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType CMPDlg::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : case CMPDLG_CANCEL : handleCancel(); break; case CMPDLG_OK : handleOk(); break; case CMPDLG_LIST : handleList(someCallbackData); break; case CMPDLG_BROWSE : handleBrowse(); break; } return (CallbackData::ReturnType)FALSE; } void CMPDlg::handleCancel(void) { endDialog(false); } void CMPDlg::handleOk(void) { getItems(); endDialog(true); } void CMPDlg::handleList(CallbackData &cbData) { DWORD current; switch(cbData.wmCommandCommand()) { case LBN_DBLCLK : current=sendMessage(CMPDLG_LIST,LB_GETCURSEL,0,0L); sendMessage(CMPDLG_LIST,LB_DELETESTRING,current,0L); break; } } void CMPDlg::handleBrowse() { String strDirectory; OpenDirectory openDirectory; if(!openDirectory.getOpenDirectory(*this,"Choose Folder",".",strDirectory))return; sendMessage(CMPDLG_LIST,LB_INSERTSTRING,-1,(LPARAM)(LPCSTR)strDirectory); } void CMPDlg::getItems(void) { String strItem; DWORD count; mIncludePath.remove(); count=sendMessage(CMPDLG_LIST,LB_GETCOUNT,0,0L); for(int index=0;index