typedef void (CALLBACK *CallBackFun)(void *pOwner);class CDirectButton { public: void SetCallBackFun(CallBackFun Fun){m_CallBackFun=Fun;} private: void * m_ParentWnd;//父窗口c++对象的指针 CallBackFun m_CallBackFun ; };void CDirectButton::OnLButtonUp( CPoint point ) { if (m_DrawRect.PtInRect(point)) { m_CallBackFun(m_ParentWnd); } else { n_ButtonState=Normal ; } }CDirectButton * pButton1=new CDirectButton ; pButton1->SetCallBackFun(CallBackSettingButton);class CDlgWeather : public CDialog { public:static void CALLBACK CallBackSettingButton(void * pWnd);};void CDlgWeather::CallBackSettingButton( void * pWnd ) { CDlgWeather * pDlgWeather= (CDlgWeather *)pWnd ; pDlgWeather->m_IspressSetting=FALSE; ::SendMessage(pDlgWeather->m_hMainWnd,WM_SHOW_SETDLG,0,0); pDlgWeather->m_IspressSetting=TRUE; pDlgWeather->m_bIsTracking=FALSE; }