MFC是否能使用函数指针作为静态的成员变量
//Class
class MMMM: public CSocketComm
{
public:
MMMM();
virtual ~MMMM();
public:
void (WINAPI *SocketCallBack)(UINT uEvent);
};
//callback function
void WINAPI SocketEventCallBack(UINT uEvent)
{
AfxMessageBox(_T("niubi!!"));
}
这样做没有问题
但是每次实例化这个类的 时候都要设置一下
pmmmm->SocketCallBack = SocketEventCallBack;
然后我就想了,为什么不能定义成static 的?
然后我讲类中的那行定义 改写成
static void (WINAPI *SocketCallBack)(UINT uEvent);
在设置的时候这样调用:
MMMM::SocketCallBack = SocketEventCallBack
但是 这是根本无法通过链接
为什么呢?
class MMMM: public CSocketComm
{
public:
MMMM();
virtual ~MMMM();
public:
void (WINAPI *SocketCallBack)(UINT uEvent);
};
//callback function
void WINAPI SocketEventCallBack(UINT uEvent)
{
AfxMessageBox(_T("niubi!!"));
}
这样做没有问题
但是每次实例化这个类的 时候都要设置一下
pmmmm->SocketCallBack = SocketEventCallBack;
然后我就想了,为什么不能定义成static 的?
然后我讲类中的那行定义 改写成
static void (WINAPI *SocketCallBack)(UINT uEvent);
在设置的时候这样调用:
MMMM::SocketCallBack = SocketEventCallBack
但是 这是根本无法通过链接
为什么呢?
...全文
相关推荐
CSerialPort串口类(最新版2020版),封装成DLL库(在静态库中使用 MFC)
这种方法使得静态库项目无需链接到MFC库,降低了最终程序的体积和依赖性。在实际应用中,调用者可以通过以下步骤使用CSerialPort类:1.
MFC对话框打印预览实现
**创建MFC对话框工程**:首先,在Visual Studio中创建一个MFC对话框工程,选择在共享库中调用。这意味着你的应用程序将使用动态链接库(DLL)形式的MFC库,而不是静态链接。
C++ 关于MFC多线程编程的注意事项
总结起来,在MFC中进行多线程编程时,要注意以下几点:1. 使用`AfxBeginThread`创建线程,提供线程函数指针和参数。2.
MFC直接用AfxBeginThread创建线程实例
**AfxBeginThread的使用** `AfxBeginThread`是MFC中启动新线程的标准方法。它接受两个参数:一个是线程函数指针,另一个是传递给线程函数的参数。
MFC技术内幕系列(1-5全)
- **文件格式**:MFC支持二进制和文本两种文件格式。通过设置`CFile::m_bBinary`成员变量来指定文件的格式。


