home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 October / Chip_2002-10_cd1.bin / zkuste / vbasic / Data / Utils / WMP71SDK.exe / dialogs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-07-31  |  4.4 KB  |  174 lines

  1. // dialogs.h : dialog utilities
  2. //
  3. // Copyright (C) 1996-2001 Microsoft Corporation
  4. // All rights reserved.
  5. //
  6.  
  7. #define MAX_STRING  1024
  8.  
  9. HRESULT FAILMSG(HRESULT hr)
  10. {
  11.     if (FAILED(hr))
  12.     {
  13.         TCHAR   szError[MAX_STRING];
  14.  
  15.         ::wsprintf(szError, _T("Error code = %08X"), hr);
  16.         ::MessageBox(NULL, szError, _T("Error"), MB_OK | MB_ICONERROR);
  17.     }
  18.  
  19.     return FAILED(hr);
  20. }
  21.  
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CFileOpenDlg
  24.  
  25. class CFileOpenDlg : public CDialogImpl<CFileOpenDlg>
  26. {
  27.     BEGIN_MSG_MAP(CFileOpenDlg)
  28.         MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  29.         COMMAND_ID_HANDLER(IDOK, OnEndDialog)
  30.         COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
  31.         COMMAND_ID_HANDLER(IDC_FILEOPEN_BROWSE, OnBrowse)
  32.     END_MSG_MAP()
  33.  
  34.     LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  35.     {
  36.         ::SetFocus(GetDlgItem(IDC_FILEOPEN_EDIT));
  37.         CenterWindow();
  38.         return 0;
  39.     }
  40.     LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  41.     {
  42.         GetDlgItemText(IDC_FILEOPEN_EDIT, m_bstrName.m_str);
  43.         EndDialog(wID);
  44.         return 0;
  45.     }
  46.     LRESULT OnBrowse(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  47.     {
  48.         USES_CONVERSION;
  49.         OPENFILENAME    ofn;
  50.         TCHAR           szFileName[_MAX_PATH];
  51.  
  52.         // display open dialog
  53.         memset(&ofn, 0, sizeof(ofn)); // initialize structure to 0/NULL
  54.         szFileName[0] = _T('\0');
  55.  
  56.         ofn.lStructSize = sizeof(ofn);
  57.         ofn.lpstrFile = szFileName;
  58.         ofn.nMaxFile = sizeof(szFileName)/sizeof(szFileName[0]);
  59.         ofn.lpstrDefExt = NULL;
  60.         ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  61.         ofn.lpstrFilter = _T("All files\0*.*\0");
  62.         ofn.nFilterIndex = 0; 
  63.         ofn.hwndOwner = m_hWnd;
  64.         ofn.hInstance = _Module.GetResourceInstance();
  65.  
  66.         if (!GetOpenFileName(&ofn))
  67.             return 0;
  68.  
  69.         m_bstrName = T2OLE(szFileName);
  70.         EndDialog(IDOK);
  71.  
  72.         return 0;
  73.     }
  74.  
  75.     enum { IDD = IDD_FILEOPEN_DIALOG };
  76.  
  77.     CComBSTR m_bstrName;
  78. };
  79.  
  80. /////////////////////////////////////////////////////////////////////////////
  81. // CStringDlg
  82.  
  83. class CStringDlg : public CDialogImpl<CStringDlg>
  84. {
  85.     BEGIN_MSG_MAP(CStringDlg)
  86.         MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  87.         COMMAND_ID_HANDLER(IDOK, OnEndDialog)
  88.         COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
  89.     END_MSG_MAP()
  90.  
  91.     CStringDlg(const TCHAR *szTitle = NULL, const TCHAR *szInitialValue = NULL)
  92.     {
  93.         m_bstrTitle = szTitle;
  94.         m_bstrValue = szInitialValue;
  95.     }
  96.  
  97.     LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  98.     {
  99.         USES_CONVERSION;
  100.  
  101.         if (m_bstrTitle)
  102.         {
  103.             SetWindowText(OLE2T(m_bstrTitle));
  104.         }
  105.  
  106.         if (m_bstrValue)
  107.         {
  108.             SetDlgItemText(IDC_STRING_EDIT, OLE2T(m_bstrValue));
  109.         }
  110.  
  111.         ::SetFocus(GetDlgItem(IDC_STRING_EDIT));
  112.         CenterWindow();
  113.  
  114.         return 0;
  115.     }
  116.     LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  117.     {
  118.         GetDlgItemText(IDC_STRING_EDIT, m_bstrValue.m_str);
  119.         EndDialog(wID);
  120.         return 0;
  121.     }
  122.  
  123.     enum { IDD = IDD_STRING_DIALOG };
  124.  
  125.     CComBSTR m_bstrValue;
  126.     CComBSTR m_bstrTitle;
  127. };
  128.  
  129. /////////////////////////////////////////////////////////////////////////////
  130. // CBooleanDlg
  131.  
  132. class CBooleanDlg : public CDialogImpl<CBooleanDlg>
  133. {
  134.     BEGIN_MSG_MAP(CBooleanDlg)
  135.         MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  136.         COMMAND_ID_HANDLER(IDOK, OnEndDialog)
  137.         COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
  138.     END_MSG_MAP()
  139.  
  140.     CBooleanDlg(const TCHAR *szTitle = NULL, VARIANT_BOOL fInitialValue = VARIANT_FALSE)
  141.     {
  142.         m_bstrTitle = szTitle;
  143.         m_fValue = fInitialValue;
  144.     }
  145.  
  146.     LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  147.     {
  148.         USES_CONVERSION;
  149.  
  150.         if (m_bstrTitle)
  151.         {
  152.             SetWindowText(OLE2T(m_bstrTitle));
  153.         }
  154.         
  155.         CheckRadioButton(IDC_BOOLEAN_TRUE, IDC_BOOLEAN_FALSE, (VARIANT_TRUE == m_fValue) ? IDC_BOOLEAN_TRUE : IDC_BOOLEAN_FALSE);
  156.  
  157.         CenterWindow();
  158.         // Let the system set the focus
  159.         return 1;
  160.     }
  161.     LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
  162.     {
  163.         m_fValue = IsDlgButtonChecked(IDC_BOOLEAN_TRUE) ? VARIANT_TRUE : VARIANT_FALSE;
  164.  
  165.         EndDialog(wID);
  166.         return 0;
  167.     }
  168.  
  169.     enum { IDD = IDD_BOOLEAN_DIALOG };
  170.  
  171.     VARIANT_BOOL m_fValue;
  172.     CComBSTR m_bstrTitle;
  173. };
  174.