// File: HiddenWnd.cpp #include "precomp.h" #include "ConfWnd.h" #include "TaskBar.h" #include "ConfRoom.h" #include "Conf.h" #include "FloatBar.h" #include "Splash.h" #include "Cmd.h" #include "TopWindow.h" const TCHAR g_cszHiddenWndClassName[] = _TEXT("ConfHiddenWindow"); BOOL CHiddenWindow::Create() { return(CGenWindow::Create(NULL, g_szEmpty, WS_POPUP, // not visible! 0, 0, 0, 0, 0, _Module.GetModuleInstance(), NULL, g_cszHiddenWndClassName )); } VOID CHiddenWindow::OnCallStarted() { ::SetTimer(GetWindow(), WINSOCK_ACTIVITY_TIMER, WINSOCK_ACTIVITY_TIMER_PERIOD, NULL); } VOID CHiddenWindow::OnCallEnded() { ::KillTimer(GetWindow(), WINSOCK_ACTIVITY_TIMER); } LRESULT CHiddenWindow::ProcessMessage( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // This window is used for DCL/databeam callbacks and to route // WM_COMMAND messages generated by TranslateAccelerator() switch(uMsg) { case WM_CONF_MSG_BOX: { HWND hwndParent = NULL; if (_Module.IsUIVisible()) { CTopWindow *pTop = GetTopWindow(); if (NULL != pTop) { hwndParent = pTop->GetWindow(); if (NULL != hwndParent) { hwndParent = GetLastActivePopup(hwndParent); } } } ::ConfMsgBox( hwndParent, (LPCTSTR) wParam, MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND); break; } case WM_NM_DISPLAY_MSG: { return ::DisplayMsg((LPTSTR)lParam, (UINT) wParam); } case WM_TASKBAR_NOTIFY: { switch (lParam) { case WM_RBUTTONUP: ::OnRightClickTaskbar(); break; case WM_LBUTTONDBLCLK: // Kill the timer, so we don't pop up the toolbar m_fGotDblClick = TRUE; ::CreateConfRoomWindow(); break; case WM_LBUTTONUP: if (FALSE == GetCursorPos(&m_ptTaskbarClickPos)) { // If GetCursorPos failed, put it at 0,0 m_ptTaskbarClickPos.x = m_ptTaskbarClickPos.y = 0; } // Create a timer that will go off one dbl-click's time from now ::SetTimer(hwnd, TASKBAR_DBLCLICK_TIMER, GetDoubleClickTime(), NULL); break; } return(TRUE); } case WM_TIMER: { switch (wParam) { case WINSOCK_ACTIVITY_TIMER: { ::SendDialmonMessage(WM_WINSOCK_ACTIVITY); break; } case TASKBAR_DBLCLICK_TIMER: { ::KillTimer(hwnd, TASKBAR_DBLCLICK_TIMER); if (!m_fGotDblClick) { CFloatToolbar* pft = new CFloatToolbar(::GetConfRoom()); if (NULL != pft) { pft->Create(m_ptTaskbarClickPos); } } m_fGotDblClick = FALSE; break; } default: break; } break; } case MM_MIXM_LINE_CHANGE: case MM_MIXM_CONTROL_CHANGE: { if(GetConfRoom()) { CAudioControl *pAudioControl = GetConfRoom()->GetAudioControl(); if (NULL != pAudioControl) { pAudioControl->RefreshMixer(); } } break; } case WM_DESTROY: { TRACE_OUT(("Conf hidden window received WM_DESTROY")); return 0; } default: return CGenWindow::ProcessMessage(hwnd, uMsg, wParam, lParam); } return FALSE; }