home *** CD-ROM | disk | FTP | other *** search
/ BUG 4 / BUGCD1997_05.BIN / aplic / visualj / vjtrial.exe / RCDATA / CABINET / mfcapwz.dll / TEMPLATE / DIALOG.CPP < prev    next >
C/C++ Source or Header  |  1997-01-28  |  6KB  |  276 lines

  1. // $$dlg_ifile$$.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "$$root$$.h"
  6. #include "$$dlg_hfile$$.h"
  7. $$IF(AUTOMATION)
  8. #include "$$dlgautoproxy_hfile$$.h"
  9. $$ENDIF //AUTOMATION
  10.  
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16.  
  17. $$IF(ABOUT)
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CAboutDlg dialog used for App About
  20.  
  21. class CAboutDlg : public CDialog
  22. {
  23. public:
  24.     CAboutDlg();
  25.  
  26. // Dialog Data
  27.     //{{AFX_DATA(CAboutDlg)
  28.     enum { IDD = IDD_ABOUTBOX };
  29.     //}}AFX_DATA
  30.  
  31.     // ClassWizard generated virtual function overrides
  32.     //{{AFX_VIRTUAL(CAboutDlg)
  33.     protected:
  34.     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  35.     //}}AFX_VIRTUAL
  36.  
  37. // Implementation
  38. protected:
  39.     //{{AFX_MSG(CAboutDlg)
  40.     //}}AFX_MSG
  41.     DECLARE_MESSAGE_MAP()
  42. };
  43.  
  44. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  45. {
  46.     //{{AFX_DATA_INIT(CAboutDlg)
  47.     //}}AFX_DATA_INIT
  48. }
  49.  
  50. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  51. {
  52.     CDialog::DoDataExchange(pDX);
  53.     //{{AFX_DATA_MAP(CAboutDlg)
  54.     //}}AFX_DATA_MAP
  55. }
  56.  
  57. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  58.     //{{AFX_MSG_MAP(CAboutDlg)
  59.         // No message handlers
  60.     //}}AFX_MSG_MAP
  61. END_MESSAGE_MAP()
  62.  
  63. $$ENDIF //ABOUT
  64. /////////////////////////////////////////////////////////////////////////////
  65. // $$DLG_CLASS$$ dialog
  66. $$IF(AUTOMATION)
  67.  
  68. IMPLEMENT_DYNAMIC($$DLG_CLASS$$, $$DLG_BASE_CLASS$$);
  69. $$ENDIF //AUTOMATION
  70.  
  71. $$DLG_CLASS$$::$$DLG_CLASS$$(CWnd* pParent /*=NULL*/)
  72.     : $$DLG_BASE_CLASS$$($$DLG_CLASS$$::IDD, pParent)
  73. {
  74.     //{{AFX_DATA_INIT($$DLG_CLASS$$)
  75.         // NOTE: the ClassWizard will add member initialization here
  76.     //}}AFX_DATA_INIT
  77. $$IF(VERBOSE)
  78.     // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  79. $$ENDIF
  80.     m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  81. $$IF(AUTOMATION)
  82.     m_pAutoProxy = NULL;
  83. $$ENDIF //AUTOMATION
  84. }
  85. $$IF(AUTOMATION)
  86.  
  87. $$DLG_CLASS$$::~$$DLG_CLASS$$()
  88. {
  89. $$IF(VERBOSE)
  90.     // If there is an automation proxy for this dialog, set
  91.     //  its back pointer to this dialog to NULL, so it knows
  92.     //  the dialog has been deleted.
  93. $$ENDIF //VERBOSE
  94.     if (m_pAutoProxy != NULL)
  95.         m_pAutoProxy->m_pDialog = NULL;
  96. }
  97. $$ENDIF //AUTOMATION
  98.  
  99. void $$DLG_CLASS$$::DoDataExchange(CDataExchange* pDX)
  100. {
  101.     $$DLG_BASE_CLASS$$::DoDataExchange(pDX);
  102.     //{{AFX_DATA_MAP($$DLG_CLASS$$)
  103.         // NOTE: the ClassWizard will add DDX and DDV calls here
  104.     //}}AFX_DATA_MAP
  105. }
  106.  
  107. BEGIN_MESSAGE_MAP($$DLG_CLASS$$, $$DLG_BASE_CLASS$$)
  108.     //{{AFX_MSG_MAP($$DLG_CLASS$$)
  109. $$IF(ABOUT)
  110.     ON_WM_SYSCOMMAND()
  111. $$ENDIF
  112. $$IF(HELP)
  113.     ON_WM_DESTROY()
  114. $$ENDIF
  115. $$IF(AUTOMATION)
  116.     ON_WM_CLOSE()
  117. $$ENDIF
  118.     ON_WM_PAINT()
  119.     ON_WM_QUERYDRAGICON()
  120.     //}}AFX_MSG_MAP
  121. END_MESSAGE_MAP()
  122.  
  123. /////////////////////////////////////////////////////////////////////////////
  124. // $$DLG_CLASS$$ message handlers
  125.  
  126. BOOL $$DLG_CLASS$$::OnInitDialog()
  127. {
  128.     $$DLG_BASE_CLASS$$::OnInitDialog();
  129. $$IF(ABOUT)
  130.  
  131.     // Add "About..." menu item to system menu.
  132.  
  133.     // IDM_ABOUTBOX must be in the system command range.
  134.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  135.     ASSERT(IDM_ABOUTBOX < 0xF000);
  136.  
  137.     CMenu* pSysMenu = GetSystemMenu(FALSE);
  138.     if (pSysMenu != NULL)
  139.     {
  140.         CString strAboutMenu;
  141.         strAboutMenu.LoadString(IDS_ABOUTBOX);
  142.         if (!strAboutMenu.IsEmpty())
  143.         {
  144. $$IF(INSTALLED_MAC)
  145. #ifdef _MAC
  146.             // On the Macintosh, the "About..." menu item is already there.  We
  147.             //  just need to rename it and attach it to the about command.
  148.             pSysMenu->ModifyMenu(0, MF_BYPOSITION, IDM_ABOUTBOX, strAboutMenu);
  149. #else
  150. $$ENDIF //INSTALLED_MAC        
  151.             pSysMenu->AppendMenu(MF_SEPARATOR);
  152.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  153. $$IF(INSTALLED_MAC)
  154. #endif
  155. $$ENDIF
  156.         }
  157.     }
  158. $$ENDIF //ABOUT
  159.  
  160. $$IF(VERBOSE)
  161.     // Set the icon for this dialog.  The framework does this automatically
  162.     //  when the application's main window is not a dialog
  163. $$ENDIF //VERBOSE
  164.     SetIcon(m_hIcon, TRUE);            // Set big icon
  165.     SetIcon(m_hIcon, FALSE);        // Set small icon
  166.     
  167.     // TODO: Add extra initialization here
  168.     
  169.     return TRUE;  // return TRUE  unless you set the focus to a control
  170. }
  171. $$IF(ABOUT)
  172.  
  173. void $$DLG_CLASS$$::OnSysCommand(UINT nID, LPARAM lParam)
  174. {
  175.     if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  176.     {
  177.         CAboutDlg dlgAbout;
  178.         dlgAbout.DoModal();
  179.     }
  180.     else
  181.     {
  182.         $$DLG_BASE_CLASS$$::OnSysCommand(nID, lParam);
  183.     }
  184. }
  185. $$ENDIF //ABOUT
  186. $$IF(HELP)
  187.  
  188. void $$DLG_CLASS$$::OnDestroy()
  189. {
  190.     WinHelp(0L, HELP_QUIT);
  191.     $$DLG_BASE_CLASS$$::OnDestroy();
  192. }
  193. $$ENDIF //HELP
  194.  
  195. // If you add a minimize button to your dialog, you will need the code below
  196. //  to draw the icon.  For MFC applications using the document/view model,
  197. //  this is automatically done for you by the framework.
  198.  
  199. void $$DLG_CLASS$$::OnPaint() 
  200. {
  201.     if (IsIconic())
  202.     {
  203.         CPaintDC dc(this); // device context for painting
  204.  
  205.         SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  206.  
  207.         // Center icon in client rectangle
  208.         int cxIcon = GetSystemMetrics(SM_CXICON);
  209.         int cyIcon = GetSystemMetrics(SM_CYICON);
  210.         CRect rect;
  211.         GetClientRect(&rect);
  212.         int x = (rect.Width() - cxIcon + 1) / 2;
  213.         int y = (rect.Height() - cyIcon + 1) / 2;
  214.  
  215.         // Draw the icon
  216.         dc.DrawIcon(x, y, m_hIcon);
  217.     }
  218.     else
  219.     {
  220.         $$DLG_BASE_CLASS$$::OnPaint();
  221.     }
  222. }
  223.  
  224. $$IF(VERBOSE)
  225. // The system calls this to obtain the cursor to display while the user drags
  226. //  the minimized window.
  227. $$ENDIF
  228. HCURSOR $$DLG_CLASS$$::OnQueryDragIcon()
  229. {
  230.     return (HCURSOR) m_hIcon;
  231. }
  232. $$IF(AUTOMATION)
  233. $$IF(VERBOSE)
  234.  
  235. // Automation servers should not exit when a user closes the UI
  236. //  if a controller still holds on to one of its objects.  These
  237. //  message handlers make sure that if the proxy is still in use,
  238. //  then the UI is hidden but the dialog remains around if it
  239. //  is dismissed.
  240. $$ENDIF //VERBOSE
  241.  
  242. void $$DLG_CLASS$$::OnClose() 
  243. {
  244.     if (CanExit())
  245.         $$DLG_BASE_CLASS$$::OnClose();
  246. }
  247.  
  248. void $$DLG_CLASS$$::OnOK() 
  249. {
  250.     if (CanExit())
  251.         $$DLG_BASE_CLASS$$::OnOK();
  252. }
  253.  
  254. void $$DLG_CLASS$$::OnCancel() 
  255. {
  256.     if (CanExit())
  257.         $$DLG_BASE_CLASS$$::OnCancel();
  258. }
  259.  
  260. BOOL $$DLG_CLASS$$::CanExit()
  261. {
  262. $$IF(VERBOSE)
  263.     // If the proxy object is still around, then the automation
  264.     //  controller is still holding on to this application.  Leave
  265.     //  the dialog around, but hide its UI.
  266. $$ENDIF //VERBOSE
  267.     if (m_pAutoProxy != NULL)
  268.     {
  269.         ShowWindow(SW_HIDE);
  270.         return FALSE;
  271.     }
  272.  
  273.     return TRUE;
  274. }
  275. $$ENDIF //AUTOMATION
  276.