static void removeScreen(HWND hwnd) { // get selected list item HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); if (index == LB_ERR) { // no selection return; } // get screen name CString name = ARG->m_screens[index]; // remove screen from list control SendMessage(child, LB_DELETESTRING, index, 0); // remove screen from screen list ARG->m_screens.erase(&ARG->m_screens[index]); // remove screen from config (this also removes aliases) ARG->m_config.removeScreen(name); // update neighbors updateNeighbors(hwnd); enableScreensControls(hwnd); enableSaveControls(hwnd); }
static void addScreen(HWND hwnd) { // empty screen info CScreenInfo info; // run dialog if (DialogBoxParam(s_instance, MAKEINTRESOURCE(IDD_ADD), hwnd, addDlgProc, (LPARAM)&info) != 0) { // get current number of screens UInt32 i = ARG->m_screens.size(); // add screen to list control HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); CString item = CStringUtil::print("%d. %s", i + 1, info.m_screen.c_str()); SendMessage(child, LB_ADDSTRING, 0, (LPARAM)item.c_str()); // add screen to screen list ARG->m_screens.push_back(info.m_screen); // add screen to config ARG->m_config.addScreen(info.m_screen); // add aliases to config for (CStringList::const_iterator index = info.m_aliases.begin(); index != info.m_aliases.end(); ++index) { ARG->m_config.addAlias(info.m_screen, *index); } // set options ARG->m_config.removeOptions(info.m_screen); for (CConfig::CScreenOptions::const_iterator index = info.m_options.begin(); index != info.m_options.end(); ++index) { ARG->m_config.addOption(info.m_screen, index->first, index->second); } // update neighbors updateNeighbors(hwnd); enableScreensControls(hwnd); enableSaveControls(hwnd); } }
void colaborativeFase(){ int m, i, *values = NULL; if (!(values = (int*)malloc(2 * sizeof(int)))){ printf ("Erro ao alocar memória\n"); exit(1); } for (m = 0; m < g_iteractions; m++){ for(i = 0; i < g_inputs; i++){ euclideanDistance(i, values, g_input); updateNeighbors(values[0], values[1], i); } g_learning = g_startLearning * (1 - (m / g_iteractions)); } free(values); }
static void initMainWindow(HWND hwnd) { // append version number to title CString titleFormat = getString(IDS_TITLE); setWindowText(hwnd, CStringUtil::format(titleFormat.c_str(), VERSION)); // load configuration bool configLoaded = loadConfig(ARG->m_config); ARG->m_oldConfig = ARG->m_config; enableSaveControls(hwnd); // get settings from registry bool isServer = configLoaded; int debugLevel = s_defaultDebug; CString server; HKEY key = CArchMiscWindows::openKey(HKEY_CURRENT_USER, getSettingsPath()); if (key != NULL) { if (isServer && CArchMiscWindows::hasValue(key, "isServer")) { isServer = (CArchMiscWindows::readValueInt(key, "isServer") != 0); } if (CArchMiscWindows::hasValue(key, "debug")) { debugLevel = static_cast<int>( CArchMiscWindows::readValueInt(key, "debug")); if (debugLevel < 0) { debugLevel = 0; } else if (debugLevel > CLog::kDEBUG2) { debugLevel = CLog::kDEBUG2; } } server = CArchMiscWindows::readValueString(key, "server"); CArchMiscWindows::closeKey(key); } // choose client/server radio buttons HWND child; child = getItem(hwnd, IDC_MAIN_CLIENT_RADIO); setItemChecked(child, !isServer); child = getItem(hwnd, IDC_MAIN_SERVER_RADIO); setItemChecked(child, isServer); // set server name child = getItem(hwnd, IDC_MAIN_CLIENT_SERVER_NAME_EDIT); setWindowText(child, server); // if config is loaded then initialize server controls if (configLoaded) { int i = 1; child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); for (CConfig::const_iterator index = ARG->m_config.begin(); index != ARG->m_config.end(); ++i, ++index) { ARG->m_screens.push_back(*index); CString item = CStringUtil::print("%d. %s", i, index->c_str()); SendMessage(child, LB_ADDSTRING, 0, (LPARAM)item.c_str()); } } // debug level child = getItem(hwnd, IDC_MAIN_DEBUG); for (unsigned int i = 0; i < sizeof(s_debugName) / sizeof(s_debugName[0]); ++i) { SendMessage(child, CB_ADDSTRING, 0, (LPARAM)s_debugName[i][0]); } SendMessage(child, CB_SETCURSEL, debugLevel, 0); // update neighbor combo boxes enableMainWindowControls(hwnd); updateNeighbors(hwnd); }
static void editScreen(HWND hwnd) { // get selected list item HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); if (index == LB_ERR) { // no selection return; } // fill in screen info CScreenInfo info; info.m_screen = ARG->m_screens[index]; for (CConfig::all_const_iterator index = ARG->m_config.beginAll(); index != ARG->m_config.endAll(); ++index) { if (CStringUtil::CaselessCmp::equal(index->second, info.m_screen) && !CStringUtil::CaselessCmp::equal(index->second, index->first)) { info.m_aliases.push_back(index->first); } } const CConfig::CScreenOptions* options = ARG->m_config.getOptions(info.m_screen); if (options != NULL) { info.m_options = *options; } // save current info CScreenInfo oldInfo = info; // run dialog if (DialogBoxParam(s_instance, MAKEINTRESOURCE(IDD_ADD), hwnd, addDlgProc, (LPARAM)&info) != 0) { // replace screen ARG->m_screens[index] = info.m_screen; // remove old aliases for (CStringList::const_iterator index = oldInfo.m_aliases.begin(); index != oldInfo.m_aliases.end(); ++index) { ARG->m_config.removeAlias(*index); } // replace name ARG->m_config.renameScreen(oldInfo.m_screen, info.m_screen); // add new aliases for (CStringList::const_iterator index = info.m_aliases.begin(); index != info.m_aliases.end(); ++index) { ARG->m_config.addAlias(info.m_screen, *index); } // set options ARG->m_config.removeOptions(info.m_screen); for (CConfig::CScreenOptions::const_iterator index = info.m_options.begin(); index != info.m_options.end(); ++index) { ARG->m_config.addOption(info.m_screen, index->first, index->second); } // update list CString item = CStringUtil::print("%d. %s", index + 1, info.m_screen.c_str()); SendMessage(child, LB_DELETESTRING, index, 0); SendMessage(child, LB_INSERTSTRING, index, (LPARAM)item.c_str()); SendMessage(child, LB_SETCURSEL, index, 0); // update neighbors updateNeighbors(hwnd); enableSaveControls(hwnd); } }
static LRESULT CALLBACK mainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: // test for unsaved data if (ARG->m_config != ARG->m_oldConfig) { if (!askVerify(hwnd, getString(IDS_UNSAVED_DATA_REALLY_QUIT))) { return 0; } } // quit PostQuitMessage(0); return 0; case IDOK: case IDC_MAIN_TEST: { // note if testing const bool testing = (LOWORD(wParam) == IDC_MAIN_TEST); // save data if (ARG->m_config != ARG->m_oldConfig) { if (!saveConfig(ARG->m_config, false)) { showError(hwnd, CStringUtil::format( getString(IDS_SAVE_FAILED).c_str(), getErrorString(GetLastError()).c_str())); return 0; } ARG->m_oldConfig = ARG->m_config; enableSaveControls(hwnd); } // launch child app DWORD threadID; HANDLE thread = launchApp(hwnd, testing, &threadID); if (thread == NULL) { return 0; } // handle child program if (testing) { // wait for process to stop, allowing the user to kill it waitForChild(hwnd, thread, threadID); // clean up CloseHandle(thread); } else { // don't need thread handle CloseHandle(thread); // notify of success askOkay(hwnd, getString(IDS_STARTED_TITLE), getString(IDS_STARTED)); // quit PostQuitMessage(0); } return 0; } case IDC_MAIN_AUTOSTART: { // construct command line CString cmdLine = getCommandLine(hwnd, false); if (!cmdLine.empty()) { // run dialog CAutoStart autoStart(hwnd, isClientChecked(hwnd) ? NULL : &ARG->m_config, cmdLine); autoStart.doModal(); if (autoStart.wasUserConfigSaved()) { ARG->m_oldConfig = ARG->m_config; enableSaveControls(hwnd); } } return 0; } case IDC_MAIN_SAVE: if (!saveConfig(ARG->m_config, false)) { showError(hwnd, CStringUtil::format( getString(IDS_SAVE_FAILED).c_str(), getErrorString(GetLastError()).c_str())); } else { ARG->m_oldConfig = ARG->m_config; enableSaveControls(hwnd); } return 0; case IDC_MAIN_CLIENT_RADIO: case IDC_MAIN_SERVER_RADIO: enableMainWindowControls(hwnd); return 0; case IDC_MAIN_SERVER_ADD_BUTTON: addScreen(hwnd); return 0; case IDC_MAIN_SERVER_EDIT_BUTTON: editScreen(hwnd); return 0; case IDC_MAIN_SERVER_REMOVE_BUTTON: removeScreen(hwnd); return 0; case IDC_MAIN_SERVER_SCREENS_LIST: if (HIWORD(wParam) == LBN_SELCHANGE) { enableScreensControls(hwnd); updateNeighbors(hwnd); } else if (HIWORD(wParam) == LBN_DBLCLK) { editScreen(hwnd); return 0; } break; case IDC_MAIN_SERVER_LEFT_COMBO: if (HIWORD(wParam) == CBN_SELENDOK) { changeNeighbor(hwnd, (HWND)lParam, kLeft); return 0; } break; case IDC_MAIN_SERVER_RIGHT_COMBO: if (HIWORD(wParam) == CBN_SELENDOK) { changeNeighbor(hwnd, (HWND)lParam, kRight); return 0; } break; case IDC_MAIN_SERVER_TOP_COMBO: if (HIWORD(wParam) == CBN_SELENDOK) { changeNeighbor(hwnd, (HWND)lParam, kTop); return 0; } break; case IDC_MAIN_SERVER_BOTTOM_COMBO: if (HIWORD(wParam) == CBN_SELENDOK) { changeNeighbor(hwnd, (HWND)lParam, kBottom); return 0; } break; case IDC_MAIN_OPTIONS: s_globalOptions->doModal(); enableSaveControls(hwnd); break; case IDC_MAIN_ADVANCED: s_advancedOptions->doModal(isClientChecked(hwnd)); enableSaveControls(hwnd); break; } default: break; } return DefDlgProc(hwnd, message, wParam, lParam); }