/********************************************************************
file name : g:/工具源码/WinCE/OvlManager/OvlManager/Listen.h
author : Clark
created : 27:1:2011 16:09
purpose :
*********************************************************************/
接口
typedef void RENDER_FUN(void* pThis, HDC hdc);
class CListen
{
public:
CListen(HWND hWnd, RECT rtWindows, HINSTANCEUserEx* hResource);
~CListen(void);
void Hit(POINT* ptMouse);
void Render(HDC hdc)
{
if( WAIT_OBJECT_0 == WaitForSingleObject(m_hMutex,INFINITE))
{
m_pRenderFun(this, hdc);
ReleaseMutex(m_hMutex);
}
}
void SetRenderFun( RENDER_FUN* pRender )
{
if( WAIT_OBJECT_0 == WaitForSingleObject(m_hMutex,INFINITE))
{
m_pRenderFun = pRender;
ReleaseMutex(m_hMutex);
}
}
private:
static void RenderUSBCONNECT( LPVOID pThis, HDC hdc);
static void RenderLOWPOWER( LPVOID pThis, HDC hdc);
static void RenderDESK( LPVOID pThis, HDC hdc);
static void RenderDefault( LPVOID pThis, HDC hdc);
friend static DWORD WINAPI ListenThread(LPVOID i_lparam);
RENDER_FUN* m_pRenderFun;
HANDLE m_hMutex;
};
使用
g_pListen->Render((HDC) wParam);
g_pListen->Hit(&ptMouse);
//////////////////////////
扩展的时侯可以让渲染函数以代理模式实现
总结: 用函数指针的好处是, 底层端实现了新的渲染功能后,不用对新渲染功能赋加额外的控制逻辑,从而导致控
制中心不用做出修改。