151 lines
5.1 KiB
C
151 lines
5.1 KiB
C
//#pragma once
|
|
//
|
|
//#include "malloc.h"
|
|
//
|
|
//namespace Ooganizer
|
|
//{
|
|
//
|
|
// enum ButtonState{BUTTON_UP,BUTTON_DOWN};
|
|
//
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Clss: HookItem
|
|
// // Desc: Hook Item is used in the HookList. Each HookItem keeps track
|
|
// // of all the addresses needed for each hook, as well as the
|
|
// // hookstate.
|
|
// //
|
|
// // Note: Add State Items for a Window as neccessary
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// class HookItem
|
|
// {
|
|
// public:
|
|
// HWND m_hWnd;
|
|
// WNDPROC m_HookWndProc;
|
|
// WNDPROC m_DefWndProc;
|
|
// ButtonState m_btnState;
|
|
//
|
|
// // Constructor
|
|
// HookItem(HWND hWnd, WNDPROC hookWndProc, WNDPROC defWndProc):
|
|
// m_hWnd(hWnd),
|
|
// m_HookWndProc(hookWndProc),
|
|
// m_DefWndProc(defWndProc),
|
|
// m_btnState(BUTTON_UP)
|
|
// {
|
|
// }
|
|
// };
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Clss: HookList
|
|
// // Desc: Generic List / Custom written list for the sake of speed.
|
|
// // Hook list is made up of individual HookItems.
|
|
// //
|
|
// // Note: You can use GetNext() to iterate thru all the items in the list.
|
|
// // ~adding or removing an item causes GetNext() to start over.
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// class HookList
|
|
// {
|
|
// public:
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: AddItem()
|
|
// // Desc: Adds a HookItem to the List
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// void AddItem(HookItem* pItem)
|
|
// {
|
|
// m_NbrItems++;
|
|
//
|
|
// if ( m_pHookItem == NULL )
|
|
// m_pHookItem = (HookItem*) malloc( m_NbrItems * sizeof( HookItem ) );
|
|
// else
|
|
// m_pHookItem = (HookItem*) realloc( m_pHookItem, m_NbrItems * sizeof( HookItem ) );
|
|
//
|
|
// log(pItem->m_hWnd,"hase been added");
|
|
//
|
|
// memcpy( m_pHookItem+(m_NbrItems-1), pItem, sizeof( HookItem ) );
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: GetItem()
|
|
// // Desc: Get a HookItem from the List
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// HookItem* GetItem(HWND hWnd)
|
|
// {
|
|
// UINT i;
|
|
// HookItem * pItem = m_pHookItem;
|
|
// for( i=0; i<m_NbrItems && pItem->m_hWnd!=hWnd; i++, pItem++ );
|
|
// return ( i < m_NbrItems ) ? pItem : NULL;
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: DelItem()
|
|
// // Desc: Deletes a HookItem from the List
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// void DelItem(HWND hWnd)
|
|
// {
|
|
// UINT i;
|
|
// HookItem * pItem = m_pHookItem;
|
|
// for( i =0; i<m_NbrItems && pItem->m_hWnd!=hWnd; i++, pItem++ );
|
|
// if ( i < m_NbrItems )
|
|
// {
|
|
// m_NbrItems--;
|
|
// memcpy( pItem, pItem+1, ( m_NbrItems - i ) * sizeof( HookItem ) );
|
|
// m_pHookItem = (HookItem*) realloc( m_pHookItem, m_NbrItems * sizeof( HookItem ) );
|
|
//
|
|
// log(pItem->m_hWnd,"hase been deleted");
|
|
// }
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: DelAllItems()
|
|
// // Desc: Deletes all HookItems from the List
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// void DelAllItems()
|
|
// {
|
|
// if ( m_pHookItem != NULL )
|
|
// free( m_pHookItem );
|
|
// m_pHookItem = NULL;
|
|
// m_NbrItems = 0;
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: UnhookAllItems()
|
|
// // Desc: Responsible for iterating through entire list and 'unhooking'
|
|
// // the WndProc function of every HookItem
|
|
// //
|
|
// // Note: has to be put in here since the list has to be iterated here
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// void UnhookAllItems()
|
|
// {
|
|
// HookItem * pItem;
|
|
//
|
|
// while ( m_NbrItems > 0 )
|
|
// {
|
|
// pItem = m_pHookItem+(m_NbrItems-1);
|
|
//
|
|
// // Unhook window
|
|
// HWND hWnd = pItem->m_hWnd;
|
|
//
|
|
// log(hWnd,"Unhooking...");
|
|
// SetWindowLong( hWnd, GWL_WNDPROC, (LONG) pItem->m_DefWndProc );
|
|
// SendMessage( hWnd, WM_NCPAINT, 1, 0 );
|
|
// log(hWnd,"Sending WM_NCPAINT message...");
|
|
//
|
|
// // Delete item
|
|
// DelItem( hWnd );
|
|
// }
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// // Func: CleanUp()
|
|
// // Desc: Unhooks all HookItems in the list and deletes the list
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// void CleanUp()
|
|
// {
|
|
// UnhookAllItems();
|
|
// DelAllItems();
|
|
// }
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// //********************************************************************
|
|
// // Construction / Destruction
|
|
// //********************************************************************
|
|
// //////////////////////////////////////////////////////////////////////
|
|
// HookList():m_NbrItems(0),m_pHookItem(NULL){}
|
|
// ~HookList(){CleanUp();}
|
|
//
|
|
// protected:
|
|
// UINT m_NbrItems;
|
|
// HookItem* m_pHookItem;
|
|
// };
|
|
//}
|