home *** CD-ROM | disk | FTP | other *** search
/ Mastering MFC Development / MMD.ISO / samples / c13 / useatltrigx / useatltrigxdlg.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  2.6 KB  |  115 lines

  1. // UseAtlTrigXDlg.cpp : implementation file
  2.  
  3. #include "stdafx.h"
  4. #include "UseAtlTrigX.h"
  5. #include "UseAtlTrigXDlg.h"
  6.  
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12.  
  13. // CUseAtlTrigXDlg dialog
  14. CUseAtlTrigXDlg::CUseAtlTrigXDlg(CWnd* pParent /*=NULL*/)
  15.     : CDialog(CUseAtlTrigXDlg::IDD, pParent)
  16. {
  17.     //{{AFX_DATA_INIT(CUseAtlTrigXDlg)
  18.         // NOTE: the ClassWizard will add member initialization here
  19.     //}}AFX_DATA_INIT
  20.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  21.     
  22.     m_pTrigX = 0;
  23. }
  24.  
  25. void CUseAtlTrigXDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27.     CDialog::DoDataExchange(pDX);
  28.     //{{AFX_DATA_MAP(CUseAtlTrigXDlg)
  29.         // NOTE: the ClassWizard will add DDX and DDV calls here
  30.     //}}AFX_DATA_MAP
  31. }
  32.  
  33. BEGIN_MESSAGE_MAP(CUseAtlTrigXDlg, CDialog)
  34.     //{{AFX_MSG_MAP(CUseAtlTrigXDlg)
  35.     ON_WM_PAINT()
  36.     ON_WM_QUERYDRAGICON()
  37.     ON_BN_CLICKED(IDC_BUTTON_EXE, OnButtonExe)
  38.     //}}AFX_MSG_MAP
  39. END_MESSAGE_MAP()
  40.  
  41. // CUseAtlTrigXDlg message handlers
  42. BOOL CUseAtlTrigXDlg::OnInitDialog()
  43. {
  44.     CDialog::OnInitDialog();
  45.     SetIcon(m_hIcon, TRUE);            // Set big icon
  46.     SetIcon(m_hIcon, FALSE);        // Set small icon
  47.     
  48.     return TRUE;
  49. }
  50.  
  51. void CUseAtlTrigXDlg::OnPaint() 
  52. {
  53.     if (IsIconic())
  54.     {
  55.         CPaintDC dc(this); // device context for painting
  56.  
  57.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  58.  
  59.         // Center icon in client rectangle
  60.         int cxIcon = GetSystemMetrics(SM_CXICON);
  61.         int cyIcon = GetSystemMetrics(SM_CYICON);
  62.         CRect rect;
  63.         GetClientRect(&rect);
  64.         int x = (rect.Width() - cxIcon + 1) / 2;
  65.         int y = (rect.Height() - cyIcon + 1) / 2;
  66.  
  67.         // Draw the icon
  68.         dc.DrawIcon(x, y, m_hIcon);
  69.     }
  70.     else
  71.     {
  72.         CDialog::OnPaint();
  73.     }
  74. }
  75.  
  76. HCURSOR CUseAtlTrigXDlg::OnQueryDragIcon()
  77. {
  78.     return (HCURSOR) m_hIcon;
  79. }
  80.  
  81. void CUseAtlTrigXDlg::OnButtonExe() 
  82. {
  83.     double x = 1.0, r;
  84.     CString s;
  85.  
  86.     try
  87.     {
  88.         if (0 == m_pTrigX)
  89.             m_pTrigX = ItrigXPtr(CLSID_trigX);
  90.  
  91.         m_pTrigX->ATLcosX(x, &r);
  92.         s.Format("The cosine of %3.1lf is %lf", x, r);
  93.         MessageBox(s);
  94.     }
  95.  
  96.     catch (_com_error &ex)
  97.     {
  98.         _bstr_t bstrSource(ex.Source());
  99.         _bstr_t bstrDescription(ex.Description());
  100.         char szTemp[1024];
  101.         CString csMsg = "Oops - hit an error!\n";
  102.         wsprintf(szTemp, "Code = %08lx\n", ex.Error());
  103.         csMsg += szTemp;
  104.         wsprintf(szTemp, "Code meaning = %s\n", ex.ErrorMessage());
  105.         csMsg += szTemp;
  106.         wsprintf(szTemp, "Source = %S\n", (wchar_t*)bstrSource);
  107.         csMsg += szTemp;
  108.         wsprintf(szTemp, "Description = %S\n", (wchar_t*)bstrDescription);
  109.         csMsg += szTemp;
  110.         MessageBox (csMsg);
  111.         SysFreeString(bstrSource);
  112.         SysFreeString(bstrDescription);
  113.     }
  114. }
  115.