LRESULT CALLBACK CXTPSkinManager::CbtFilterHook(int code, WPARAM wParam, LPARAM lParam) { XTP_SKINAMANGER_THREAD_STATE* pThreadState = _xtpSkinManagerThreadState.GetData(); LRESULT lResult = CallNextHookEx(pThreadState->m_hHookOldCbtFilter, code, wParam, lParam); if (code == HCBT_CREATEWND && XTPSkinManager()->m_bAutoApplyWindows) { ASSERT(lParam != NULL); LPCREATESTRUCT lpcs = ((LPCBT_CREATEWND)lParam)->lpcs; ASSERT(lpcs != NULL); ASSERT(wParam != NULL); // should be non-NULL HWND HWND hWnd = (HWND)wParam; TCHAR lpszClassName[50]; GetClassName(hWnd, lpszClassName, 50); if (XTPSkinManager()->Lookup(hWnd) != NULL) { TRACE(_T("Warning: Window already attached\n")); } else { XTPSkinManager()->SetHook(hWnd, lpszClassName, lpcs, TRUE); } } return lResult; }
CXTPSkinManagerResourceFile::CXTPSkinManagerResourceFile(CXTPSkinManager* pManager) { m_lpTextFile = m_lpTextFileEnd = NULL; m_hModule = NULL; m_pIniFile = NULL; m_pManager = pManager ? pManager : XTPSkinManager(); m_hInstance = NULL; }
void CALLBACK CXTPSkinObjectFrame::OnTimerInternal(HWND hWnd, UINT nMsg, UINT_PTR uTimerID, DWORD /*dwTime*/) { if (nMsg != WM_TIMER) return; CXTPSkinObjectFrame* pFrame = (CXTPSkinObjectFrame*)XTPSkinManager()->Lookup(hWnd); if (!pFrame) { ::KillTimer(hWnd, uTimerID); return; } pFrame->HandleTimer(uTimerID); }