/******************************************************************** 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);
//
扩展的时侯可以让渲染函数以代理模式实现
总结: 用函数指针的好处是, 底层端实现了新的渲染功能后,不用对新渲染功能赋加额外的控制逻辑,从而导致控
制中心不用做出修改。
