Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//____________________________________________________________________________
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: apimfc.cpp
//
// Contents:
//
// APIs: MFC specific API in core
//
//____________________________________________________________________________
//
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include "..\inc\mmc.h"
LPFNPSPCALLBACK _MMCHookPropertyPage; HHOOK _MMCmsgHook;
LRESULT CALLBACK _MMCHookCBTProc(int nCode, WPARAM wParam, LPARAM lParam) { ASSERT(_MMCmsgHook != 0);
if (nCode < 0) return CallNextHookEx(_MMCmsgHook, nCode, wParam, lParam);
if (nCode == HCBT_CREATEWND) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CallNextHookEx(_MMCmsgHook, nCode, wParam, lParam); UnhookWindowsHookEx(_MMCmsgHook); } return 0; // Allow the window to be created
}
UINT CALLBACK _MMCHookPropSheetPageProc(HWND hwnd,UINT uMsg,LPPROPSHEETPAGE ppsp) { UINT i = _MMCHookPropertyPage(hwnd, uMsg, ppsp); switch (uMsg) { case PSPCB_CREATE: _MMCmsgHook = SetWindowsHookEx (WH_CBT, _MMCHookCBTProc, GetModuleHandle(NULL), GetCurrentThreadId()); break; }
return i; }
HRESULT STDAPICALLTYPE MMCPropPageCallback(void* vpsp) { if (vpsp == NULL) return E_POINTER;
LPPROPSHEETPAGE psp = (LPPROPSHEETPAGE)vpsp;
if ((void*)psp->pfnCallback == (void*)_MMCHookPropSheetPageProc) return E_UNEXPECTED;
_MMCHookPropertyPage = psp->pfnCallback; psp->pfnCallback = _MMCHookPropSheetPageProc;
return S_OK; }
|