Programación General > Visual C++
MFC: ¿Cómo enviar un mensaje de un método a otro?
(1/1)
SlackDeb:
Hola:
Tengo un servidor escrito en visual c++, y estoy atascado tratando de enviar un mensaje de la funcion iniciaescucha a la funcion onaccept. La verdad es que no se como hacerlo.
El codigo es el siguiente:
--- Código: Text ---void CSocketEscuchaP::OnAccept(int nErrorCode){ if (nErrorCode == 0) { OTRACE("Conexión establecida"); m_pFrame->Conecta(); } } BOOL CSocketEscuchaP::IniciaEscucha(CMainFrame *pFrame, UINT nPort){ ASSERT(pFrame); m_pFrame = pFrame; /* Create socket for incoming connections */ if ((servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) return FALSE; /* Construct local address structure */ memset(&echoServAddr, 0, sizeof(echoServAddr)); /* Zero out structure */ echoServAddr.sin_family = AF_INET; /* Internet address family */ echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */ echoServAddr.sin_port = htons(nPort); /* Local port */ /* Bind to the local address */ if (bind(servSock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) return FALSE; /* Mark the socket so it will listen for incoming connections */ if (listen(servSock, 1) < 0) return FALSE; for (;;) /* Run forever */ { /* Set the size of the in-out parameter */ clntLen = sizeof(echoClntAddr); /* Wait for a client to connect */ [color=#FF0000] if ((clntSock = accept(servSock, (struct sockaddr *) &echoClntAddr, &clntLen)) < 0)[/color] MessageBox(0,"Error en IniciaEscucha","SocketEscuchaP.cpp",0); else { break; } }return TRUE;}
La idea es que si accept es correcto se envie un mensaje a la funcion onaccept, la cual establece una conexion en otra clase.
SlackDeb:
Despues de mirar algunos codigos MFC, he podido llegar a lo sgte:
He añadido lo siguiente al archivo CSocketEscuchaP.h
--- Código: Text ---#define WM_MYMESSAGE1 WM_USERafx_msg void OnAccept(WPARAM wParam, LPARAM lParam);//le agregué el afx_msg En el archivo CSocketEscuchaP.cpp
--- Código: Text ---BEGIN_MESSAGE_MAP(CSocketEscuchaP, CObject) //{{AFX_MSG_MAP(CSocketEscucha) //}}AFX_MSG_MAP ON_MESSAGE(WM_MYMESSAGE1,OnAccept)END_MESSAGE_MAP().....CSocketEscuchaP::OnAccept(...){ MessageBox(0,"OnAccept No Falla","SocketEscuchaP.cpp",0); OTRACE("Conexión establecida"); m_pFrame->Conecta();}CSocketEscuchaP::FuncionSocketEscucha(){CWnd MyCWnd ;PostMessage(MyCWnd,WM_MYMESSAGE1,0,0); //Esta es el mensaje que se envía}
Con todo ello no me funciona, pues nunca se entra a la funcion OnAccept().
¿Alguna idea de que es lo que falla?
Navegación
Ir a la versión completa