⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogs.h

📁 WINCE 下的Media Player 播放器控制源代码
💻 H
字号:
// dialogs.h : dialog utilities
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
#include <commdlg.h>
#define MAX_STRING  1024

bool FAILMSG(HRESULT hr)
{
    if (FAILED(hr))
    {
        TCHAR   szError[MAX_STRING];

        ::wsprintf(szError, _T("Error code = %08X"), hr);
        ::MessageBox(NULL, szError, _T("Error"), MB_OK | MB_ICONERROR);
    }

    return FAILED(hr);
}

/////////////////////////////////////////////////////////////////////////////
// CFileOpenDlg

class CFileOpenDlg : public CDialogImpl<CFileOpenDlg>
{
    BEGIN_MSG_MAP(CFileOpenDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_ID_HANDLER(IDOK, OnEndDialog)
        COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
        COMMAND_ID_HANDLER(IDC_FILEOPEN_BROWSE, OnBrowse)
    END_MSG_MAP()

    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        ::SetFocus(GetDlgItem(IDC_FILEOPEN_EDIT));
        CenterWindow();
        return 0;
    }
    LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
    {
        GetDlgItemText(IDC_FILEOPEN_EDIT, m_bstrName.m_str);
        EndDialog(wID);
        return 0;
    }
    LRESULT OnBrowse(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
    {
        USES_CONVERSION;
        OPENFILENAME    ofn;
        TCHAR           szFileName[_MAX_PATH];

        // display open dialog
        memset(&ofn, 0, sizeof(ofn)); // initialize structure to 0/NULL
        szFileName[0] = _T('\0');

        ofn.lStructSize = sizeof(ofn);
        ofn.lpstrFile = szFileName;
        ofn.nMaxFile = sizeof(szFileName)/sizeof(szFileName[0]);
        ofn.lpstrDefExt = NULL;
        ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER;
        ofn.lpstrFilter = _T("All files\0*.*\0");
        ofn.nFilterIndex = 0; 
        ofn.hwndOwner = m_hWnd;
        ofn.hInstance = _Module.GetResourceInstance();

        if (!GetOpenFileName(&ofn))
            return 0;

        m_bstrName = T2OLE(szFileName);
        EndDialog(IDOK);

        return 0;
    }

    enum { IDD = IDD_FILEOPEN_DIALOG };

    CComBSTR m_bstrName;
};

/////////////////////////////////////////////////////////////////////////////
// CStringDlg

class CStringDlg : public CDialogImpl<CStringDlg>
{
    BEGIN_MSG_MAP(CStringDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_ID_HANDLER(IDOK, OnEndDialog)
        COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
    END_MSG_MAP()

    CStringDlg(const TCHAR *szTitle = NULL, const TCHAR *szInitialValue = NULL)
    {
        m_bstrTitle = szTitle;
        m_bstrValue = szInitialValue;
    }

    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        USES_CONVERSION;

        if (m_bstrTitle)
        {
            SetWindowText(OLE2T(m_bstrTitle));
        }

        if (m_bstrValue)
        {
            SetDlgItemText(IDC_STRING_EDIT, OLE2T(m_bstrValue));
        }

        ::SetFocus(GetDlgItem(IDC_STRING_EDIT));
        CenterWindow();

        return 0;
    }
    LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
    {
        GetDlgItemText(IDC_STRING_EDIT, m_bstrValue.m_str);
        EndDialog(wID);
        return 0;
    }

    enum { IDD = IDD_STRING_DIALOG };

    CComBSTR m_bstrValue;
    CComBSTR m_bstrTitle;
};

/////////////////////////////////////////////////////////////////////////////
// CBooleanDlg

class CBooleanDlg : public CDialogImpl<CBooleanDlg>
{
    BEGIN_MSG_MAP(CBooleanDlg)
        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
        COMMAND_ID_HANDLER(IDOK, OnEndDialog)
        COMMAND_ID_HANDLER(IDCANCEL, OnEndDialog)
    END_MSG_MAP()

    CBooleanDlg(const TCHAR *szTitle = NULL, VARIANT_BOOL fInitialValue = VARIANT_FALSE)
    {
        m_bstrTitle = szTitle;
        m_fValue = fInitialValue;
    }

    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        USES_CONVERSION;

        if (m_bstrTitle)
        {
            SetWindowText(OLE2T(m_bstrTitle));
        }
        
        CheckRadioButton(IDC_BOOLEAN_TRUE, IDC_BOOLEAN_FALSE, VARIANT_TRUE == m_fValue ? IDC_BOOLEAN_TRUE : IDC_BOOLEAN_FALSE);

        CenterWindow();
        // Let the system set the focus
        return 1;
    }
    LRESULT OnEndDialog(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
    {
        m_fValue = IsDlgButtonChecked(IDC_BOOLEAN_TRUE) ? VARIANT_TRUE : VARIANT_FALSE;

        EndDialog(wID);
        return 0;
    }

    enum { IDD = IDD_BOOLEAN_DIALOG };

    VARIANT_BOOL m_fValue;
    CComBSTR m_bstrTitle;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -