void CMainFrame::OnNdasLogDeviceDisconnected( NDAS_LOGICALDEVICE_ID logDevId) { ATLTRACE("Logical Device(%d) disconnected.\n", logDevId); _UpdateMenuItems(); 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::OnCmdAppOptions(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */) { CAppOptPropSheet psh; CString strTitle = MAKEINTRESOURCE(IDS_OPTIONDLG_TITLE); psh.SetTitle(strTitle); psh.DoModal(m_hWnd); _UpdateMenuItems(); }
void CMainFrame::OnCmdRefreshStatus(UINT /* wNotifyCode */, int /* wID */, HWND /* hWndCtl */) { BOOL fSuccess; fSuccess = _UpdateDeviceList(); if (!fSuccess) { ErrorMessageBox(IDS_ERROR_UPDATE_DEVICE_LIST); } _UpdateMenuItems(); }
void CMainFrame::OnTaskbarMenu(UINT) { // if there are any pop-up windows, do not handle this! HWND hWnd = ::GetLastActivePopup(m_hWnd); if (hWnd != m_hWnd) { ATLTRACE("Active popup HWND %x exists.\n", hWnd); ::FlashWindow(hWnd, TRUE); ::SwitchToThisWindow(hWnd, FALSE); return; } if (m_wndImportDlg.m_hWnd) { m_wndImportDlg.FlashWindow(TRUE); ::SwitchToThisWindow(m_wndImportDlg, FALSE); return; } // We will save the position now as updating the list // from the service may take a while and the user may change // the mouse position. POINT pt; ::GetCursorPos(&pt); BOOL updated = FALSE; if (m_fPendingUpdateDeviceList) { updated = _UpdateDeviceList(); m_fPendingUpdateDeviceList = FALSE; } if (m_fPendingUpdateMenuItem) { _UpdateMenuItems(); m_fPendingUpdateMenuItem = FALSE; } if (updated) { _ChangeTaskBarIcon(true); } HMENU hSubMenu = ::GetSubMenu(m_taskbarIcon.m_hMenu, 0); ATLASSERT(::IsMenu(hSubMenu)); ::SetForegroundWindow(m_taskbarIcon.m_nid.hWnd); BOOL ret = ::TrackPopupMenu(hSubMenu, 0, pt.x, pt.y, 0, m_taskbarIcon.m_nid.hWnd, NULL); ATLTRACE("TrackPopupMenu returns %d : Error %d\n", ret, ::GetLastError()); ::PostMessage(m_taskbarIcon.m_nid.hWnd, WM_NULL, 0,0); // Fixes Win95 bug }
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; }
void CMainFrame::OnNdasSurrenderAccessRequest( DWORD dwSlotNo, DWORD dwUnitNo, UCHAR requestFlags, LPCGUID requestHostGuid) { ATLTRACE("Surrender Request for Unit Device(%d,%d) FLAGS=%02X.\n", dwSlotNo, dwUnitNo, requestFlags); _UpdateDeviceList(); _UpdateMenuItems(); ndas::DevicePtr pDevice; if (!ndas::FindDeviceBySlotNumber(pDevice, dwSlotNo)) { ATLTRACE("Requested device (%d.%d) not found. Ignored. (%08X)\n", dwSlotNo, dwUnitNo, ::GetLastError()); return; } ndas::UnitDevicePtr pUnitDevice; if (!pDevice->FindUnitDevice(pUnitDevice, dwUnitNo)) { ATLTRACE("Requested unit device (%d.%d) not found. Ignored. (%08X)\n", dwSlotNo, dwUnitNo, ::GetLastError()); return; } CString strHostname; NDAS_HOST_INFO hostInfo = {0}; if (!::NdasQueryHostInfo(requestHostGuid,&hostInfo)) { strHostname.LoadString(IDS_KNOWN_NDAS_HOST); } else { strHostname = hostInfo.szHostname; } // The host (%1!s!) requests to give up Write Access to %2!s!.\r\n // Do you want to accept it and unmount related drives? CString strMessage; strMessage.FormatMessage( IDS_ASK_SURRENDER_REQUEST_FMT, strHostname, pDevice->GetName()); int response = ::AtlMessageBox( m_hWnd, static_cast<LPCTSTR>(strMessage), IDS_MAIN_TITLE, MB_YESNO | MB_ICONQUESTION | MB_APPLMODAL | MB_SETFOREGROUND | MB_TOPMOST); if (IDYES == response) { NDAS_LOGICALDEVICE_ID logDeviceId = pUnitDevice->GetLogicalDeviceId(); ndas::LogicalDevicePtr pLogDevice; if (!ndas::FindLogicalDevice(pLogDevice, logDeviceId)) { ATLTRACE("Cannot find logical device %d\n", logDeviceId); } if (!pLogDevice->Eject()) { ATLTRACE("Logical device %d eject failed\n", logDeviceId); } } }