void CSettingDlg::OnOK() { int nWriteFlag = 0; bool bNeedRestart = false; bool bAvatarChanged = false; Config* pCfg = Singleton<Config>::getInstance(); // 个人设置 if (m_bPersonalChange) { CDuiString strNickName = m_pEditNickName->GetText(); if (_tcscmp(strNickName, pCfg->szNickName) != 0) { _tcsncpy(pCfg->szNickName, strNickName, MAX_NAMEBUF - 1); nWriteFlag |= CONFIG_PERSONAL; } CDuiString strGroupName = m_pEditGroupName->GetText(); if (_tcscmp(strGroupName, pCfg->szGroupName) != 0) { _tcsncpy(pCfg->szGroupName, strGroupName, MAX_NAMEBUF - 1); nWriteFlag |= CONFIG_PERSONAL; } CDuiString strAvatarPath = m_pLabelAvatar->GetUserData(); if (_tcscmp(strAvatarPath, pCfg->szAvatar) != 0) { _tcsncpy(pCfg->szAvatar, strAvatarPath, MAX_PATH - 1); nWriteFlag |= CONFIG_PERSONAL; bAvatarChanged = true; } } // 网络设置 if (m_bNetworkChange) { CControlUI* pControl = m_pComboAdapter->GetItemAt(m_pComboAdapter->GetCurSel()); CDuiString strAdapterName = pControl->GetUserData(); if (_tcscmp(strAdapterName, pCfg->szAdapterNameUse) != 0) { _tcsncpy(pCfg->szAdapterNameUse, strAdapterName, MAX_PATH - 1); bNeedRestart = true; nWriteFlag |= CONFIG_NETWORK; } } if (nWriteFlag != 0) { pCfg->WriteConfig(nWriteFlag); } CMainDlg* pMainDlg = Singleton<CMainDlg>::getInstance(); if (m_bPersonalChange || m_bNetworkChange) { pMainDlg->UpdateInfo(); } if (bNeedRestart) { ::MessageBox(NULL, _T("需要重启程序"), _T("提示"), MB_OK); pMainDlg->RestartApplication(); } if (m_bPersonalChange) { pMainDlg->BroadcastEntry(); } if (bAvatarChanged) { pMainDlg->BroadcastMsg(IM_ANSAVATAR, ::PathFindFileNameA(pCfg->szAvatar)); } Close(); }