X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b7e19213511dee70a8ff168bdcf0e6e022139a56..a2d541ca9c552d1a30ba75970968a7a220f4955a:/samples/ipc/client.cpp diff --git a/samples/ipc/client.cpp b/samples/ipc/client.cpp index 4cabdc42cb..f4d1711fe5 100644 --- a/samples/ipc/client.cpp +++ b/samples/ipc/client.cpp @@ -33,7 +33,7 @@ #include "ddesetup.h" -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) #include "mondrian.xpm" #endif @@ -60,7 +60,7 @@ char ipc_buffer[4000]; wxListBox *the_list = NULL; MyConnection *the_connection = NULL; -MyClient *my_client ; +MyClient *my_client; // ============================================================================ // implementation @@ -74,11 +74,14 @@ MyClient *my_client ; // main frame bool MyApp::OnInit() { - wxString server = "4242"; - wxString hostName = wxGetHostName(); + // service name (DDE classes) or port number (TCP/IP based classes) + wxString service = IPC_SERVICE; + + // ignored under DDE, host name in TCP/IP based classes + wxString hostName = "localhost"; if (argc > 1) - server = argv[1]; + service = argv[1]; if (argc > 2) hostName = argv[2]; @@ -88,7 +91,8 @@ bool MyApp::OnInit() // suppress the log messages from MakeConnection() { wxLogNull nolog; - the_connection = (MyConnection *)my_client->MakeConnection(hostName, server, "IPC TEST"); + the_connection = (MyConnection *) + my_client->MakeConnection(hostName, service, IPC_TOPIC); while ( !the_connection ) { @@ -100,11 +104,11 @@ bool MyApp::OnInit() return FALSE; } - the_connection = (MyConnection *)my_client->MakeConnection(hostName, server, "IPC TEST"); + the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST"); } } - if (!the_connection->StartAdvise("Item")) + if (!the_connection->StartAdvise(IPC_ADVISE_NAME)) wxMessageBox("StartAdvise failed", "Client Demo Error"); // Create the main frame window @@ -118,49 +122,49 @@ int MyApp::OnExit() if (the_connection) { the_connection->Disconnect(); + delete the_connection; + the_connection = NULL; } // will delete the connection too + // Update: Seems it didn't delete the_connection, because there's a leak. + // Deletion is now explicitly done a few lines up. delete my_client; + + return 0; } // Define my frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title) - : wxFrame(frame, -1, title) + : wxFrame(frame, -1, title, wxDefaultPosition, wxSize(300, 200)) { - panel = NULL; - // Give it an icon SetIcon(wxICON(mondrian)); // Make a menubar wxMenu *file_menu = new wxMenu; - file_menu->Append(CLIENT_EXECUTE, "Execute"); - file_menu->Append(CLIENT_REQUEST, "Request"); - file_menu->Append(CLIENT_POKE, "Poke"); - file_menu->Append(CLIENT_QUIT, "Quit"); + file_menu->Append(CLIENT_EXECUTE, "&Execute\tCtrl-E"); + file_menu->Append(CLIENT_REQUEST, "&Request\tCtrl-R"); + file_menu->Append(CLIENT_POKE, "&Poke\tCtrl-P"); + file_menu->Append(CLIENT_QUIT, "&Quit\tCtrl-Q"); wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); + menu_bar->Append(file_menu, "&File"); // Associate the menu bar with the frame SetMenuBar(menu_bar); - // Make a panel - panel = new wxPanel(this); - the_list = new wxListBox(panel, CLIENT_LISTBOX, wxPoint(5, 5)); + // Make a listbox which shows the choices made in the server + the_list = new wxListBox(this, CLIENT_LISTBOX, wxPoint(5, 5)); the_list->Append("Apple"); the_list->Append("Pear"); the_list->Append("Orange"); the_list->Append("Banana"); the_list->Append("Fruit"); - - panel->Fit(); - Fit(); } void MyFrame::OnExecute(wxCommandEvent& event) @@ -204,11 +208,6 @@ MyConnection::MyConnection() { } -MyConnection::~MyConnection() -{ - the_connection = NULL; -} - bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) { if (the_list)