?? helloclientdlg.cpp
字號:
// **********************************************************************//// Copyright (c) 2003-2007 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#endifusing namespace std;using namespace Demo;CHelloClientDlg::CHelloClientDlg(const Ice::CommunicatorPtr& communicator, CWnd* pParent /*=NULL*/) : CDialog(CHelloClientDlg::IDD, pParent), _communicator(communicator), _currentMode(0), _useSecure(false), _useTimeout(false){ _hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCHelloClientDlg::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()BOOLCHelloClientDlg::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); _secure = (CButton*)GetDlgItem(IDC_SECURE); _timeout = (CButton*)GetDlgItem(IDC_TIMEOUT); _delay = (CButton*)GetDlgItem(IDC_DELAY); _status = (CStatic*)GetDlgItem(IDC_STATUSBAR); // // Use twoway mode as the initial default. // _mode->SetCurSel(_currentMode); // // Create the proxy. // Ice::ObjectPrx obj = _communicator->propertyToProxy("Hello.Proxy"); _proxy = 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.voidCHelloClientDlg::OnPaint() { 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(); }}// The system calls this function to obtain the cursor to display while the user drags// the minimized window.HCURSORCHelloClientDlg::OnQueryDragIcon(){ return static_cast<HCURSOR>(_hIcon);}voidCHelloClientDlg::OnSayHello(){ try { updateProxy(); _currentProxy->sayHello(_delay->GetCheck() == BST_CHECKED ? 2500 : 0); if(_currentProxy->ice_isBatchOneway() || _currentProxy->ice_isBatchDatagram()) { _status->SetWindowText(CString(" Queued batch request")); } else { _status->SetWindowText(CString(" Sent request")); } } catch(const IceUtil::Exception& ex) { handleException(ex); }}voidCHelloClientDlg::OnFlush(){ try { _communicator->flushBatchRequests(); _status->SetWindowText(CString(" Flushed batch requests")); } catch(const IceUtil::Exception& ex) { handleException(ex); }}voidCHelloClientDlg::OnShutdown(){ try { updateProxy(); _currentProxy->shutdown(); if(_currentProxy->ice_isBatchOneway() || _currentProxy->ice_isBatchDatagram()) { _status->SetWindowText(CString(" Queued shutdown request")); } else { _status->SetWindowText(CString(" Sent shutdown request")); } } catch(const IceUtil::Exception& ex) { handleException(ex); }}voidCHelloClientDlg::updateProxy(){ int mode = _mode->GetCurSel(); bool secure = _secure->GetCheck() == BST_CHECKED; bool timeout = _timeout->GetCheck() == BST_CHECKED; if(mode == _currentMode && secure == _useSecure && timeout == _useTimeout) { return; } Ice::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; case 3: proxy = _proxy->ice_datagram(); break; case 4: proxy = _proxy->ice_batchDatagram(); break; default: assert(false); } proxy = proxy->ice_secure(secure); if(timeout) { proxy = proxy->ice_timeout(2000); } else { proxy = proxy->ice_timeout(-1); } if(proxy->ice_isTwoway()) { _currentProxy = HelloPrx::checkedCast(proxy); } else { _currentProxy = HelloPrx::uncheckedCast(proxy); } _currentMode = mode; _useSecure = secure; _useTimeout = timeout;}voidCHelloClientDlg::handleException(const IceUtil::Exception& e){ try { e.ice_throw(); } catch(const Ice::NoEndpointException&) { AfxMessageBox(CString("The proxy does not support the current configuration"), MB_OK|MB_ICONEXCLAMATION); } catch(const IceUtil::Exception& ex) { ostringstream ostr; ostr << ex; string s = ostr.str(); AfxMessageBox(CString(s.c_str()), MB_OK|MB_ICONEXCLAMATION); } _status->SetWindowText(CString(" Ready"));}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -