MFC对话框转化为dll导出函数的问题,原WSAAsyncSelect获取不到消息~
两种方法,一种是,不用对话框了,直接在导出类中用WSAAsyncSelect,和socket初始化,结果WSAAsyncSelect老是失败,很郁闷,
第二种,,我原来是写成MFC对话框程序,已经是可以运行的一个类似聊天的客户端,,,重新建MFC DLL,添加一个mfc对话框类,把原来的代码COPY进这个对话框类,编译都正常,,消息也发的出去,就是WSAAsyncSelect接收不到消息,,
(第一种方法 WSAAsyncSelect 直接失败 返回10022错误,,第二种 感觉好一些,WSAAsyncSelect 初始化成功了,但是确接收不到消息,)
郁闷了好几天~~~~
两种方法,一种是,不用对话框了,直接在导出类中用WSAAsyncSelect,和socket初始化,结果WSAAsyncSelect老是失败,很郁闷,
第二种,,我原来是写成MFC对话框程序,已经是可以运行的一个类似聊天的客户端,,,重新建MFC DLL,添加一个mfc对话框类,把原来的代码COPY进这个对话框类,编译都正常,,消息也发的出去,就是WSAAsyncSelect接收不到消息,,
(第一种方法 WSAAsyncSelect 直接失败 返回10022错误,,第二种 感觉好一些,WSAAsyncSelect 初始化成功了,但是确接收不到消息,)
郁闷了好几天~~~~
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_CMySocket.InitSrvSocket();
if(SOCKET_ERROR==WSAAsyncSelect(m_CMySocket.m_SrvSocket,NULL,UM_SOCK_GETS,FD_READ))
{
MessageBox("注册网络读取事件失败!");
return 1;
}
return 2;
}
这是第一种方法 WSAAsyncSelect 直接失败 返回10022错
extern "C" __declspec(dllexport) int INIT()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CFMDlg *pDlg=new CFMDlg();
pDlg->Create(IDD_DIALOGXX);
pDlg->ShowWindow(SW_SHOW);
}
这个是第二种~~ WSAAsyncSelect 在对话框里初始化成功了,但是确接收不到消息
试试这种方法看可以不。dll一般只封装函数,不封装变量,变量在dll外部声明内部实现。