diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2005-07-05 11:09:55 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2005-07-05 11:09:55 +0000 |
commit | 9b8cc712d4a41d71840416776bc94ee8485bb9b3 (patch) | |
tree | 7d467fdd6a66bc2b5878d82070d45adbd5c20414 /cppe/demo/IceE/MFC/client/HelloClientDlg.cpp | |
parent | cleaning the cache method out of ReferenceFactory (diff) | |
download | ice-9b8cc712d4a41d71840416776bc94ee8485bb9b3.tar.bz2 ice-9b8cc712d4a41d71840416776bc94ee8485bb9b3.tar.xz ice-9b8cc712d4a41d71840416776bc94ee8485bb9b3.zip |
Changed Ice to IceE EVERYWHERE!!!
Diffstat (limited to 'cppe/demo/IceE/MFC/client/HelloClientDlg.cpp')
-rw-r--r-- | cppe/demo/IceE/MFC/client/HelloClientDlg.cpp | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/cppe/demo/IceE/MFC/client/HelloClientDlg.cpp b/cppe/demo/IceE/MFC/client/HelloClientDlg.cpp new file mode 100644 index 00000000000..d869d083058 --- /dev/null +++ b/cppe/demo/IceE/MFC/client/HelloClientDlg.cpp @@ -0,0 +1,240 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +
+#include "stdafx.h"
+#include "HelloClient.h"
+#include "HelloClientDlg.h"
+
+//#ifdef _DEBUG
+//#define new DEBUG_NEW
+//#endif
+
+CHelloClientDlg::CHelloClientDlg(const IceE::CommunicatorPtr& communicator, CWnd* pParent /*=NULL*/) :
+ CDialog(CHelloClientDlg::IDD, pParent), _communicator(communicator), _currentMode(0),
+ _useSecure(false), _useTimeout(false)
+{
+ _hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+}
+
+void
+CHelloClientDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+}
+
+BEGIN_MESSAGE_MAP(CHelloClientDlg, CDialog)
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ //}}AFX_MSG_MAP
+ ON_BN_CLICKED(IDC_INVOKE, OnSayHello)
+ ON_BN_CLICKED(IDC_FLUSH, OnFlush)
+ ON_BN_CLICKED(IDC_SHUTDOWN, OnShutdown)
+END_MESSAGE_MAP()
+
+BOOL
+CHelloClientDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // Set the icon for this dialog. The framework does this automatically
+ // when the application's main window is not a dialog
+ SetIcon(_hIcon, TRUE); // Set big icon
+ SetIcon(_hIcon, FALSE); // Set small icon
+
+ //
+ // Retrieve the controls.
+ //
+ _mode = (CComboBox*)GetDlgItem(IDC_MODE);
+ _timeout = (CButton*)GetDlgItem(IDC_TIMEOUT);
+ _status = (CStatic*)GetDlgItem(IDC_STATUSBAR);
+
+ //
+ // Use twoway mode as the initial default.
+ //
+ _mode->SetCurSel(_currentMode);
+
+ //
+ // Create the proxy.
+ //
+ IceE::PropertiesPtr properties = _communicator->getProperties();
+ const char* proxyProperty = "Hello.Proxy";
+ std::string proxy = properties->getProperty(proxyProperty);
+ IceE::ObjectPrx obj = _communicator->stringToProxy(proxy);
+ _proxy = Demo::HelloPrx::uncheckedCast(obj);
+ _currentProxy = _proxy;
+ _status->SetWindowText(CString(" Ready"));
+
+ return TRUE; // return TRUE unless you set the focus to a control
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+// to draw the icon. For MFC applications using the document/view model,
+// this is automatically done for you by the framework.
+
+void
+CHelloClientDlg::OnPaint()
+{
+#ifdef _WIN32_WCE
+ CDialog::OnPaint();
+#else
+ if(IsIconic())
+ {
+ CPaintDC dc(this); // device context for painting
+
+ SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
+
+ // Center icon in client rectangle
+ int cxIcon = GetSystemMetrics(SM_CXICON);
+ int cyIcon = GetSystemMetrics(SM_CYICON);
+ CRect rect;
+ GetClientRect(&rect);
+ int x = (rect.Width() - cxIcon + 1) / 2;
+ int y = (rect.Height() - cyIcon + 1) / 2;
+
+ // Draw the icon
+ dc.DrawIcon(x, y, _hIcon);
+ }
+ else
+ {
+ CDialog::OnPaint();
+ }
+#endif
+}
+
+// The system calls this function to obtain the cursor to display while the user drags
+// the minimized window.
+HCURSOR
+CHelloClientDlg::OnQueryDragIcon()
+{
+ return static_cast<HCURSOR>(_hIcon);
+}
+
+void
+CHelloClientDlg::OnSayHello()
+{
+ try
+ {
+ updateProxy();
+ _currentProxy->sayHello();
+ if(_currentProxy->ice_isBatchOneway())
+ {
+ _status->SetWindowText(CString(" Queued batch request"));
+ }
+ else
+ {
+ _status->SetWindowText(CString(" Sent request"));
+ }
+ }
+ catch(const IceE::Exception& ex)
+ {
+ handleException(ex);
+ }
+}
+
+void
+CHelloClientDlg::OnFlush()
+{
+ try
+ {
+ _communicator->flushBatchRequests();
+ _status->SetWindowText(CString(" Flushed batch requests"));
+ }
+ catch(const IceE::Exception& ex)
+ {
+ handleException(ex);
+ }
+}
+
+void
+CHelloClientDlg::OnShutdown()
+{
+ try
+ {
+ updateProxy();
+ _currentProxy->shutdown();
+ if(_currentProxy->ice_isBatchOneway())
+ {
+ _status->SetWindowText(CString(" Queued shutdown request"));
+ }
+ else
+ {
+ _status->SetWindowText(CString(" Sent shutdown request"));
+ }
+ }
+ catch(const IceE::Exception& ex)
+ {
+ handleException(ex);
+ }
+}
+
+void
+CHelloClientDlg::updateProxy()
+{
+ int mode = _mode->GetCurSel();
+ bool timeout = _timeout->GetCheck() == BST_CHECKED;
+ if(mode == _currentMode && timeout == _useTimeout)
+ {
+ return;
+ }
+
+ IceE::ObjectPrx proxy;
+ switch(mode)
+ {
+ case 0:
+ proxy = _proxy->ice_twoway();
+ break;
+ case 1:
+ proxy = _proxy->ice_oneway();
+ break;
+ case 2:
+ proxy = _proxy->ice_batchOneway();
+ break;
+ default:
+ assert(false);
+ }
+ if(timeout)
+ {
+ proxy = proxy->ice_timeout(2000);
+ }
+ else
+ {
+ proxy = proxy->ice_timeout(-1);
+ }
+
+ if(proxy->ice_isTwoway())
+ {
+ _currentProxy = Demo::HelloPrx::checkedCast(proxy);
+ }
+ else
+ {
+ _currentProxy = Demo::HelloPrx::uncheckedCast(proxy);
+ }
+ _currentMode = mode;
+ _useTimeout = timeout;
+}
+
+void
+CHelloClientDlg::handleException(const IceE::Exception& e)
+{
+ try
+ {
+ e.ice_throw();
+ }
+ catch(const IceE::NoEndpointException&)
+ {
+ AfxMessageBox(CString("The proxy does not support the current configuration"),
+ MB_OK|MB_ICONEXCLAMATION);
+ }
+ catch(const IceE::Exception& ex)
+ {
+ AfxMessageBox(CString(ex.toString().c_str()), MB_OK|MB_ICONEXCLAMATION);
+ }
+ _status->SetWindowText(CString(" Ready"));
+}
|