WSAAsyncSelect函数的句柄如何获取
大虾们,帮帮忙啊
我是菜鸟,刚学服务器编程!
问题是这样的:
void CServerDlg::OnStart()
{
WSADATA wsaData;
WSAStartup (WINSOCK_VERSION, &wsaData);
while(true)
{
SOCKET sock = startListen ();
[color=#0000FF]// HWND hWnd = GetSafeHwnd ();
// HWND hWnd = AfxGetApp()->m_pMainWnd->GetSafeHwnd();
// HWND hWnd = m_hWnd; // GetParentFrame()->m_hWnd;
// HWND hWnd = GetActiveWindow();
// HWND hWnd = (HWND)GetForegroundWindow();
// CWnd * hWnd=~GetForegroundWindow()[/color]
int nResult = WSAAsyncSelect (sock, m_hWnd, WM_USERMSG, FD_READ | FD_WRITE | FD_ACCEPT | FD_CLOSE);
if(nResult == SOCKET_ERROR)
{
AfxMessageBox ("WSAAsyncSelect函数调用错误!"+ (CString)WSAGetLastError ());//+ GetLastError());
// m_list.InsertString(0,(CString)WSAGetLastError () );//AddString ((CString)WSAGetLastError () );
UpdateData (false);
return;
}
}
}
程序错误发生在int nResult = WSAAsyncSelect (sock, m_hWnd, WM_USERMSG, FD_READ | FD_WRITE | FD_ACCEPT | FD_CLOSE);
当我运行后,按"启动"后,WSAAsyncSelect调用错误,错误为代码为6,提示为句柄无效!
我用
// HWND hWnd = GetSafeHwnd ();
// HWND hWnd = AfxGetApp()->m_pMainWnd->GetSafeHwnd();
// HWND hWnd = m_hWnd; // GetParentFrame()->m_hWnd;
// HWND hWnd = GetActiveWindow();
// HWND hWnd = (HWND)GetForegroundWindow();
// CWnd * hWnd=~GetForegroundWindow()
获取句柄也无效.
大虾们有时间的话帮我看看,如果这个问题不解决,课程设计就做不下去了啊.
麻烦你们了!