deriving wxEvtHandler help
Posted: Tue Jan 23, 2007 3:41 pm
Hi,
I can't get events work (this test program compiles and link, but when running event are not trhown).
main.cpp
networkmanager.h
networkmanager.cpp
Whats wrong? any help?
I can't get events work (this test program compiles and link, but when running event are not trhown).
main.cpp
Code: Select all
#include "networkmanager.h"
#include <conio.h>
int main()
{
NetworkManager* net = new NetworkManager();
while(!kbhit())
{
Sleep(1);
}
delete net;
return 0;
}
Code: Select all
#ifndef NETWORKMANAGER_H_INCLUDED
#define NETWORKMANAGER_H_INCLUDED
//------------------------------------------------------------------
#include <wx/wx.h>
#include <wx/socket.h>
#include <iostream>
//------------------------------------------------------------------
#define WX_SERVER_PORT 8000
//------------------------------------------------------------------
class NetworkManager : public wxEvtHandler
{
DECLARE_EVENT_TABLE()
public:
NetworkManager();
~NetworkManager();
void OnEvent(wxSocketEvent& event);
private:
wxSocketServer *server;
};
//------------------------------------------------------------------
Code: Select all
#include "networkmanager.h"
//------------------------------------------------------------------
BEGIN_EVENT_TABLE(NetworkManager, wxEvtHandler)
EVT_SOCKET(wxID_ANY, NetworkManager::OnEvent)
END_EVENT_TABLE()
//------------------------------------------------------------------
NetworkManager::NetworkManager() : wxEvtHandler()// : wxThread(wxTHREAD_JOINABLE)
{
wxIPV4address addr;
addr.Service(WX_SERVER_PORT);
server = new wxSocketServer(addr);
server->SetEventHandler(*this);
server->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_CONNECTION_FLAG |
wxSOCKET_LOST_FLAG | wxSOCKET_INPUT | wxSOCKET_OUTPUT |
wxSOCKET_CONNECTION | wxSOCKET_LOST);
server->Notify(true);
std::cout << "NetworkManager listen at port: " << WX_SERVER_PORT << std::endl;
}
//------------------------------------------------------------------
NetworkManager::~NetworkManager()
{
if(server)
{
server->Close();
delete server;
server = NULL;
}
}
//------------------------------------------------------------------
void NetworkManager::OnEvent(wxSocketEvent& event)
{
switch (event.GetSocketEvent())
{
case wxSOCKET_CONNECTION:
printf("wxSOCKET_CONNECTION");
break;
case wxSOCKET_INPUT:
printf("wxSOCKET_INPUT");
break;
case wxSOCKET_OUTPUT:
printf("wxSOCKET_OUTPUT");
break;
case wxSOCKET_LOST:
printf("wxSOCKET_LOST");
break;
}
}
//------------------------------------------------------------------