INT_PTR pShowMessageBox( LPCTSTR szMessage, LPCTSTR szTitle, HWND hWnd, LPCTSTR szDontShowOptionValueName, INT_PTR iDefaultButton, INT_PTR iDefaultResponse) { CConfirmDlg dlg; BOOL fDontShow = FALSE; BOOL fSuccess = pGetAppConfigValue(szDontShowOptionValueName,&fDontShow); if (fSuccess && fDontShow) { return iDefaultResponse; } dlg.SetMessage(szMessage); dlg.SetTitle(szTitle); dlg.SetDefaultButton(iDefaultButton); INT_PTR iResult = dlg.DoModal(); fDontShow = dlg.GetDontShow(); if (fDontShow) { fSuccess = pSetAppConfigValue(szDontShowOptionValueName,(BOOL)TRUE); } return iResult; }
LRESULT CAppOptGeneralPage::OnInitDialog(HWND hwndFocus, LPARAM lParam) { BOOL fSuccess = FALSE; m_wndUILangList.Attach(GetDlgItem(IDC_UILANG)); CString str; INT nIndex = 0; str.LoadString(IDS_LANG_AUTO); nIndex = m_wndUILangList.AddString(str); m_wndUILangList.SetItemData(nIndex, 0); DWORD dwConfigLangID; m_wConfigLangID = 0; fSuccess = pGetAppConfigValue(_T("Language"),&dwConfigLangID); if (fSuccess) { m_wConfigLangID = (LANGID) dwConfigLangID; } m_wndUILangList.SetCurSel(0); pLoadAvailableLanguageList(m_wndUILangList, m_wConfigLangID); m_wndAlertDisconnect.Attach(GetDlgItem(IDC_ALERT_DISCONNECT)); m_wndAlertReconnect.Attach(GetDlgItem(IDC_ALERT_RECONNECT)); // m_wndRemountOnBoot.Attach(GetDlgItem(IDC_REMOUNT_ON_BOOT)); BOOL fUseDisconnectAlert = TRUE; BOOL fUseReconnectAlert = TRUE; fSuccess = pGetAppConfigValue(_T("UseDisconnectAlert"), &fUseDisconnectAlert); if (fSuccess && !fUseDisconnectAlert) { m_wndAlertDisconnect.SetCheck(BST_UNCHECKED); } else { m_wndAlertDisconnect.SetCheck(BST_CHECKED); } fSuccess = pGetAppConfigValue(_T("UseReconnectAlert"), &fUseReconnectAlert); if (fSuccess && !fUseReconnectAlert) { m_wndAlertReconnect.SetCheck(BST_UNCHECKED); } else { m_wndAlertReconnect.SetCheck(BST_CHECKED); } return TRUE; }
static LANGID pGetPreferredLangID(LPCTSTR lpszCmdLine) { LANGID wPref = 0; wPref = pGetCmdLineLangID(lpszCmdLine); if (0 == wPref) { DWORD dwConfigLangID = 0; BOOL fSuccess = pGetAppConfigValue(_T("Language"), &dwConfigLangID); if (fSuccess) { wPref = (LANGID) dwConfigLangID; } } return wPref; }
static VOID pLoadAppOptValues(DWORD nDefs, PAPP_OPT_VALUE_DEF pOptValueDef) { for (DWORD i = 0; i < nDefs; ++i) { PAPP_OPT_VALUE_DEF p = &pOptValueDef[i]; if (APP_OPT_VALUE_DEF::AOV_BOOL == p->ovType) { BOOL fSuccess = pGetAppConfigValue( p->szValueName, &p->CurrentValue.fValue); if (!fSuccess) { p->CurrentValue.fValue = p->DefaultValue.fValue; } p->NewValue.fValue = p->CurrentValue.fValue; } else if (APP_OPT_VALUE_DEF::AOV_DWORD == p->ovType) { BOOL fSuccess = pGetAppConfigValue( p->szValueName, &p->CurrentValue.dwValue); if (!fSuccess) { p->CurrentValue.dwValue = p->DefaultValue.dwValue; } p->NewValue.dwValue = p->CurrentValue.dwValue; } else { // ignore invalid ones continue; } } }
BOOL pSetDeviceStatusMenuItem(HMENU hMenu, UINT nStringID) { BOOL fSuccess; CMenuHandle menu = hMenu; BOOL fShow = TRUE; pGetAppConfigValue(_T("ShowDeviceStatusText"), &fShow); if (!fShow) { return TRUE; } CMenuItemInfo mii; mii.fMask = MIIM_STATE | MIIM_ID | MIIM_FTYPE | MIIM_DATA; mii.wID = 100; // status text mii.fState = MFS_DISABLED; mii.fType = MFT_OWNERDRAW; mii.dwItemData = nStringID; // mii.dwTypeData = (LPTSTR)nStringID;// (LPTSTR)(LPCTSTR)strStatus; fSuccess = menu.InsertMenuItem(0xFFFF, TRUE, &mii); ATLASSERT(fSuccess); return fSuccess; }
void CMainFrame::pUpdateMenuItems() { BOOL fSuccess(FALSE); if (!ndas::UpdateDeviceList()) { // warning device list update failed. } if (!ndas::UpdateLogicalDeviceList()) { // warning logical device list update failed. } m_taskbarMenu.ClearItemStringData(); BOOL showText = TRUE; pGetAppConfigValue(_T("ShowDeviceStatusText"), &showText); m_taskbarMenu.ShowDeviceStatusText(showText); CMenuHandle taskBarRootMenu; taskBarRootMenu.LoadMenu(IDR_TASKBAR); if (pGetAppConfigBOOL(_T("ShowUnmountAll"), FALSE)) { ndas::LogicalDeviceConstIterator itr = std::find_if( m_NdasLogDevices.begin(), m_NdasLogDevices.end(), ndas::LogicalDeviceMounted()); if (m_NdasLogDevices.end() != itr) { // There is a mounted logical device taskBarRootMenu.EnableMenuItem( IDR_UNMOUNT_ALL, MF_BYCOMMAND | MFS_ENABLED); } else { // There is no mounted logical device taskBarRootMenu.EnableMenuItem( IDR_UNMOUNT_ALL, MF_BYCOMMAND | MFS_DISABLED); } // do not remove menu } else { // otherwise remove menu taskBarRootMenu.RemoveMenu(IDR_UNMOUNT_ALL, MF_BYCOMMAND); } CMenuHandle taskBarMenu = ::GetSubMenu(taskBarRootMenu,0); MENUINFO mi = {0}; mi.cbSize = sizeof(MENUINFO); mi.fMask = MIM_STYLE; fSuccess = taskBarMenu.GetMenuInfo(&mi); ATLASSERT(fSuccess); mi.cbSize = sizeof(MENUINFO); mi.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS; mi.dwStyle |= MNS_NOTIFYBYPOS | MNS_CHECKORBMP; fSuccess = taskBarMenu.SetMenuInfo(&mi); ATLASSERT(fSuccess); if (m_NdasDevices.empty()) { CMenuItemInfo mii; CString strMenuText = MAKEINTRESOURCE(IDS_NO_DEVICE); mii.fMask = MIIM_ID | MIIM_STRING | MIIM_STATE; mii.dwTypeData = (LPTSTR)((LPCTSTR)strMenuText); mii.wID = IDR_NDAS_DEVICE_NONE; mii.fState = MFS_DISABLED | MFS_UNHILITE; fSuccess = taskBarMenu.InsertMenuItem(0, TRUE, &mii); ATLASSERT(fSuccess); } else { std::for_each( m_NdasDevices.begin(), m_NdasDevices.end(), NdasDeviceMenuItemCreator(m_taskbarMenu, taskBarMenu)); } CMenu existingTaskbarMenu = m_taskbarIcon.m_hMenu; m_taskbarIcon.m_hMenu = taskBarRootMenu; }
VOID CAboutDialog::OnCheckUpdate(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */) { NDUPDATE_SYSTEM_INFO sysInfo = {0}; NDUPDATE_UPDATE_INFO updateInfo = {0}; sysInfo.dwLanguageSet = 0; sysInfo.dwPlatform = NDAS_PLATFORM_WIN2K; sysInfo.dwVendor = 0; VS_FIXEDFILEINFO vffi = {0}; BOOL fSuccess = pGetModuleVerFileInfo(vffi); if (!fSuccess) { // // This is a fallback // ATLASSERT(FALSE); sysInfo.ProductVersion.wMajor = 3; sysInfo.ProductVersion.wMinor = 10; sysInfo.ProductVersion.wBuild = 0; sysInfo.ProductVersion.wPrivate = 0; } else { sysInfo.ProductVersion.wMajor = HIWORD(vffi.dwProductVersionMS); sysInfo.ProductVersion.wMinor = LOWORD(vffi.dwProductVersionMS); sysInfo.ProductVersion.wBuild = HIWORD(vffi.dwProductVersionLS); sysInfo.ProductVersion.wPrivate = LOWORD(vffi.dwProductVersionLS); } TCHAR szUpdateBaseURL[NDUPDATE_MAX_URL] = {0}; fSuccess = pGetAppConfigValue( _T("UpdateURL"), szUpdateBaseURL, NDUPDATE_MAX_URL); if (!fSuccess) { HRESULT hr = ::StringCchCopy( szUpdateBaseURL, NDUPDATE_MAX_URL, _T("http://updates.ximeta.com/update/")); ATLASSERT(SUCCEEDED(hr)); } AutoHModule hUpdateDLL = ::LoadLibrary(_T("ndupdate.dll")); if (NULL == (HMODULE)hUpdateDLL) { return; } typedef BOOL (WINAPI* NDUPDATE_NdasUpdateDoUpdate)(HWND, LPCTSTR, PNDUPDATE_SYSTEM_INFO); NDUPDATE_NdasUpdateDoUpdate pfnDoUpdate = (NDUPDATE_NdasUpdateDoUpdate) ::GetProcAddress(hUpdateDLL, "NdasUpdateDoUpdate"); LCID lcid = ::GetThreadLocale(); fSuccess = ::SetThreadLocale(MAKELCID(_CurrentUILangID,SORT_DEFAULT)); ATLASSERT(fSuccess); fSuccess = pfnDoUpdate(m_hWnd, szUpdateBaseURL, &sysInfo); if (!fSuccess) { ATLTRACE(_T("Update function failed: %08X"), ::GetLastError()); } fSuccess = ::SetThreadLocale(lcid); ATLASSERT(fSuccess); }
// 0 to automatically advance to the next page // -1 to prevent the page from changing INT CSelectDiskPage::OnWizardNext() { ATLASSERT( m_wndListBind.GetItemCount() == (int)m_pWizData->m_nDiskCount); ATLASSERT( NMT_AGGREGATE == m_pWizData->m_nBindType || NMT_RAID0 == m_pWizData->m_nBindType || NMT_RAID1 == m_pWizData->m_nBindType || NMT_RAID4 == m_pWizData->m_nBindType); NBUnitDevicePtrList listBind; unsigned int i; UINT32 BindResult; WTL::CString strMsg; // warning message { WTL::CString strTitle; strTitle.LoadString(IDS_APPLICATION); strMsg.LoadString(IDS_WARNING_BIND); int id = MessageBox( strMsg, strTitle, MB_YESNO|MB_ICONEXCLAMATION ); if(IDYES != id) return -1; } m_pWizData->listUnitDevicesBind = m_wndListBind.GetDiskObjectList(); NDASCOMM_CONNECTION_INFO *pConnectionInfo; pConnectionInfo = new NDASCOMM_CONNECTION_INFO[m_pWizData->m_nDiskCount]; ZeroMemory(pConnectionInfo, sizeof(NDASCOMM_CONNECTION_INFO) * m_pWizData->m_nDiskCount); listBind = m_wndListBind.GetDiskObjectList(); WTL::CString strTitle; CNBUnitDevice *UnitDiskObject; NBUnitDevicePtrList::const_iterator itr; for (i = 0, itr = listBind.begin(); itr != listBind.end(); ++itr, i++ ) { UnitDiskObject = *itr; if(!UnitDiskObject->InitConnectionInfo(&pConnectionInfo[i], TRUE)) // if(!((*itr)->GetAccessMask() & GENERIC_WRITE)) { // "%1!s! does not have a write access privilege. You need to set write key to this NDAS device before this action." strMsg.FormatMessage(IDS_ERROR_NOT_REGISTERD_WRITE_FMT, (*itr)->GetName() ); strTitle.LoadString(IDS_APPLICATION); MessageBox( strMsg, strTitle, MB_OK|MB_ICONERROR ); delete [] pConnectionInfo; return -1; } } DWORD dwUserSpace = 0; if(!pGetAppConfigValue(_T("UserSpace"), &dwUserSpace)) { dwUserSpace = 0; } AutoCursor l_auto_cursor(IDC_WAIT); m_pWizData->m_BindResult = NdasOpBind( m_pWizData->m_nDiskCount, pConnectionInfo, m_pWizData->m_nBindType, dwUserSpace); l_auto_cursor.Release(); if(m_pWizData->m_BindResult != m_pWizData->m_nDiskCount) // error m_pWizData->dwBindLastError = ::GetLastError(); CNdasHIXChangeNotify HixChangeNotify(pGetNdasHostGuid()); BOOL bResults = HixChangeNotify.Initialize(); if(bResults) { for (i = 0; i < m_pWizData->m_nDiskCount; i++ ) { NDAS_UNITDEVICE_ID unitDeviceId; CopyMemory(unitDeviceId.DeviceId.Node, pConnectionInfo[i].AddressLPX, sizeof(unitDeviceId.DeviceId.Node)); unitDeviceId.UnitNo = pConnectionInfo[i].UnitNo; HixChangeNotify.Notify(unitDeviceId); } } delete [] pConnectionInfo; return 0; }
// 0 to automatically advance to the next page // -1 to prevent the page from changing INT CSelectDiskPage::OnWizardNext() { ATLASSERT( m_wndListBind.GetItemCount() == (int)m_pWizData->m_nDiskCount); ATLASSERT( NMT_AGGREGATE == m_pWizData->m_nBindType || NMT_RAID0 == m_pWizData->m_nBindType || NMT_RAID1R3 == m_pWizData->m_nBindType || NMT_RAID4R3 == m_pWizData->m_nBindType || NMT_RAID5 == m_pWizData->m_nBindType ); NBUnitDevicePtrList listBind; unsigned int i; CString strMsg; // Warning message if disk is over 2T. { UINT64 nSize = pGetBoundDiskSize( m_pWizData->m_nBindType, m_pWizData->m_nDiskCount, m_wndListBind.GetDiskObjectList()); if (nSize >= 2LL * 1024 * 1024 * 1024 * 1024) { // 2 Tera. CString strTitle; strTitle.LoadString(IDS_APPLICATION); strMsg.LoadString(IDS_WARNING_BIND_SIZE); int id = MessageBox( strMsg, strTitle, MB_YESNO|MB_ICONEXCLAMATION ); if(IDYES != id) return -1; } } // warning message { CString strTitle; strTitle.LoadString(IDS_APPLICATION); strMsg.LoadString(IDS_WARNING_BIND); int id = MessageBox( strMsg, strTitle, MB_YESNO|MB_ICONEXCLAMATION ); if(IDYES != id) return -1; } m_pWizData->listUnitDevicesBind = m_wndListBind.GetDiskObjectList(); NDASCOMM_CONNECTION_INFO *pConnectionInfo; pConnectionInfo = new NDASCOMM_CONNECTION_INFO[m_pWizData->m_nDiskCount]; ZeroMemory(pConnectionInfo, sizeof(NDASCOMM_CONNECTION_INFO) * m_pWizData->m_nDiskCount); listBind = m_wndListBind.GetDiskObjectList(); CString strTitle; CNBUnitDevice *UnitDiskObject; NBUnitDevicePtrList::const_iterator itr; for (i = 0, itr = listBind.begin(); itr != listBind.end(); ++itr, i++ ) { UnitDiskObject = *itr; if(!UnitDiskObject->InitConnectionInfo(&pConnectionInfo[i], TRUE)) // if(!((*itr)->GetAccessMask() & GENERIC_WRITE)) { // "%1!s! does not have a write access privilege. You need to set write key to this NDAS device before this action." strMsg.FormatMessage(IDS_ERROR_NOT_REGISTERD_WRITE_FMT, (*itr)->GetName() ); strTitle.LoadString(IDS_APPLICATION); MessageBox( strMsg, strTitle, MB_OK|MB_ICONERROR); delete [] pConnectionInfo; return -1; } } DWORD dwUserSpace = 0; if(!pGetAppConfigValue(_T("UserSpace"), &dwUserSpace)) { dwUserSpace = 0; } AutoCursor l_auto_cursor(IDC_WAIT); m_pWizData->m_BindResult = NdasOpBind( m_pWizData->m_nDiskCount, pConnectionInfo, m_pWizData->m_nBindType, dwUserSpace); l_auto_cursor.Release(); if(m_pWizData->m_BindResult != m_pWizData->m_nDiskCount) // error m_pWizData->dwBindLastError = ::GetLastError(); LPCGUID hostGuid = pGetNdasHostGuid(); for (i = 0; i < m_pWizData->m_nDiskCount; i++ ) { BOOL success = NdasCommNotifyUnitDeviceChange( NDAS_DIC_NDAS_ID, pConnectionInfo[i].Address.NdasId.Id, pConnectionInfo[i].UnitNo, hostGuid); if (!success) { ATLTRACE("NdasCommNotifyUnitDeviceChange failed, error=0x%X\n", GetLastError()); } } delete [] pConnectionInfo; return 0; }