类之间的回调定义与使用问题
class CMySocketClient :public CWnd
{
public:
CMySocketClient(void);
~CMySocketClient(void);
public:
int InitAndConnet(HWND hwnd,unsigned int WM_WINSOCK,UINT port,CString ip);
int SendString(CString str);
int StopSocket();
int InitWSAAsyncSelect(void);
afx_msg LRESULT OnClientReceive(WPARAM wParam, LPARAM lParam);
typedef void (*CallBackFunc)(CString); --回调定义
CallBackFunc m_CallBackFunc; --回调定义
int CallBack(CallBackFunc Func); --回调定义
};
--实现--回调
int CMySocketClient::CallBack(CallBackFunc Func)
{
if(Func==NULL)
return 0;
m_CallBackFunc=Func;
return 1;
}
--触发地方--
(*m_CallBackFunc)(str); --在触发时会出错 --- 请问题类与类之间的回调要怎么定义与使用?
--- 调用类的定义--
class CCKeygoeDlg : public CDialog
{
// Construction
public:
CCKeygoeDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CCKeygoeDlg)
enum { IDD = IDD_CKEYGOE_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCKeygoeDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CCKeygoeDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButton1();
public:
afx_msg void OnBnClickedButton2();
public:
afx_msg void OnBnClickedButton3();
public:
afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);
LRESULT OnReadClose(WPARAM wParam,LPARAM lParam);
void static callback(CString str); --使用定义
public:
int m_aa;
CMySocketClient m_MySocketClient;
afx_msg void OnBnClickedOk();
};
--实现--
void CCKeygoeDlg::callback(CString str)
{
AfxMessageBox(str);
}
请问: 请问题类与类之间的回调要怎么定义与使用?是这样写的嘛?
--触发地方--
(*m_CallBackFunc)(str); --在触发时会出错 --- 请问题类与类之间的回调要怎么定义与使用?
--- 调用类的定义--