コード例 #1
0
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;
}
コード例 #2
0
CXTPSkinManagerResourceFile::CXTPSkinManagerResourceFile(CXTPSkinManager* pManager)
{
	m_lpTextFile = m_lpTextFileEnd = NULL;
	m_hModule = NULL;
	m_pIniFile = NULL;
	m_pManager = pManager ? pManager : XTPSkinManager();
	m_hInstance = NULL;
}
コード例 #3
0
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);
}