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

[0] Índice de Mensajes

Ir a la versión completa