void CMainFrame::OnNdasLogDeviceDisconnected( NDAS_LOGICALDEVICE_ID logDevId) { ATLTRACE("Logical Device(%d) disconnected.\n", logDevId); pUpdateMenuItems(); CString szDevices = MAKEINTRESOURCE(IDS_DEVICE_UNKNOWN); BOOL fUseDisconnectAlert = pGetAppConfigBOOL(_T("UseDisconnectAlert"), TRUE); if (!fUseDisconnectAlert) { return; } pLogicalDeviceString(szDevices, logDevId); CString strMessage; strMessage.FormatMessage(IDS_BT_DISCONNECTED_INFO, szDevices); m_taskbarIcon.ShowBalloonToolTip( static_cast<LPCTSTR>(strMessage), IDS_BT_DISCONNECTED_INFO_TITLE, NIIF_ERROR, 5000); }
void CMainFrame::OnNdasLogDeviceAlarmed( NDAS_LOGICALDEVICE_ID logDevId, ULONG AdapterStatus) { ATLTRACE("Logical Device(%d) is alarmed(%08lx).\n", logDevId, AdapterStatus); _UpdateMenuItems(); // Default String CString szDevices = MAKEINTRESOURCE(IDS_DEVICE_UNKNOWN); pLogicalDeviceString(szDevices, logDevId); BOOL fUseEmergencyAlert = pGetAppConfigBOOL(_T("UseReconnectAlert"), TRUE); if (!fUseEmergencyAlert) { return; } CString strTitle = MAKEINTRESOURCE(IDS_BT_ALARMED_INFO_TITLE); UINT nFormatID; if(NDAS_DEVICE_ALARM_RECONNECTING == AdapterStatus) { nFormatID = IDS_BT_ALARMED_RECONNECTING; } else if(NDAS_DEVICE_ALARM_RECONNECTED == AdapterStatus) { nFormatID = IDS_BT_ALARMED_RECONNECTED; } else if(NDAS_DEVICE_ALARM_MEMBER_FAULT == AdapterStatus) { nFormatID = IDS_BT_ALARMED_MEMBER_FAULT; } else if(NDAS_DEVICE_ALARM_RECOVERING == AdapterStatus) { nFormatID = IDS_BT_ALARMED_RECOVERING; } else if(NDAS_DEVICE_ALARM_RECOVERRED == AdapterStatus) { nFormatID = IDS_BT_ALARMED_RECOVERRED; } else // if(NDAS_DEVICE_ALARM_NORMAL == AdapterStatus) { // strInfoFmt.LoadString(IDS_BT_NORMAL_INFO); return; } CString strMessage; strMessage.FormatMessage(nFormatID, szDevices); m_taskbarIcon.ShowBalloonToolTip( static_cast<LPCTSTR>(strMessage), IDS_BT_ALARMED_INFO_TITLE, NIIF_WARNING, 5000); }
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; }
LRESULT CMainFrame::OnCreate(LPCREATESTRUCT lParam) { NdasUiDbgCall( 2, _T("m_hWnd = %p\n"), m_hWnd ); m_AutoPnpMutex = CreateSemaphore( NULL, 1, 1, NULL ); if (m_AutoPnpMutex == NULL) { ATLASSERT(m_AutoPnpMutex); } else { for (UINT i=0; i<NDAS_MAX_AUTO_PNP; i++) { m_NdasStringId[i] = (PTCHAR)::HeapAlloc( ::GetProcessHeap(), HEAP_ZERO_MEMORY, (NDAS_DEVICE_STRING_ID_LEN + 1) * sizeof(TCHAR) ); if (m_NdasStringId[i] == NULL) { ATLASSERT(FALSE); } } m_NdasStringIdLen = 0; } xTaskDialogInitialize(); #ifdef NDASMGMT_USE_QUERYCANCELAUTOPLAY WM_QUERYCANCELAUTOPLAY = ::RegisterWindowMessage(_T("QueryCancelAutoplay")); ATLASSERT(WM_QUERYCANCELAUTOPLAY); #endif int cxSmall = ::GetSystemMetrics(SM_CXSMICON); int cySmall = ::GetSystemMetrics(SM_CYSMICON); int cxLarge = ::GetSystemMetrics(SM_CXICON); int cyLarge = ::GetSystemMetrics(SM_CYICON); HICON hAppIcon = AtlLoadIconImage( IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxLarge, cyLarge); HICON hAppIconSmall = AtlLoadIconImage( IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxSmall, cySmall); ATLASSERT(hAppIcon && hAppIconSmall); SetIcon(hAppIcon, TRUE); SetIcon(hAppIconSmall, FALSE); m_hTaskbarDefaultMenu.LoadMenu(IDR_TASKBAR); m_taskbarIcon.Install(m_hWnd, 1, IDR_TASKBAR); // Create Task Bar Icon Image List // Only shell 6.0 or later can handle ILC_COLOR32 DWORD imageListFlags = ILC_MASK; imageListFlags |= (GetShellVersion() >= PackVersion(6,0)) ? ILC_COLOR32 : ILC_COLOR8; ATLVERIFY(m_taskbarImageList.Create(cxSmall, cySmall, imageListFlags , 2, 1)); ATLVERIFY(m_hTaskbarIconBase = AtlLoadIconImage(IDR_TASKBAR, LR_DEFAULTCOLOR, cxSmall, cySmall)); ATLVERIFY(m_hTaskbarFailOverlay = AtlLoadIconImage(IDR_TASKBAR_FAIL, LR_DEFAULTCOLOR, cxSmall, cySmall)); m_nTaskbarNormal = m_taskbarImageList.AddIcon(m_hTaskbarIconBase); m_nTaskbarFailureOverlay = m_taskbarImageList.AddIcon(m_hTaskbarFailOverlay); ATLVERIFY(m_taskbarImageList.SetOverlayImage(m_nTaskbarFailureOverlay, 1)); pUpdateDeviceList(); pUpdateMenuItems(); if (pGetAppConfigBOOL(_T("UseHotKey"), FALSE)) { NDASMGMT_POPUP_HOTKEY = ::GlobalAddAtom(ndasmgmt::NDASMGMT_ATOM_HOTKEY); ATLASSERT(NDASMGMT_POPUP_HOTKEY >= 0xC000 && NDASMGMT_POPUP_HOTKEY <= 0xFFFF); BOOL fSuccess = ::RegisterHotKey( m_hWnd, NDASMGMT_POPUP_HOTKEY, MOD_WIN, 'N' /* VK_N */); if (fSuccess) { m_fHotKeyRegistered = TRUE; } else { ATLVERIFY(0 == ::GlobalDeleteAtom(static_cast<ATOM>(NDASMGMT_POPUP_HOTKEY))); NDASMGMT_POPUP_HOTKEY = 0xFFFF; } } if (pGetAppConfigBOOL(_T("FirstRun"), TRUE)) { pShowWelcome(); ATLVERIFY(pSetAppConfigValueBOOL(_T("FirstRun"), FALSE)); } m_taskbarMenu.Init(m_hWnd); ATLVERIFY(m_bitmapHandler.Initialize()); // Subscribe NDAS Event ATLVERIFY(NdasEventSubscribe(m_hWnd)); NdasUiDbgCall( 2, "out\n" ); return 0; }
LRESULT CMainFrame::OnCreate(LPCREATESTRUCT lParam) { #ifdef NDASMGMT_USE_QUERYCANCELAUTOPLAY WM_QUERYCANCELAUTOPLAY = ::RegisterWindowMessage(_T("QueryCancelAutoplay")); ATLASSERT(WM_QUERYCANCELAUTOPLAY); #endif int cxSmall = ::GetSystemMetrics(SM_CXSMICON); int cySmall = ::GetSystemMetrics(SM_CYSMICON); int cxLarge = ::GetSystemMetrics(SM_CXICON); int cyLarge = ::GetSystemMetrics(SM_CYICON); HICON hAppIcon = AtlLoadIconImage( IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxLarge, cyLarge); HICON hAppIconSmall = AtlLoadIconImage( IDR_MAINFRAME, LR_DEFAULTCOLOR | LR_DEFAULTSIZE, cxSmall, cySmall); ATLASSERT(hAppIcon && hAppIconSmall); SetIcon(hAppIcon, TRUE); SetIcon(hAppIconSmall, FALSE); m_hTaskbarDefaultMenu.LoadMenu(IDR_TASKBAR); m_taskbarIcon.Install(m_hWnd, 1, IDR_TASKBAR); // Create Task Bar Icon Image List // Only shell 6.0 or later can handle ILC_COLOR32 DWORD imageListFlags = ILC_MASK; imageListFlags |= (GetShellVersion() >= PackVersion(6,0)) ? ILC_COLOR32 : ILC_COLOR8; ATLVERIFY(m_taskbarImageList.Create(cxSmall, cySmall, imageListFlags , 2, 1)); ATLVERIFY(m_hTaskbarIconBase = AtlLoadIconImage(IDR_TASKBAR, LR_DEFAULTCOLOR, cxSmall, cySmall)); ATLVERIFY(m_hTaskbarFailOverlay = AtlLoadIconImage(IDR_TASKBAR_FAIL, LR_DEFAULTCOLOR, cxSmall, cySmall)); m_nTaskbarNormal = m_taskbarImageList.AddIcon(m_hTaskbarIconBase); m_nTaskbarFailureOverlay = m_taskbarImageList.AddIcon(m_hTaskbarFailOverlay); ATLVERIFY(m_taskbarImageList.SetOverlayImage(m_nTaskbarFailureOverlay, 1)); _UpdateDeviceList(); _UpdateMenuItems(); if (pGetAppConfigBOOL(_T("UseHotKey"), FALSE)) { NDASMGMT_POPUP_HOTKEY = ::GlobalAddAtom(ndasmgmt::NDASMGMT_ATOM_HOTKEY); ATLASSERT(NDASMGMT_POPUP_HOTKEY >= 0xC000 && NDASMGMT_POPUP_HOTKEY <= 0xFFFF); BOOL fSuccess = ::RegisterHotKey( m_hWnd, NDASMGMT_POPUP_HOTKEY, MOD_WIN, 'N' /* VK_N */); if (fSuccess) { m_fHotKeyRegistered = TRUE; } else { ATLVERIFY(0 == ::GlobalDeleteAtom(static_cast<ATOM>(NDASMGMT_POPUP_HOTKEY))); NDASMGMT_POPUP_HOTKEY = 0xFFFF; } } if (pGetAppConfigBOOL(_T("FirstRun"), TRUE)) { _ShowWelcome(); ATLVERIFY(pSetAppConfigValueBOOL(_T("FirstRun"), FALSE)); } ATLVERIFY(m_bitmapHandler.Initialize()); // Subscribe NDAS Event ATLVERIFY(NdasEventSubscribe(m_hWnd)); return 0; }
LRESULT CAppOptGeneralPage::OnInitDialog(HWND hwndFocus, LPARAM lParam) { m_wndUILangList.Attach(GetDlgItem(IDC_UILANG)); m_wndDisableAutoPlay.Attach(GetDlgItem(IDC_DISABLE_AUTOPLAY)); int nIndex = 0; CString str = MAKEINTRESOURCE(IDS_LANG_AUTO); nIndex = m_wndUILangList.AddString(str); m_wndUILangList.SetItemData(nIndex, 0); m_wndUILangList.SetCurSel(0); m_wConfigLangID = static_cast<LANGID>(pGetAppConfigDWORD(_T("Language"), 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)); int AlertDisconnectCheck = pGetAppConfigBOOL(_T("UseDisconnectAlert"), TRUE) ? BST_CHECKED : BST_UNCHECKED; int AlertReconnectCheck = pGetAppConfigBOOL(_T("UseReconnectAlert"), TRUE) ? BST_CHECKED : BST_UNCHECKED; m_wndAlertDisconnect.SetCheck(AlertDisconnectCheck); m_wndAlertReconnect.SetCheck(AlertReconnectCheck); BOOL fSuccess = m_imageList.CreateFromImage( IDB_OPTION_ICONS, 32, 1, CLR_DEFAULT, IMAGE_BITMAP, LR_CREATEDIBSECTION | LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_LOADTRANSPARENT); ATLASSERT(fSuccess); CStatic wndUIIcon = GetDlgItem(IDC_UI_ICON); wndUIIcon.SetIcon(m_imageList.GetIcon(0)); CStatic wndAlertIcon = GetDlgItem(IDC_ALERT_ICON); wndAlertIcon.SetIcon(m_imageList.GetIcon(1)); m_wndDisableAutoPlay.EnableWindow(FALSE); m_disableAutoPlay = TriStateUnknown; CComPtr<IAutoPlayConfig> pAutoPlayConfig; HRESULT hr = pAutoPlayConfig.CoCreateInstance(CLSID_CAutoPlayConfig); if (FAILED(hr)) { ATLTRACE("CLSID_CAutoPlayConfig.CreateInstance failed, hr=0x%X\n", hr); } else { DWORD noDriveTypeAutoRun = 0; hr = pAutoPlayConfig->GetNoDriveTypeAutoRun( reinterpret_cast<ULONG_PTR>(HKEY_CURRENT_USER), &noDriveTypeAutoRun); if (FAILED(hr)) { ATLTRACE("IAutoPlayConfig->GetNoDriveTypeAutoRun failed, hr=0x%X\n", hr); } else { // // TODO: We have to put the shield icon here later // //#ifndef IDI_SHIELD //#define IDI_SHIELD MAKEINTRESOURCE(32518) //#endif // HICON hShieldIcon = LoadIcon(NULL, IDI_SHIELD); // m_wndDisableAutoPlay.SendMessage( // BM_SETIMAGE, IMAGE_ICON, reinterpret_cast<LPARAM>(hShieldIcon)); m_wndDisableAutoPlay.EnableWindow(TRUE); if (noDriveTypeAutoRun & AutorunFixedDrive) { m_wndDisableAutoPlay.SetCheck(BST_CHECKED); m_disableAutoPlay = TriStateYes; } else { m_wndDisableAutoPlay.SetCheck(BST_UNCHECKED); m_disableAutoPlay = TriStateNo; } } } return TRUE; }