X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..a2d541ca9c552d1a30ba75970968a7a220f4955a:/samples/ipc/client.cpp?ds=sidebyside diff --git a/samples/ipc/client.cpp b/samples/ipc/client.cpp index 9b694cc696..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 @@ -75,7 +75,7 @@ MyClient *my_client ; bool MyApp::OnInit() { // service name (DDE classes) or port number (TCP/IP based classes) - wxString service = "4242"; + wxString service = IPC_SERVICE; // ignored under DDE, host name in TCP/IP based classes wxString hostName = "localhost"; @@ -91,7 +91,8 @@ bool MyApp::OnInit() // suppress the log messages from MakeConnection() { wxLogNull nolog; - the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST"); + the_connection = (MyConnection *) + my_client->MakeConnection(hostName, service, IPC_TOPIC); while ( !the_connection ) { @@ -107,7 +108,7 @@ bool MyApp::OnInit() } } - if (!the_connection->StartAdvise("Item")) + if (!the_connection->StartAdvise(IPC_ADVISE_NAME)) wxMessageBox("StartAdvise failed", "Client Demo Error"); // Create the main frame window @@ -121,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) @@ -207,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)