📄 atlwince.h
字号:
::SHInitDialog(&shidi);
}
// IDC_INFOSTATIC background setting
LRESULT OnColorStatic(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (::GetDlgCtrlID((HWND)lParam) == IDC_INFOSTATIC)
{
::SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)::GetSysColorBrush(COLOR_INFOBK);
}
return bHandled = FALSE;
}
// Menu dialog ending
LRESULT OnMenuClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
T* pT = static_cast<T*>(this);
pT->StdCloseDialog((WORD)(wID - ID_MENU_OK + IDOK));
return 0;
}
// Standard dialog ending: may be used with any command
LRESULT OnCloseCmd(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
T* pT = static_cast<T*>(this);
pT->StdCloseDialog(wID);
return 0;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdDialogImplBase - Base implementation of standard PPC/SmartPhone dialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true, class TBase = ATL::CDialogImpl< T > >
class ATL_NO_VTABLE CStdDialogImplBase :
public TBase,
public CStdDialogBase<T, t_shidiFlags, t_bModal>
{
public:
#ifdef WIN32_PLATFORM_PSPC
BOOL GetClientRect(LPRECT lpRect)
{
return CStdDialogBase<T, t_shidiFlags, t_bModal>::GetClientRect(lpRect);
}
BOOL SetWindowText(LPCTSTR lpszString)
{
return CStdDialogBase<T, t_shidiFlags, t_bModal>::SetWindowText(lpszString);
}
#endif
BEGIN_MSG_MAP(CStdDialogImplBase)
#ifdef WIN32_PLATFORM_PSPC // Pocket PC title and SIP
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
#elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key
MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
#endif
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
#ifdef _DEBUG
T* pT = static_cast<T*>(this);
ATLASSERT(t_bModal == pT->m_bModal);
#endif
StdPlatformInit();
StdShidInit();
return bHandled = FALSE;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdDialogImpl - implementation of standard PPC/SmartPhone dialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdDialogImpl : public CStdDialogImplBase< T, t_shidiFlags, t_bModal>
{};
///////////////////////////////////////////////////////////////////////////////
// CStdIndirectDialogImpl - implementation of standard indirect PPC/SmartPhone dialog
#if defined __ATLDLGS_H__
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true>
class ATL_NO_VTABLE CStdIndirectDialogImpl :
public CIndirectDialogImpl< T, CMemDlgTemplate, CStdDialogImpl<T, t_shidiFlags, t_bModal> >
{
public:
typedef CIndirectDialogImpl< T, CMemDlgTemplate, CStdDialogImpl<T, t_shidiFlags, t_bModal> > _baseClass;
typedef CStdDialogImpl<T, t_shidiFlags, t_bModal> _baseStd;
INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
{
ATLASSERT(t_bModal);
if (!m_Template.IsValid())
CreateTemplate();
if (m_Template.IsTemplateEx())
{
if (m_Template.GetTemplateExPtr()->style & DS_CENTER)
{
ATLASSERT(m_Template.GetTemplateExPtr()->style ^ WS_CHILD);
GetTemplateExPtr()->style |= WS_POPUP;
}
}
else
{
if (m_Template.GetTemplatePtr()->style & DS_CENTER)
{
ATLASSERT(m_Template.GetTemplatePtr()->style ^ WS_CHILD);
m_Template.GetTemplatePtr()->style |= WS_POPUP;
}
}
return _baseClass::DoModal(hWndParent, dwInitParam);
}
HWND Create(HWND hWndParent, LPARAM dwInitParam = NULL)
{
ATLASSERT(!t_bModal);
if (!m_Template.IsValid())
CreateTemplate();
if (m_Template.IsTemplateEx())
{
if (GetTemplateExPtr()->style & DS_CENTER)
{
ATLASSERT(GetTemplateExPtr()->style ^ WS_CHILD);
GetTemplateExPtr()->style |= WS_POPUP;
}
}
else
{
if (GetTemplatePtr()->style & DS_CENTER)
{
ATLASSERT(GetTemplatePtr()->style ^ WS_CHILD);
GetTemplatePtr()->style |= WS_POPUP;
}
}
return _baseClass::Create(hWndParent, dwInitParam);
}
BEGIN_MSG_MAP(CStdIndirectDialogImpl)
CHAIN_MSG_MAP(_baseStd)
END_MSG_MAP()
};
#endif // defined __ATLDLGS_H__
#ifndef _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdAxDialogImpl - implementation of standard PPC/SmartPhone AxDialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdAxDialogImpl : public CStdDialogImplBase< T, t_shidiFlags, t_bModal, ATL::CAxDialogImpl< T > >
{};
#endif // _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdSimpleDialog - standard PPC/SmartPhone simple dialog with SHIDIF_xxx flags
template <WORD t_wDlgTemplateID, UINT t_shidiFlags = WTL_STD_SHIDIF>
class CStdSimpleDialog :
public ATL::CSimpleDialog<t_wDlgTemplateID, FALSE>,
public CStdDialogBase<CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>, t_shidiFlags>
{
public:
typedef CStdDialogBase<CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>, t_shidiFlags> baseClass;
#ifdef WIN32_PLATFORM_PSPC
BOOL GetClientRect(LPRECT lpRect)
{
return baseClass::GetClientRect(lpRect);
}
BOOL SetWindowText(LPCTSTR lpszString)
{
return baseClass::SetWindowText(lpszString);
}
#endif
BEGIN_MSG_MAP(CStdSimpleDialog)
#ifdef WIN32_PLATFORM_PSPC // Pocket PC title and SIP
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
#elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key
MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
#endif
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
StdPlatformInit();
StdShidInit();
return bHandled = FALSE;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdDialogResizeImplBase - Base implementation of orientation resizing standard PPC/SmartPhone dialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true, class TBase = ATL::CDialogImpl<T> >
class ATL_NO_VTABLE CStdDialogResizeImplBase :
public CStdDialogImplBase< T, t_shidiFlags, t_bModal, TBase>,
public CDialogResize<T>
{
public:
// Note: BEGIN_DLGRESIZE_MAP is required in the derived class.
BEGIN_MSG_MAP(CStdResizeDialogImplBase)
#ifdef WIN32_PLATFORM_PSPC // Pocket PC title
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
#elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key
MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
#endif
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
CHAIN_MSG_MAP(CDialogResize< T >)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
#ifdef _DEBUG
T* pT = static_cast<T*>(this);
ATLASSERT(t_bModal == pT->m_bModal);
#endif
StdPlatformInit();
DlgResize_Init(FALSE);
StdShidInit();
return bHandled = FALSE;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdDialogResizeImpl - implementation of orientation resizing standard PPC/SmartPhone dialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdDialogResizeImpl : public CStdDialogResizeImplBase< T, t_shidiFlags, t_bModal>
{};
#ifndef _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdAxDialogResizeImpl - implementation of orientation resizing standard PPC/SmartPhone AxDialog
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdAxDialogResizeImpl : public CStdDialogResizeImplBase< T, t_shidiFlags, t_bModal, ATL::CAxDialogImpl<T> >
{};
#endif // _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdSimpleDialogResizeImpl - implementation of standard resizing simple dialog with SHIDIF_xxx flags
// Usage:
// class CMyDlg : public CStdSimpleDialogResize<CMyDlg,
// IDD_MYDLG, SHIDIF_DONEBUTTON | SHIDIF_FULLSCREENNOMENUBAR>
// {
// public:
// BEGIN_DLGRESIZE_MAP(CMyDlg)
// ...
// END_DLGRESIZE_MAP()
// };
template <class T, WORD t_wDlgTemplateID, UINT t_shidiFlags = WTL_STD_SHIDIF>
class ATL_NO_VTABLE CStdSimpleDialogResizeImpl :
public CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>,
public CDialogResize< T >
{
public:
typedef CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>::baseClass baseClass;
BEGIN_MSG_MAP(CStdSimpleDialogResizeImpl)
#ifdef WIN32_PLATFORM_PSPC // Pocket PC title
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
#elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key
MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
#endif
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
CHAIN_MSG_MAP(CDialogResize< T >)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
StdPlatformInit();
DlgResize_Init(FALSE);
StdShidInit();
return bHandled = FALSE;
}
};
#if defined(_WTL_CE_DRA) && defined(WIN32_PLATFORM_PSPC)
///////////////////////////////////////////////////////////////////////////////
// CStdOrientedDialogBase - Oriented PPC standard dialog base class
template <class T>
class CStdOrientedDialogBase
{
public:
// Operation
BOOL SetOrientation(DRA::DisplayMode mode)
{
T* pT = static_cast<T*>(this);
ATLASSERT(pT->IsWindow());
ATLASSERT(mode == DRA::GetDisplayMode());
// Derived dialog must enumerate TWO dialog templates with the same control ids and types ie:
// enum { IDD = IDD_MYDLG, IDD_LANDSCAPE = IDD_MYDLG_L };
UINT iResource = (mode == DRA::Landscape)? T::IDD_LANDSCAPE : T::IDD;
BOOL bRes = DRA::RelayoutDialog(ModuleHelper::GetResourceInstance(), pT->m_hWnd, MAKEINTRESOURCE(iResource));
pT->OnOrientation(mode);
return bRes;
}
// Override
void OnOrientation(DRA::DisplayMode /*mode*/)
{}
// Message handlers
LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
{
T* pT = static_cast<T*>(this);
ATLASSERT(pT->IsWindow());
if (wParam == SETTINGCHANGE_RESET)
{
SetOrientation(DRA::GetDisplayMode());
pT->StdPlatformInit();
pT->StdShidInit();
}
else if (wParam == SPI_SETSIPINFO)
{
pT->DoSipInfo();
return TRUE;
}
return bHandled = FALSE;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdOrientedDialogImplBase - Oriented PPC standard dialog base implementation
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true, class TBase = ATL::CDialogImpl<T> >
class ATL_NO_VTABLE CStdOrientedDialogImplBase :
public CStdDialogImplBase< T, t_shidiFlags, t_bModal, TBase>,
public CStdOrientedDialogBase<T>
{
public:
BEGIN_MSG_MAP(CStdOrientedDialogImpl)
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_SETTINGCHANGE, CStdOrientedDialogBase<T>::OnSettingChange)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
T* pT = static_cast<T*>(this);
#ifdef _DEBUG
ATLASSERT(t_bModal == pT->m_bModal);
#endif
if (DRA::GetDisplayMode() == DRA::Landscape)
SetOrientation(DRA::Landscape);
pT->StdPlatformInit();
pT->StdShidInit();
return bHandled = FALSE;
}
};
///////////////////////////////////////////////////////////////////////////////
// CStdOrientedDialogImpl - Oriented PPC standard dialog implementation
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdOrientedDialogImpl : public CStdOrientedDialogImplBase< T, t_shidiFlags, t_bModal>
{};
#ifndef _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdAxOrientedDialogImpl - Oriented PPC standard AxDialog implementation
template <class T, UINT t_shidiFlags = WTL_STD_SHIDIF, bool t_bModal = true >
class ATL_NO_VTABLE CStdAxOrientedDialogImpl : public CStdOrientedDialogImplBase< T, t_shidiFlags, t_bModal, ATL::CAxDialogImpl<T> >
{};
#endif // _ATL_NO_HOSTING
///////////////////////////////////////////////////////////////////////////////
// CStdSimpleOrientedDialog - Standard simple orientable dialog
template <WORD t_wDlgTemplateID, WORD t_wDlgLandscapeID, UINT t_shidiFlags = WTL_STD_SHIDIF>
class CStdSimpleOrientedDialog :
public CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>,
public CStdOrientedDialogBase<CStdSimpleOrientedDialog<t_wDlgTemplateID, t_wDlgLandscapeID, t_shidiFlags> >
{
public:
typedef CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>::baseClass baseClass;
typedef CStdOrientedDialogBase<CStdSimpleOrientedDialog<t_wDlgTemplateID, t_wDlgLandscapeID, t_shidiFlags> > baseOriented;
enum {IDD = t_wDlgTemplateID, IDD_LANDSCAPE = t_wDlgLandscapeID};
BEGIN_MSG_MAP(CStdSimpleDialog)
MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_SETTINGCHANGE, baseOriented::OnSettingChange)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
END_MSG_MAP()
LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
if (DRA::GetDisplayMode() == DRA::Landscape)
SetOrientation(DRA::Landscape);
StdPlatformInit();
StdShidInit();
return bHandled = FALSE;
}
};
#endif // _WTL_CE_DRA
#endif // _WTL_CE_NO_DIALOGS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -