10 #define __ATLWINCE_H__ 15 #error atlwince.h requires atlapp.h to be included first 19 #error atlwince.h requires atlwin.h to be included first 23 #error atlwince.h compiles under Windows CE only 26 #if (_WIN32_WCE < 300) 27 #error atlwince.h requires Windows CE 3.0 or higher. 30 #if defined(WIN32_PLATFORM_WFSP) && _MSC_VER < 1400 // EVC compiling SmartPhone code 31 #if (WIN32_PLATFORM_WFSP < 200) 32 #error atlwince.h requires Smartphone 2003 or higher 34 #endif // WIN32_PLATFORM_WFSP 36 #if defined(WIN32_PLATFORM_PSPC) && _MSC_VER < 1400 // EVC compiling Pocket PC code 37 #if (WIN32_PLATFORM_PSPC < 310) 38 #error atlwince.h requires Pocket PC 2002 or higher 40 #endif // WIN32_PLATFORM_PSPC 42 #if !defined(_AYGSHELL_H_) && !defined(__AYGSHELL_H__) 43 #error atlwince.h requires aygshell.h to be included first 45 #if defined(WIN32_PLATFORM_WFSP) && !defined(_TPCSHELL_H_) 46 #error SmartPhone dialog classes require tpcshell.h to be included first 50 #if (_MSC_VER >= 1400) // VS2005 51 #include <DeviceResolutionAware.h> 53 #endif // (_MSC_VER >= 1400) 55 #if !defined(_WTL_CE_NO_DIALOGS) && !defined(__ATLFRAME_H__) 56 #error Orientation aware dialog classes require atlframe.h to be included first 59 #if !defined(_WTL_CE_NO_APPWINDOW) && !defined(__ATLFRAME_H__) 60 #error Application window class require atlframe.h to be included first 63 #if !defined(_WTL_CE_NO_ZOOMSCROLL) && !defined(__ATLSCRL_H__) 64 #error ZoomScroll implementation requires atlscrl.h to be included first 67 #if !defined(_WTL_CE_NO_ZOOMSCROLL) 68 #if !(defined(__ATLTYPES_H__) || (defined(__ATLMISC_H__) && !defined(_WTL_NO_WTYPES))) 69 #error ZoomScroll requires _WTL_NO_WTYPES not to be defined and either atlmisc.h or atltypes.h to be included first 70 #endif // !(defined(__ATLTYPES_H__) || (defined(__ATLMISC_H__) && !defined(_WTL_NO_WTYPES))) 71 #endif // !defined(_WTL_CE_NO_ZOOMSCROLL) 73 #if !defined(WIN32_PLATFORM_WFSP) && !defined(WIN32_PLATFORM_PSPC) 74 #define _WTL_CE_NO_CONTROLS 75 #endif // !defined(WIN32_PLATFORM_WFSP) && !defined(WIN32_PLATFORM_PSPC) 77 #ifndef _WTL_CE_NO_CONTROLS 78 #ifndef __ATLCTRLS_H__ 79 #error The PPC/SmartPhone controls classes require atlctrls.h to be included first 83 #pragma comment(lib, "htmlview.lib") 86 #pragma comment(lib, "voicectl.lib") 88 #ifdef WIN32_PLATFORM_PSPC 90 #pragma comment(lib, "richink.lib") 93 #pragma comment(lib, "inkx.lib") 96 #pragma comment(lib, "doclist.lib") 167 inline HWND AtlCreateMenuBar(SHMENUBARINFO& mbi)
169 ATLASSERT(::IsWindow(mbi.hwndParent));
170 ATLVERIFY(::SHCreateMenuBar(&mbi) != FALSE);
174 inline HWND AtlCreateMenuBar(HWND hWnd, UINT nToolBarId = ATL_IDW_TOOLBAR, DWORD dwFlags = 0,
int nBmpId = 0,
int cBmpImages = 0, COLORREF clrBk = 0)
176 SHMENUBARINFO mbi = {
sizeof(mbi), hWnd, dwFlags, nToolBarId, ModuleHelper::GetResourceInstance(), nBmpId, cBmpImages, 0, clrBk };
177 return AtlCreateMenuBar(mbi);
180 inline HWND AtlCreateEmptyMenuBar(HWND hWnd,
bool bSip =
true)
182 SHMENUBARINFO embi = {
sizeof(SHMENUBARINFO), hWnd, SHCMBF_EMPTYBAR };
184 embi.dwFlags |= SHCMBF_HIDESIPBUTTON;
186 return AtlCreateMenuBar(embi);
192 inline bool AtlIsEditFocus()
194 ATL::CWindow wCtrl = GetFocus();
195 if (wCtrl.IsWindow())
197 TCHAR szClassName[8] = {0};
198 ATLVERIFY(::GetClassName(wCtrl.m_hWnd, szClassName, 8));
199 return !_tcscmp(szClassName, _T(
"Edit")) || !_tcscmp(szClassName, WC_CAPEDIT);
204 #if defined WIN32_PLATFORM_WFSP 205 inline void AtlActivateBackKey(HWND hMenuBar)
207 ATLASSERT(::IsWindow(hMenuBar));
208 ::SendMessage(hMenuBar, SHCMBM_OVERRIDEKEY, VK_TBACK,
209 MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, SHMBOF_NODEFAULT | SHMBOF_NOTIFY));
211 #endif // WIN32_PLATFORM_WFSP 215 #ifndef _WTL_CE_NO_DIALOGS 220 #define WTL_STD_SHIDIF SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN 221 #define WTL_SP_SHIDIF SHIDIF_SIZEDLGFULLSCREEN 224 #define WTL_DLG_TITLEHEIGHT(iHeight) static const int GetTitleHeight(){return iHeight;} 225 #define WTL_DLG_NOTITLE WTL_DLG_TITLEHEIGHT(0) 230 template <
class T, UINT t_sh
idiFlags,
bool t_bModal = true>
234 #ifdef WIN32_PLATFORM_PSPC 236 const int nTitleHeight;
242 BOOL GetClientRect(LPRECT lpRect)
244 T* pT =
static_cast<T*
>(
this);
245 ATLASSERT(pT->IsWindow());
246 BOOL bRes = ::GetClientRect(pT->m_hWnd, lpRect);
248 lpRect->top += nTitleHeight + 1;
252 BOOL SetWindowText(LPCTSTR lpszString)
254 T* pT =
static_cast<T*
>(
this);
255 ATLASSERT(pT->IsWindow());
256 BOOL bRes = ::SetWindowText(pT->m_hWnd, lpszString);
257 if (nTitleHeight != 0)
263 static const int GetTitleHeight()
266 return DRA::SCALEY(24);
267 #else // !_WTL_CE_DRA 269 return dc.GetDeviceCaps(LOGPIXELSY) >> 2;
270 #endif // !_WTL_CE_DRA 276 T* pT =
static_cast<T*
>(
this);
277 ATLASSERT(pT->IsWindow());
278 TCHAR sTitle[48] = { 0 };
282 CFont fontTitle = AtlCreateBoldFont();
284 dc.SetTextColor(GetSysColor(COLOR_HIGHLIGHT));
285 int nLen = pT->GetWindowText(sTitle, 48);
286 int nWidth = dc.GetDeviceCaps(HORZRES);
289 RECT rTitle = { 0, 0, nWidth, nTitleHeight };
290 dc.FillRect(&rTitle, COLOR_3DHIGHLIGHT);
292 rTitle.left = DRA::SCALEX(8);
293 #else // !_WTL_CE_DRA 294 rTitle.left = nTitleHeight / 3;
295 #endif // !_WTL_CE_DRA 296 dc.DrawText(sTitle, nLen, &rTitle, DT_VCENTER | DT_SINGLELINE);
297 dc.SelectFont(fontOld);
300 CPenHandle penOld = dc.SelectStockPen(BLACK_PEN);
301 POINT line[4] = {{0, nTitleHeight}, {nWidth, nTitleHeight}, {0, nTitleHeight - 1}, {nWidth, nTitleHeight - 1}};
304 int nSeg = DRA::SCALEY(1);
305 #else // !_WTL_CE_DRA 306 int nSeg = nTitleHeight / 24;
307 #endif // !_WTL_CE_DRA 309 dc.Polyline(line, nSeg <= 2 ? nSeg * 2 : 4);
310 dc.SelectPen(penOld);
316 void DialogTitleInit()
318 T* pT =
static_cast<T*
>(
this);
319 ATLASSERT(pT->IsWindow());
321 ATL::CWindow wCtl = pT->GetWindow(GW_CHILD);
322 while (wCtl.IsWindow())
325 wCtl.GetWindowRect(&rCtl);
326 ::MapWindowPoints(NULL, pT->m_hWnd, (LPPOINT)&rCtl, 2);
327 ::OffsetRect(&rCtl, 0, nTitleHeight);
328 wCtl.MoveWindow(&rCtl, FALSE);
329 wCtl = wCtl.GetWindow(GW_HWNDNEXT);
336 T* pT =
static_cast<T*
>(
this);
337 ATLASSERT(pT->IsWindow());
339 SIPINFO si = {
sizeof(SIPINFO)};
341 if ((si.fdwFlags & SIPF_ON) ^ SIPF_ON)
342 si.rcVisibleDesktop.bottom = si.rcSipRect.bottom;
343 pT->MoveWindow(&si.rcVisibleDesktop, FALSE);
347 LRESULT OnPaintTitle(UINT , WPARAM , LPARAM , BOOL& bHandled)
349 T* pT =
static_cast<T*
>(
this);
350 return bHandled = nTitleHeight ? pT->DoPaintTitle() : FALSE;
354 LRESULT OnSettingChange(UINT , WPARAM wParam, LPARAM , BOOL& bHandled)
356 T* pT =
static_cast<T*
>(
this);
357 if (wParam == SPI_SETSIPINFO)
362 return bHandled = FALSE;
365 #elif defined WIN32_PLATFORM_WFSP 367 LRESULT OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& )
369 T* pT =
static_cast<T*
>(
this);
370 const UINT uModif = (UINT)LOWORD(lParam);
371 const UINT uVirtKey = (UINT)HIWORD(lParam);
373 if(uVirtKey == VK_TBACK)
374 if (AtlIsEditFocus())
375 ::SHSendBackToFocusWindow(uMsg, wParam, lParam);
376 else if (uModif & MOD_KEYUP)
377 pT->StdCloseDialog(IDCANCEL);
384 T* pT =
static_cast<T*
>(
this);
385 HWND hMenuBar = ::SHFindMenuBar(pT->m_hWnd);
387 if (!hMenuBar && (t_shidiFlags & SHIDIF_DONEBUTTON))
388 hMenuBar = CreateMenuBar(ATL_IDM_MENU_DONE);
391 AtlActivateBackKey(hMenuBar);
396 T* pT =
static_cast<T*
>(
this);
397 ATLASSERT(pT->IsWindow());
399 CFontHandle fontBold = AtlCreateBoldFont(pT->GetFont());
401 ATL::CWindow wCtl = pT->GetWindow(GW_CHILD);
403 while (wCtl.IsWindow())
405 if ((
short int)wCtl.GetDlgCtrlID() == IDC_STATIC)
406 wCtl.SetFont(fontBold);
407 wCtl = wCtl.GetWindow(GW_HWNDNEXT);
410 #endif // WIN32_PLATFORM_WFSP 413 void StdPlatformInit()
415 T* pT =
static_cast<T*
>(
this);
416 #ifdef WIN32_PLATFORM_PSPC // Pocket PC title initialization 417 if (nTitleHeight != 0)
418 pT->DialogTitleInit();
419 #elif defined(WIN32_PLATFORM_WFSP) 422 #endif // WIN32_PLATFORM_WFSP 426 HWND CreateMenuBar(UINT uiMB = T::IDD,
int nBmpImages = 0)
428 T* pT =
static_cast<T*
>(
this);
429 return AtlCreateMenuBar(pT->m_hWnd, uiMB, 0, nBmpImages ? uiMB : 0, nBmpImages);
433 void StdCloseDialog(WORD wID)
435 T* pT =
static_cast<T*
>(
this);
437 ::EndDialog(pT->m_hWnd, wID);
445 T* pT =
static_cast<T*
>(
this);
446 SHINITDLGINFO shidi = { SHIDIM_FLAGS, pT->m_hWnd, t_shidiFlags };
447 ::SHInitDialog(&shidi);
451 LRESULT OnColorStatic(UINT , WPARAM wParam, LPARAM lParam, BOOL& bHandled)
453 if (::GetDlgCtrlID((HWND)lParam) == IDC_INFOSTATIC)
455 ::SetBkMode((HDC)wParam, TRANSPARENT);
456 return (LRESULT)::GetSysColorBrush(COLOR_INFOBK);
458 return bHandled = FALSE;
462 LRESULT OnMenuClose(WORD , WORD wID, HWND , BOOL& )
464 T* pT =
static_cast<T*
>(
this);
465 pT->StdCloseDialog((WORD)(wID - ID_MENU_OK + IDOK));
470 LRESULT OnCloseCmd(WORD , WORD wID, HWND , BOOL& )
472 T* pT =
static_cast<T*
>(
this);
473 pT->StdCloseDialog(wID);
482 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true,
class TBase = ATL::CDialogImpl< T > >
488 #ifdef WIN32_PLATFORM_PSPC 489 BOOL GetClientRect(LPRECT lpRect)
494 BOOL SetWindowText(LPCTSTR lpszString)
501 #ifdef WIN32_PLATFORM_PSPC // Pocket PC title and SIP 502 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
503 MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
504 #elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key 505 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
507 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
508 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
509 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
510 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
513 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
515 T* pT =
static_cast<T*
>(
this);
516 ATLASSERT(t_bModal == pT->m_bModal);
517 pT->StdPlatformInit();
519 return bHandled = FALSE;
526 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
533 #if defined __ATLDLGS_H__ 535 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true>
536 class ATL_NO_VTABLE CStdIndirectDialogImpl :
537 public CIndirectDialogImpl< T, CMemDlgTemplate, CStdDialogImpl<T, t_shidiFlags, t_bModal> >
546 ATLASSERT(!m_Template.IsTemplateEx());
549 DWORD &dwStyle = m_Template.GetTemplatePtr()->style;
550 if (dwStyle & DS_CENTER)
553 ATLASSERT((dwStyle & WS_CHILD) != WS_CHILD);
558 if((dwStyle & WS_CHILD) != WS_CHILD)
563 INT_PTR DoModal(HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
567 if (!m_Template.IsValid())
572 return _baseClass::DoModal(hWndParent, dwInitParam);
575 HWND Create(HWND hWndParent, LPARAM dwInitParam = NULL)
577 ATLASSERT(!t_bModal);
579 if (!m_Template.IsValid())
584 return _baseClass::Create(hWndParent, dwInitParam);
587 BEGIN_MSG_MAP(CStdIndirectDialogImpl)
588 CHAIN_MSG_MAP(_baseStd)
593 #endif // defined __ATLDLGS_H__ 595 #ifndef _ATL_NO_HOSTING 600 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
603 #endif // _ATL_NO_HOSTING 608 template <WORD t_wDlgTemplateID, UINT t_sh
idiFlags = WTL_STD_SHIDIF>
610 public ATL::CSimpleDialog<t_wDlgTemplateID, FALSE>,
611 public CStdDialogBase<CStdSimpleDialog<t_wDlgTemplateID, t_shidiFlags>, t_shidiFlags>
616 #ifdef WIN32_PLATFORM_PSPC 617 BOOL GetClientRect(LPRECT lpRect)
619 return baseClass::GetClientRect(lpRect);
622 BOOL SetWindowText(LPCTSTR lpszString)
624 return baseClass::SetWindowText(lpszString);
629 #ifdef WIN32_PLATFORM_PSPC // Pocket PC title and SIP 630 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
631 MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
632 #elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key 633 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
635 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
636 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
637 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
638 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
641 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
645 return bHandled = FALSE;
652 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true,
class TBase = ATL::CDialogImpl<T> >
660 BEGIN_MSG_MAP(CStdResizeDialogImplBase)
661 #ifdef WIN32_PLATFORM_PSPC // Pocket PC title 662 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
663 #elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key 664 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
666 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
667 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
668 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
669 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
673 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
675 T* pT =
static_cast<T*
>(
this);
676 ATLASSERT(t_bModal == pT->m_bModal);
677 pT->StdPlatformInit();
678 pT->DlgResize_Init(FALSE);
680 return bHandled = FALSE;
687 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
691 #ifndef _ATL_NO_HOSTING 696 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
699 #endif // _ATL_NO_HOSTING 714 template <
class T, WORD t_wDlgTemplateID, UINT t_sh
idiFlags = WTL_STD_SHIDIF>
723 #ifdef WIN32_PLATFORM_PSPC // Pocket PC title 724 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
725 #elif defined(WIN32_PLATFORM_WFSP) // SmartPhone VK_TBACK key 726 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
728 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
729 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
730 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
731 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
735 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
737 T* pT =
static_cast<T*
>(
this);
738 pT->StdPlatformInit();
739 pT->DlgResize_Init(FALSE);
741 return bHandled = FALSE;
745 #if defined(_WTL_CE_DRA) && defined(WIN32_PLATFORM_PSPC) 751 class CStdOrientedDialogBase
755 BOOL SetOrientation(DRA::DisplayMode mode)
757 T* pT =
static_cast<T*
>(
this);
758 ATLASSERT(pT->IsWindow());
759 ATLASSERT(mode == DRA::GetDisplayMode());
763 UINT iResource = (mode == DRA::Landscape)? T::IDD_LANDSCAPE : T::IDD;
765 BOOL bRes = DRA::RelayoutDialog(ModuleHelper::GetResourceInstance(), pT->m_hWnd, MAKEINTRESOURCE(iResource));
766 pT->OnOrientation(mode);
771 void OnOrientation(DRA::DisplayMode )
775 LRESULT OnSettingChange(UINT , WPARAM wParam, LPARAM , BOOL& bHandled)
777 T* pT =
static_cast<T*
>(
this);
778 ATLASSERT(pT->IsWindow());
779 if (wParam == SETTINGCHANGE_RESET)
781 pT->SetOrientation(DRA::GetDisplayMode());
782 pT->StdPlatformInit();
785 else if (wParam == SPI_SETSIPINFO)
790 return bHandled = FALSE;
797 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true,
class TBase = ATL::CDialogImpl<T> >
798 class ATL_NO_VTABLE CStdOrientedDialogImplBase :
800 public CStdOrientedDialogBase<T>
803 BEGIN_MSG_MAP(CStdOrientedDialogImpl)
804 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
805 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
806 MESSAGE_HANDLER(WM_SETTINGCHANGE, CStdOrientedDialogBase<T>::OnSettingChange)
807 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
808 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, OnCloseCmd)
809 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
812 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
814 T* pT =
static_cast<T*
>(
this);
816 ATLASSERT(t_bModal == pT->m_bModal);
818 if (DRA::GetDisplayMode() == DRA::Landscape)
819 pT->SetOrientation(DRA::Landscape);
820 pT->StdPlatformInit();
822 return bHandled = FALSE;
829 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
830 class ATL_NO_VTABLE CStdOrientedDialogImpl :
public CStdOrientedDialogImplBase< T, t_shidiFlags, t_bModal>
833 #ifndef _ATL_NO_HOSTING 837 template <
class T, UINT t_sh
idiFlags = WTL_STD_SHIDIF,
bool t_bModal = true >
838 class ATL_NO_VTABLE CStdAxOrientedDialogImpl :
public CStdOrientedDialogImplBase< T, t_shidiFlags, t_bModal, ATL::CAxDialogImpl<T> >
840 #endif // _ATL_NO_HOSTING 845 template <WORD t_wDlgTemplateID, WORD t_wDlgLandscapeID, UINT t_sh
idiFlags = WTL_STD_SHIDIF>
846 class CStdSimpleOrientedDialog :
848 public CStdOrientedDialogBase<CStdSimpleOrientedDialog<t_wDlgTemplateID, t_wDlgLandscapeID, t_shidiFlags> >
852 typedef CStdOrientedDialogBase<CStdSimpleOrientedDialog<t_wDlgTemplateID, t_wDlgLandscapeID, t_shidiFlags> > baseOriented;
854 enum {IDD = t_wDlgTemplateID, IDD_LANDSCAPE = t_wDlgLandscapeID};
857 MESSAGE_HANDLER(WM_PAINT, OnPaintTitle)
858 MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
859 MESSAGE_HANDLER(WM_SETTINGCHANGE, baseOriented::OnSettingChange)
860 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
861 COMMAND_RANGE_HANDLER(IDOK, IDCANCEL, baseClass::OnCloseCmd)
862 COMMAND_RANGE_HANDLER(ID_MENU_OK, ID_MENU_CANCEL, OnMenuClose)
865 LRESULT OnInitDialog(UINT , WPARAM , LPARAM , BOOL& bHandled)
867 if (DRA::GetDisplayMode() == DRA::Landscape)
868 SetOrientation(DRA::Landscape);
871 return bHandled = FALSE;
875 #endif // _WTL_CE_DRA 878 #endif // _WTL_CE_NO_DIALOGS 883 #ifndef _WTL_CE_NO_APPWINDOW 895 m_Key.Create(HKEY_CURRENT_USER, sAppKey.m_lpstr);
896 ATLASSERT(m_Key.m_hKey);
902 return m_Key.SetBinaryValue(sName.m_lpstr, &val,
sizeof(V));
908 return m_Key.SetBinaryValue(sName.m_lpstr, &val0, nb *
sizeof(V));
914 ULONG bufSize =
sizeof(V);
915 return m_Key.QueryBinaryValue(sName.m_lpstr, &val, &bufSize);
921 ULONG bufSize = nb *
sizeof(V);
922 return m_Key.QueryBinaryValue(sName.m_lpstr, &val0, &bufSize);
925 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 928 return m_Key.SetStringValue(sName.m_lpstr, sval);
933 DWORD size = MAX_PATH;
934 LONG res = m_Key.QueryStringValue(sName.m_lpstr, sval.GetBuffer(size), &size);
935 sval.ReleaseBuffer();
939 #pragma message("Warning: CAppInfoBase compiles without CString support. Do not use CString in Save or Restore.") 940 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 944 return m_Key.SetStringValue(sName.m_lpstr, sval);
949 return m_Key.QueryStringValue(sName.m_lpstr, sval, plength);
954 return m_Key.DeleteValue(sName.m_lpstr);
963 #define DECLARE_APPKEY(uAppKey) \ 964 static LPCTSTR GetAppKey() \ 966 static LPCTSTR sAppKey = ATL::_U_STRINGorID(uAppKey).m_lpstr; \ 982 #define DECLARE_APP_FRAME_CLASS(WndClassName, uCommonResourceID, uAppKey) \ 983 DECLARE_FRAME_WND_CLASS(WndClassName, uCommonResourceID) \ 984 DECLARE_APPKEY(uAppKey) 986 #define DECLARE_APP_FRAME_CLASS_EX(WndClassName, uCommonResourceID, style, bkgnd, uAppKey) \ 987 DECLARE_FRAME_WND_CLASS_EX(WndClassName, uCommonResourceID, style, bkgnd) \ 988 DECLARE_APPKEY(uAppKey) 996 #ifndef WIN32_PLATFORM_WFSP 997 SHACTIVATEINFO m_sai;
998 #endif // WIN32_PLATFORM_WFSP 1004 #ifndef WIN32_PLATFORM_WFSP 1005 SHACTIVATEINFO sai = {
sizeof(SHACTIVATEINFO) };
1007 #endif // WIN32_PLATFORM_WFSP 1011 static HRESULT ActivatePreviousInstance(HINSTANCE hInstance, LPCTSTR lpstrCmdLine,
bool bDialog)
1016 ATLVERIFY(::LoadString(hInstance, classInfo.m_uCommonResourceID, classInfo.m_szAutoName,
sizeof(classInfo.m_szAutoName)/
sizeof(classInfo.m_szAutoName[0])) != 0);
1018 classInfo.m_wc.lpszClassName = classInfo.m_szAutoName;
1020 const TCHAR* pszClass = classInfo.m_wc.lpszClassName;
1022 if(NULL == pszClass ||
'\0' == *pszClass)
1027 const DWORD dRetryInterval = 100;
1028 const int iMaxRetries = 25;
1030 for(
int i = 0; i < iMaxRetries; ++i)
1032 HANDLE hMutex = CreateMutex(NULL, FALSE, pszClass);
1034 DWORD dw = GetLastError();
1042 case ERROR_INVALID_HANDLE:
1055 if(dw == ERROR_ALREADY_EXISTS)
1057 CloseHandle(hMutex);
1061 hwnd = FindWindow(NULL, pszClass);
1063 hwnd = FindWindow(pszClass, NULL);
1067 Sleep(dRetryInterval);
1073 if (lpstrCmdLine && *lpstrCmdLine)
1075 COPYDATASTRUCT cd = { NULL,
sizeof(TCHAR) * (wcslen(lpstrCmdLine) + 1), (PVOID)lpstrCmdLine };
1076 ::SendMessage(hwnd, WM_COPYDATA, NULL, (LPARAM)&cd);
1079 if(0 != SetForegroundWindow(reinterpret_cast<HWND>(reinterpret_cast<ULONG>(hwnd) | 0x1)))
1092 bool AppHibernate(
bool )
1097 bool AppNewInstance(LPCTSTR )
1106 #ifdef WIN32_PLATFORM_WFSP 1115 MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)
1116 #ifdef WIN32_PLATFORM_WFSP 1117 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
1119 MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
1120 #endif // WIN32_PLATFORM_WFSP 1121 MESSAGE_HANDLER(WM_HIBERNATE, OnHibernate)
1122 MESSAGE_HANDLER(WM_COPYDATA, OnNewInstance)
1123 MESSAGE_HANDLER(WM_CLOSE, OnClose)
1126 LRESULT OnActivate(UINT , WPARAM wParam, LPARAM lParam, BOOL& bHandled)
1128 T* pT =
static_cast<T*
>(
this);
1130 m_bHibernate = pT->AppHibernate(
false);
1131 #ifndef WIN32_PLATFORM_WFSP 1132 ::SHHandleWMActivate(pT->m_hWnd, wParam, lParam, &m_sai, 0);
1136 #endif // WIN32_PLATFORM_WFSP 1137 return bHandled = FALSE;
1140 #ifdef WIN32_PLATFORM_WFSP 1142 LRESULT OnHotKey(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& )
1144 T* pT =
static_cast<T*
>(
this);
1145 const UINT uModif = (UINT)LOWORD(lParam);
1146 const UINT uVirtKey = (UINT)HIWORD(lParam);
1147 if(uVirtKey == VK_TBACK)
1148 if (AtlIsEditFocus())
1149 ::SHSendBackToFocusWindow(uMsg, wParam, lParam);
1150 else if (uModif & MOD_KEYUP)
1155 #else // !WIN32_PLATFORM_WFSP 1157 LRESULT OnSettingChange(UINT , WPARAM wParam, LPARAM lParam, BOOL& bHandled)
1159 T* pT =
static_cast<T*
>(
this);
1161 return ::SHHandleWMSettingChange(pT->m_hWnd, wParam, lParam, &m_sai);
1163 #endif // !WIN32_PLATFORM_WFSP 1165 LRESULT OnHibernate(UINT , WPARAM , LPARAM , BOOL& )
1167 T* pT =
static_cast<T*
>(
this);
1168 return m_bHibernate = pT->AppHibernate(
true);
1171 LRESULT OnNewInstance(UINT , WPARAM , LPARAM lParam, BOOL& )
1173 T* pT =
static_cast<T*
>(
this);
1174 PCOPYDATASTRUCT pcds = (PCOPYDATASTRUCT)lParam;
1175 return pT->AppNewInstance((LPCTSTR)pcds->lpData);
1178 LRESULT OnClose(UINT , WPARAM , LPARAM , BOOL& bHandled)
1180 T* pT =
static_cast<T*
>(
this);
1196 static int AppRun(LPTSTR lpstrCmdLine = NULL,
int nCmdShow = SW_SHOWNORMAL)
1199 _Module.AddMessageLoop(&theLoop);
1203 if(wndMain.CreateEx(NULL, NULL, 0, 0, lpstrCmdLine) == NULL)
1205 ATLTRACE2(atlTraceUI, 0, _T(
"Main window creation failed!\n"));
1209 wndMain.ShowWindow(nCmdShow);
1211 int nRet = theLoop.Run();
1213 _Module.RemoveMessageLoop();
1217 static HRESULT ActivatePreviousInstance(HINSTANCE hInstance, LPCTSTR lpstrCmdLine)
1224 #ifndef _WTL_CE_NO_DIALOGS 1230 #define DECLARE_APP_DLG_CLASS(WndClassName, uCommonResourceID, uAppKey) \ 1231 static WTL::CFrameWndClassInfo& GetWndClassInfo() \ 1233 static WTL::CFrameWndClassInfo wc = \ 1235 { 0, (WNDPROC)StartDialogProc, \ 1236 0, 0, NULL, NULL, NULL, (HBRUSH)(COLOR_WINDOW + 1), NULL, WndClassName }, \ 1237 NULL, NULL, IDC_ARROW, TRUE, 0, _T(""), uCommonResourceID \ 1241 DECLARE_APPKEY(uAppKey) 1247 static int AppRun(LPTSTR lpstrCmdLine = NULL,
int nCmdShow = SW_SHOWNORMAL)
1250 _Module.AddMessageLoop(&theLoop);
1254 if(dlgMain.Create(NULL, (LPARAM)lpstrCmdLine) == NULL)
1256 ATLTRACE2(atlTraceUI, 0, _T(
"Main dialog creation failed!\n"));
1260 dlgMain.ShowWindow(nCmdShow);
1262 int nRet = theLoop.Run();
1264 _Module.RemoveMessageLoop();
1268 static HRESULT ActivatePreviousInstance(HINSTANCE hInstance, LPCTSTR lpstrCmdLine)
1276 #ifdef WIN32_PLATFORM_WFSP 1277 #define WTL_APP_SHIDIF WTL_SP_SHIDIF 1279 #define WTL_APP_SHIDIF WTL_STD_SHIDIF 1285 template <
class T,
class TImplBase, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1293 void StdCloseDialog(
int nVal)
1295 T* pT =
static_cast<T*
>(
this);
1296 if (nVal != IDCANCEL)
1298 if (t_bModal ==
false)
1300 pT->DestroyWindow();
1301 ::PostQuitMessage(nVal);
1304 ::EndDialog(pT->m_hWnd, nVal);
1308 MESSAGE_HANDLER(WM_CLOSE, OnSystemClose)
1309 CHAIN_MSG_MAP(TImplBase)
1313 LRESULT OnSystemClose(UINT , WPARAM , LPARAM , BOOL& )
1315 T* pT =
static_cast<T*
>(
this);
1316 pT->StdCloseDialog(IDCANCEL);
1324 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1332 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1334 public CAppStdDialogImplBase<T, CStdDialogResizeImpl<T, t_shidiFlags, t_bModal>, t_shidiFlags, t_bModal>
1337 #ifndef _ATL_NO_HOSTING 1341 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1343 public CAppStdDialogImplBase<T, CStdAxDialogImpl<T, t_shidiFlags, t_bModal>, t_shidiFlags, t_bModal>
1349 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1351 public CAppStdDialogImplBase<T, CStdAxDialogResizeImpl<T, t_shidiFlags, t_bModal>, t_shidiFlags, t_bModal>
1353 #endif // _ATL_NO_HOSTING 1355 #if defined(_WTL_CE_DRA) && defined(WIN32_PLATFORM_PSPC) 1359 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1360 class ATL_NO_VTABLE CAppStdOrientedDialogImpl :
1361 public CAppStdDialogImplBase<T, CStdOrientedDialogImpl<T, t_shidiFlags, t_bModal>, t_shidiFlags, t_bModal>
1364 #ifndef _ATL_NO_HOSTING 1368 template <
class T, UINT t_sh
idiFlags = WTL_APP_SHIDIF,
bool t_bModal = false>
1369 class ATL_NO_VTABLE CAppStdAxOrientedDialogImpl :
1370 public CAppStdDialogImplBase<T, CStdAxOrientedDialogImpl<T, t_shidiFlags, t_bModal>, t_shidiFlags, t_bModal>
1372 #endif // _ATL_NO_HOSTING 1374 #endif // defined(_WTL_CE_DRA) && defined(WIN32_PLATFORM_PSPC) 1376 #endif // _WTL_CE_NO_DIALOGS 1378 #endif // _WTL_CE_NO_APPWINDOW 1383 #ifndef _WTL_CE_NO_FULLSCREEN 1388 template <
class T,
bool t_bHasSip = true>
1398 void SetFullScreen(
bool bFull)
1400 m_bFullScreen = bFull;
1401 ShowTaskBar(!bFull,
false);
1402 ShowMenuBar(!bFull);
1407 int FSDoModal(D& dlg)
1409 T* pT =
static_cast<T*
>(
this);
1411 ATLASSERT(pT->IsWindow());
1413 ShowTaskBar(
true,
false);
1414 int iRet = dlg.DoModal();
1421 void ShowMenuBar(
bool bShow)
1423 T* pT =
static_cast<T*
>(
this);
1424 ATLASSERT(pT->IsWindow());
1425 ATL::CWindow MenuBar = pT->m_hWndCECommandBar;
1426 ATLASSERT(MenuBar.IsWindow());
1427 MenuBar.ShowWindow(bShow ? SW_SHOWNORMAL : SW_HIDE);
1428 pT->SizeToMenuBar();
1431 void ShowTaskBar(
bool bShow,
bool bRepaint =
true)
1433 T* pT =
static_cast<T*
>(
this);
1434 ATLASSERT(pT->IsWindow());
1436 SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, FALSE);
1440 #ifdef WIN32_PLATFORM_PSPC // Pocket PC code 1441 UINT uShow = t_bHasSip ? SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON : SHFS_SHOWTASKBAR | SHFS_HIDESIPBUTTON;
1442 SHFullScreen(pT->m_hWnd, bShow ? uShow : SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
1443 #elif _WIN32_WCE > 0x500 // Smartphone 2005 code 1444 SHFullScreen(pT->m_hWnd, bShow ? SHFS_SHOWTASKBAR : SHFS_HIDETASKBAR);
1445 #else // Smartphone 2003 1446 HWND hTaskBar = FindWindow(_T(
"tray"), NULL);
1447 ATLASSERT(::IsWindow(hTaskBar));
1448 ::ShowWindow(hTaskBar, bShow ? SW_SHOW : SW_HIDE);
1449 #endif // WIN32_PLATFORM_PSPC 1451 pT->MoveWindow(&rect, bRepaint);
1456 MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
1457 MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)
1460 LRESULT OnSettingChange(UINT , WPARAM wParam, LPARAM , BOOL& bHandled)
1462 #ifndef SETTINGCHANGE_RESET // not defined for PPC 2002 1463 #define SETTINGCHANGE_RESET SPI_SETWORKAREA 1465 if (m_bFullScreen && (wParam == SETTINGCHANGE_RESET))
1466 SetFullScreen(m_bFullScreen);
1467 return bHandled = FALSE;
1470 LRESULT OnActivate(UINT , WPARAM wParam, LPARAM , BOOL& bHandled)
1474 ShowTaskBar(!wParam);
1475 ShowMenuBar(!wParam);
1477 return bHandled = FALSE;
1481 #endif // _WTL_CE_NO_FULLSCREEN 1486 #ifndef _WTL_CE_NO_ZOOMSCROLL 1496 _WTYPES_NS::CSize m_sizeTrue;
1504 void SetZoomScrollSize(_WTYPES_NS::CSize sizeTrue,
double fzoom = 1., BOOL bRedraw = TRUE)
1506 ATLASSERT(fzoom > 0.);
1507 m_sizeTrue = sizeTrue;
1513 void SetZoomScrollSize(
int cx,
int cy,
double fzoom=1., BOOL bRedraw = TRUE)
1515 SetZoomScrollSize(_WTYPES_NS::CSize(cx, cy), fzoom, bRedraw);
1518 void SetZoom(
double fzoom, BOOL bRedraw = TRUE)
1520 _WTYPES_NS::CPoint ptCenter = WndtoTrue(m_sizeClient / 2);
1521 _WTYPES_NS::CSize sizePage = GetScrollPage();
1522 _WTYPES_NS::CSize sizeLine = GetScrollLine();
1524 SetZoomScrollSize(GetScrollSize(), fzoom, bRedraw);
1526 SetScrollLine(sizeLine);
1527 SetScrollPage(sizePage);
1528 _WTYPES_NS::CPoint ptOffset = ptCenter - (m_sizeClient / 2) * fzoom;
1529 SetScrollOffset(ptOffset, bRedraw);
1538 void SetScrollOffset(
int x,
int y, BOOL bRedraw = TRUE)
1543 void SetScrollOffset(POINT ptOffset, BOOL bRedraw = TRUE)
1545 SetScrollOffset(ptOffset.x, ptOffset.y, bRedraw);
1548 void GetScrollOffset(POINT& ptOffset)
1550 ptOffset.x = (LONG)(m_ptOffset.x * m_fzoom);
1551 ptOffset.y = (LONG)(m_ptOffset.y * m_fzoom);
1554 void SetScrollSize(
int cx,
int cy, BOOL bRedraw = TRUE)
1556 SetZoomScrollSize(cx, cy, GetZoom(), bRedraw);
1559 void SetScrollSize(SIZE sizeTrue, BOOL bRedraw = TRUE)
1561 SetZoomScrollSize(sizeTrue, GetZoom(), bRedraw);
1564 void GetScrollSize(SIZE& sizeTrue)
const 1566 sizeTrue = m_sizeTrue;
1569 void SetScrollPage(
int cxPage,
int cyPage)
1571 SetScrollPage(_WTYPES_NS::CSize(cxPage, cyPage));
1574 void SetScrollPage(SIZE sizePage)
1579 void GetScrollPage(SIZE& sizePage)
const 1581 sizePage = m_sizePage * m_fzoom;
1584 void SetScrollLine(
int cxLine,
int cyLine)
1586 SetScrollLine(_WTYPES_NS::CSize(cxLine, cyLine));
1589 void SetScrollLine(SIZE sizeLine)
1594 void GetScrollLine(SIZE& sizeLine)
const 1596 sizeLine = m_sizeLine * m_fzoom;
1600 _WTYPES_NS::CSize GetScrollSize()
1605 _WTYPES_NS::CSize GetScrollPage()
1607 return m_sizePage * m_fzoom;
1610 _WTYPES_NS::CSize GetScrollLine()
1612 return m_sizeLine * m_fzoom;
1615 _WTYPES_NS::CPoint GetScrollOffset()
1617 return (_WTYPES_NS::CSize)m_ptOffset * m_fzoom;
1621 _WTYPES_NS::CPoint WndtoTrue(
CPoint ptW)
1623 return (_WTYPES_NS::CSize)ptW * GetZoom() + GetScrollOffset();
1626 void WndtoTrue(LPPOINT aptW,
int nPts)
1628 for (
int i = 0 ; i < nPts ; i++)
1629 aptW[i] = WndtoTrue(aptW[i]);
1632 void WndtoTrue(LPRECT prectW)
1634 WndtoTrue((LPPOINT)prectW, 2);
1637 _WTYPES_NS::CPoint TruetoWnd(
CPoint ptT)
1639 return (ptT - GetScrollOffset()) / GetZoom();
1642 void TruetoWnd(LPPOINT aptT,
int nPts)
1644 for (
int i = 0 ; i < nPts ; i++)
1645 aptT[i] = TruetoWnd(aptT[i]);
1648 void TruetoWnd(LPRECT prectT)
1650 TruetoWnd((LPPOINT)prectT, 2);
1654 BOOL Draw(HBITMAP hbm, HDC hdestDC, DWORD dwROP = SRCCOPY)
1656 CDC memDC = CreateCompatibleDC(hdestDC);
1658 BOOL bRes = Draw(memDC, hdestDC, dwROP);
1659 memDC.SelectBitmap(bmpOld);
1663 BOOL Draw(HDC hsourceDC, HDC hdestDC, DWORD dwROP = SRCCOPY)
1666 destDC.SetViewportOrg(0,0);
1667 _WTYPES_NS::CPoint ptOffset = GetScrollOffset();
1668 _WTYPES_NS::CSize sizeZClient = m_sizeClient * GetZoom();
1669 return destDC.StretchBlt(0, 0, m_sizeClient.cx, m_sizeClient.cy, hsourceDC, ptOffset.x, ptOffset.y, sizeZClient.cx, sizeZClient.cy, dwROP);
1673 BOOL Draw(IImage* pIImage, HDC hdestDC)
1676 destDC.SetViewportOrg(0,0);
1677 return SUCCEEDED(pIImage->Draw(destDC, _WTYPES_NS::CRect(-_WTYPES_NS::CPoint(m_ptOffset), m_sizeAll), NULL));
1683 MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
1687 LRESULT OnEraseBkgnd(UINT , WPARAM wParam, LPARAM , BOOL& bHandled)
1689 T* pT =
static_cast<T*
>(
this);
1690 ATLASSERT(::IsWindow(pT->m_hWnd));
1691 if ((GetScrollExtendedStyle() & SCRL_ERASEBACKGROUND))
1693 _WTYPES_NS::CRect rect;
1694 pT->GetClientRect(rect);
1695 _WTYPES_NS::CSize sizeClient=rect.Size();
1697 if (m_sizeAll.cx < sizeClient.cx || m_sizeAll.cy < sizeClient.cy)
1700 HBRUSH hbr = GetSysColorBrush((
int)T::GetWndClassInfo().m_wc.hbrBackground - 1);
1702 if (m_sizeAll.cx < sizeClient.cx)
1704 _WTYPES_NS::CRect rectBG(_WTYPES_NS::CPoint(m_sizeAll.cx, 0), sizeClient);
1705 hdc.FillRect(rectBG, hbr);
1708 if (m_sizeAll.cy < sizeClient.cy)
1710 _WTYPES_NS::CRect rectBG(_WTYPES_NS::CPoint(0, m_sizeAll.cy), sizeClient);
1711 hdc.FillRect(rectBG, hbr);
1724 #endif // _WTL_CE_NO_ZOOMSCROLL 1726 #ifndef _WTL_CE_NO_CONTROLS 1730 #if defined(__ATLCTRLX_H__) && defined(WIN32_PLATFORM_PSPC) 1735 template <
class T,
class TBase = ATL::CWindow,
class TWinTraits = ATL::CControlWinTraits>
1736 class ATL_NO_VTABLE CBottomTabViewImpl :
public CTabViewImpl<T, TBase, TWinTraits>
1739 DECLARE_WND_CLASS_EX(NULL, 0, COLOR_APPWORKSPACE)
1742 bool CreateTabControl()
1744 m_tab.Create(m_hWnd, rcDefault, NULL, WS_CHILD | TCS_BOTTOM, 0, m_nTabID);
1746 ATLASSERT(m_tab.m_hWnd != NULL);
1747 if(m_tab.m_hWnd == NULL)
1750 m_tab.SendMessage(CCM_SETVERSION, COMCTL32_VERSION);
1751 m_tab.SetItemExtra(
sizeof(TABVIEWPAGE));
1753 T* pT =
static_cast<T*
>(
this);
1754 m_cyTabHeight = pT->CalcTabHeight();
1761 int nCount = m_tab.GetItemCount();
1762 TCITEMEXTRA tcix = { 0 };
1763 tcix.tciheader.mask = TCIF_TEXT;
1764 tcix.tciheader.pszText = _T(
"NS");
1765 int nIndex = m_tab.InsertItem(nCount, tcix);
1768 SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
1771 m_tab.AdjustRect(FALSE, &rect);
1772 rcWnd.top = rect.bottom;
1773 ::AdjustWindowRectEx(&rcWnd, m_tab.GetStyle(), FALSE, m_tab.GetExStyle());
1774 m_tab.DeleteItem(nIndex);
1776 return rcWnd.bottom - rcWnd.top;
1782 GetClientRect(&rect);
1784 if(m_tab.IsWindow() && ((m_tab.GetStyle() & WS_VISIBLE) != 0))
1785 m_tab.SetWindowPos(NULL, 0, rect.bottom - m_cyTabHeight, rect.right - rect.left, m_cyTabHeight, SWP_NOZORDER );
1787 if(m_nActivePage != -1)
1788 ::SetWindowPos(GetPageHWND(m_nActivePage), NULL, 0, 0, rect.right - rect.left, rect.bottom - m_cyTabHeight, SWP_NOZORDER);
1793 class CBottomTabView :
public CBottomTabViewImpl<CBottomTabView>
1796 DECLARE_WND_CLASS_EX(_T(
"WTL_BottomTabView"), 0, COLOR_APPWORKSPACE)
1799 #endif // defined(__ATLCTRLX_H__) && defined(WIN32_PLATFORM_PSPC) 1821 template <
class TBase>
1822 class CHtmlCtrlT :
public TBase
1826 CHtmlCtrlT(HWND hWnd = NULL) : TBase(hWnd)
1829 CHtmlCtrlT< TBase >& operator =(HWND hWnd)
1835 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
1836 DWORD dwStyle = 0, DWORD dwExStyle = 0,
1839 HWND hWnd = TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
1840 ATLASSERT(hWnd != NULL);
1845 static LPCTSTR GetWndClassName()
1850 #if (_WIN32_WCE >= 400) 1851 void AddStyle(LPCWSTR pszStyle)
1853 ATLASSERT(::IsWindow(m_hWnd));
1854 ::SendMessage(m_hWnd, DTM_ADDSTYLE, 0, (LPARAM)pszStyle);
1856 #endif // (_WIN32_WCE >= 400) 1858 void AddText(BOOL bPlainText, LPCSTR pszText)
1860 ATLASSERT(::IsWindow(m_hWnd));
1861 ::SendMessage(m_hWnd, DTM_ADDTEXT, (WPARAM)bPlainText, (LPARAM)pszText);
1864 void AddHTML(LPCSTR pszHTML)
1866 ATLASSERT(::IsWindow(m_hWnd));
1867 ::SendMessage(m_hWnd, DTM_ADDTEXT, (WPARAM)FALSE, (LPARAM)pszHTML);
1870 void AddText(BOOL bPlainText, LPCWSTR pszText)
1872 ATLASSERT(::IsWindow(m_hWnd));
1873 ::SendMessage(m_hWnd, DTM_ADDTEXTW, (WPARAM)bPlainText, (LPARAM)pszText);
1876 void AddHTML(LPCWSTR pszHTML)
1878 ATLASSERT(::IsWindow(m_hWnd));
1879 ::SendMessage(m_hWnd, DTM_ADDTEXTW, (WPARAM)FALSE, (LPARAM)pszHTML);
1882 void Anchor(LPCSTR pszAnchor)
1884 ATLASSERT(::IsWindow(m_hWnd));
1885 ::SendMessage(m_hWnd, DTM_ANCHOR, 0, (LPARAM)pszAnchor);
1888 void Anchor(LPCWSTR pszAnchor)
1890 ATLASSERT(::IsWindow(m_hWnd));
1891 ::SendMessage(m_hWnd, DTM_ANCHORW, 0, (LPARAM)pszAnchor);
1894 #if (_WIN32_WCE >= 420) 1895 void GetBrowserDispatch(IDispatch** ppDispatch)
1897 ATLASSERT(::IsWindow(m_hWnd));
1898 ATLASSERT(ppDispatch);
1899 ATLASSERT(*ppDispatch==NULL);
1900 ::SendMessage(m_hWnd, DTM_BROWSERDISPATCH, 0, (LPARAM)ppDispatch);
1902 void GetDocumentDispatch(IDispatch** ppDispatch)
1904 ATLASSERT(::IsWindow(m_hWnd));
1905 ATLASSERT(ppDispatch);
1906 ATLASSERT(*ppDispatch==NULL);
1907 ::SendMessage(m_hWnd, DTM_DOCUMENTDISPATCH , 0, (LPARAM)ppDispatch);
1909 #endif // (_WIN32_WCE >= 420) 1913 ATLASSERT(::IsWindow(m_hWnd));
1914 ::SendMessage(m_hWnd, DTM_CLEAR, 0, 0L);
1917 void EnableClearType(BOOL bEnable = TRUE)
1919 ATLASSERT(::IsWindow(m_hWnd));
1920 ::SendMessage(m_hWnd, DTM_ENABLECLEARTYPE, 0, (LPARAM)bEnable);
1923 void EnableContextMenu(BOOL bEnable = TRUE)
1925 ATLASSERT(::IsWindow(m_hWnd));
1926 ::SendMessage(m_hWnd, DTM_ENABLECONTEXTMENU, 0, (LPARAM)bEnable);
1929 void EnableScripting(BOOL bEnable = TRUE)
1931 ATLASSERT(::IsWindow(m_hWnd));
1932 ::SendMessage(m_hWnd, DTM_ENABLESCRIPTING, 0, (LPARAM)bEnable);
1935 void EnableShrink(BOOL bEnable = TRUE)
1937 ATLASSERT(::IsWindow(m_hWnd));
1938 ::SendMessage(m_hWnd, DTM_ENABLESHRINK, 0, (LPARAM)bEnable);
1943 ATLASSERT(::IsWindow(m_hWnd));
1944 ::SendMessage(m_hWnd, DTM_ENDOFSOURCE, 0, 0L);
1947 void ImageFail(DWORD dwCookie)
1949 ATLASSERT(::IsWindow(m_hWnd));
1950 ::SendMessage(m_hWnd, DTM_IMAGEFAIL, 0, (LPARAM)dwCookie);
1953 int GetLayoutHeight()
const 1955 ATLASSERT(::IsWindow(m_hWnd));
1956 return (
int)::SendMessage(m_hWnd, DTM_LAYOUTHEIGHT, 0, 0L);
1959 int GetLayoutWidth()
const 1961 ATLASSERT(::IsWindow(m_hWnd));
1962 return (
int)::SendMessage(m_hWnd, DTM_LAYOUTWIDTH, 0, 0L);
1965 void Navigate(LPCTSTR pstrURL, UINT uFlags = 0)
1967 ATLASSERT(::IsWindow(m_hWnd));
1969 ::SendMessage(m_hWnd, DTM_NAVIGATE, (WPARAM)uFlags, (LPARAM)pstrURL);
1974 ATLASSERT(::IsWindow(m_hWnd));
1975 ::SendMessage(m_hWnd, DTM_SELECTALL, 0, 0L);
1978 void SetImage(INLINEIMAGEINFO* pImageInfo)
1980 ATLASSERT(::IsWindow(m_hWnd));
1981 ATLASSERT(pImageInfo);
1982 ::SendMessage(m_hWnd, DTM_SETIMAGE, 0, (LPARAM)pImageInfo);
1985 void ZoomLevel(
int iLevel)
1987 ATLASSERT(::IsWindow(m_hWnd));
1988 ::SendMessage(m_hWnd, DTM_ZOOMLEVEL, 0, (LPARAM)iLevel);
1991 #if (_WIN32_WCE >= 400) 1994 ATLASSERT(::IsWindow(m_hWnd));
1995 ::SendMessage(m_hWnd, DTM_STOP, 0, 0L);
1997 #endif // (_WIN32_WCE >= 400) 1999 void GetScriptDispatch(IDispatch** ppDispatch)
2001 ATLASSERT(::IsWindow(m_hWnd));
2002 ATLASSERT(ppDispatch);
2003 ATLASSERT(*ppDispatch==NULL);
2004 ::SendMessage(m_hWnd, DTM_SCRIPTDISPATCH, 0, (LPARAM)ppDispatch);
2008 typedef CHtmlCtrlT<ATL::CWindow> CHtmlCtrl;
2011 #ifdef WIN32_PLATFORM_PSPC 2016 template <
class TBase>
2017 class CRichInkCtrlT :
public TBase
2021 CRichInkCtrlT(HWND hWnd = NULL) : TBase(hWnd)
2024 CRichInkCtrlT< TBase >& operator =(HWND hWnd)
2030 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2031 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2034 HWND hWnd = TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2035 ATLASSERT(hWnd != NULL);
2040 static LPCTSTR GetWndClassName()
2045 BOOL CanPaste(UINT uFormat = 0)
const 2047 ATLASSERT(::IsWindow(m_hWnd));
2048 return (BOOL)::SendMessage(m_hWnd, EM_CANPASTE, (WPARAM)uFormat, 0L);
2051 BOOL CanRedo()
const 2053 ATLASSERT(::IsWindow(m_hWnd));
2054 return (BOOL)::SendMessage(m_hWnd, EM_CANREDO, 0, 0L);
2057 BOOL CanUndo()
const 2059 ATLASSERT(::IsWindow(m_hWnd));
2060 return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0L);
2063 void ClearAll(BOOL bRepaint = TRUE)
const 2065 ATLASSERT(::IsWindow(m_hWnd));
2066 ::SendMessage(m_hWnd, EM_CLEARALL, (WPARAM)bRepaint, 0L);
2069 BOOL GetModify()
const 2071 ATLASSERT(::IsWindow(m_hWnd));
2072 return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0L);
2075 UINT GetPageStyle()
const 2077 ATLASSERT(::IsWindow(m_hWnd));
2078 return (UINT)::SendMessage(m_hWnd, EM_GETPAGESTYLE, 0, 0L);
2081 UINT GetPenMode()
const 2083 ATLASSERT(::IsWindow(m_hWnd));
2084 return (UINT)::SendMessage(m_hWnd, EM_GETPENMODE, 0, 0L);
2087 UINT GetViewStyle()
const 2089 ATLASSERT(::IsWindow(m_hWnd));
2090 return (UINT)::SendMessage(m_hWnd, EM_GETVIEW, 0, 0L);
2093 UINT GetWrapMode()
const 2095 ATLASSERT(::IsWindow(m_hWnd));
2096 return (UINT)::SendMessage(m_hWnd, EM_GETWRAPMODE, 0, 0L);
2099 UINT GetZoomPercent()
const 2101 ATLASSERT(::IsWindow(m_hWnd));
2102 return (UINT)::SendMessage(m_hWnd, EM_GETZOOMPERCENT, 0, 0L);
2105 void InsertLinks(LPWSTR lpString,
int cchLength = -1)
2107 ATLASSERT(::IsWindow(m_hWnd));
2109 cchLength = lstrlen(lpString);
2110 ::SendMessage(m_hWnd, EM_INSERTLINKS, (WPARAM)cchLength, (LPARAM)lpString);
2115 ATLASSERT(::IsWindow(m_hWnd));
2116 ::SendMessage(m_hWnd, EM_REDOEVENT, 0, 0L);
2119 UINT SetInkLayer(UINT uLayer)
2121 ATLASSERT(::IsWindow(m_hWnd));
2122 return (UINT)::SendMessage(m_hWnd, EM_SETINKLAYER, (WPARAM)uLayer, 0L);
2125 void SetPageStyle(UINT uStyle)
2127 ATLASSERT(::IsWindow(m_hWnd));
2128 ::SendMessage(m_hWnd, EM_SETPAGESTYLE, (WPARAM)uStyle, 0L);
2131 void SetPenMode(UINT uMode)
2133 ATLASSERT(::IsWindow(m_hWnd));
2134 ::SendMessage(m_hWnd, EM_SETPENMODE, (WPARAM)uMode, 0L);
2137 void SetViewStyle(UINT uStyle)
2139 ATLASSERT(::IsWindow(m_hWnd));
2140 ::SendMessage(m_hWnd, EM_SETVIEW, (WPARAM)uStyle, 0L);
2143 void SetViewAttributes(VIEWATTRIBUTES* pAttribs)
2145 ATLASSERT(::IsWindow(m_hWnd));
2146 ATLASSERT(pAttribs);
2147 ::SendMessage(m_hWnd, EM_SETVIEWATTRIBUTES, 0, (LPARAM)pAttribs);
2150 void SetWrapMode(UINT uMode)
2152 ATLASSERT(::IsWindow(m_hWnd));
2153 ::SendMessage(m_hWnd, EM_SETWRAPMODE, (WPARAM)uMode, 0L);
2156 void SetZoomPercent(UINT uPercent)
2158 ATLASSERT(::IsWindow(m_hWnd));
2159 ::SendMessage(m_hWnd, EM_SETZOOMPERCENT, (WPARAM)uPercent, 0L);
2162 LONG StreamIn(UINT uFormat, EDITSTREAM& es)
2164 ATLASSERT(::IsWindow(m_hWnd));
2165 return (LONG)::SendMessage(m_hWnd, EM_STREAMIN, (WPARAM)uFormat, (LPARAM)&es);
2168 LONG StreamOut(UINT uFormat, EDITSTREAM& es)
2170 ATLASSERT(::IsWindow(m_hWnd));
2171 return (LONG)::SendMessage(m_hWnd, EM_STREAMOUT, (WPARAM)uFormat, (LPARAM)&es);
2176 ATLASSERT(::IsWindow(m_hWnd));
2177 ::SendMessage(m_hWnd, EM_UNDOEVENT, 0, 0L);
2186 DWORD GetSel()
const 2188 ATLASSERT(::IsWindow(m_hWnd));
2189 ATLASSERT(GetViewStyle() != VT_DRAWINGVIEW);
2190 return (DWORD)::SendMessage(m_hWnd, EM_GETSEL, 0, 0L);
2193 void GetSel(
int& nStartChar,
int& nEndChar)
const 2195 ATLASSERT(::IsWindow(m_hWnd));
2196 ATLASSERT(GetViewStyle() != VT_DRAWINGVIEW);
2197 ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar, (LPARAM)&nEndChar);
2200 void SetSel(
int nStartChar,
int nEndChar)
2202 ATLASSERT(::IsWindow(m_hWnd));
2203 ATLASSERT(GetViewStyle() != VT_DRAWINGVIEW);
2204 ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
2207 void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE)
2209 ATLASSERT(::IsWindow(m_hWnd));
2210 ATLASSERT(GetViewStyle() != VT_DRAWINGVIEW);
2211 ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM)bCanUndo, (LPARAM)lpszNewText);
2214 void SetModify(BOOL bModified = TRUE)
2216 ATLASSERT(::IsWindow(m_hWnd));
2217 ::SendMessage(m_hWnd, EM_SETMODIFY, (WPARAM)bModified, 0L);
2220 int GetTextLength()
const 2222 ATLASSERT(::IsWindow(m_hWnd));
2223 return (
int)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, 0, 0L);
2229 ATLASSERT(::IsWindow(m_hWnd));
2230 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
2235 ATLASSERT(::IsWindow(m_hWnd));
2236 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
2241 ATLASSERT(::IsWindow(m_hWnd));
2242 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
2247 ATLASSERT(::IsWindow(m_hWnd));
2248 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
2252 typedef CRichInkCtrlT<ATL::CWindow> CRichInkCtrl;
2258 template <
class TBase>
2259 class CInkXCtrlT :
public TBase
2263 CInkXCtrlT(HWND hWnd = NULL) : TBase(hWnd)
2266 CInkXCtrlT< TBase >& operator =(HWND hWnd)
2272 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2273 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2276 HWND hWnd = TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2277 ATLASSERT(hWnd != NULL);
2282 static LPCTSTR GetWndClassName()
2287 static UINT GetHotRecordingMessage()
2289 return ::RegisterWindowMessage(szHotRecording);
2294 ATLASSERT(::IsWindow(m_hWnd));
2295 ::SendMessage(m_hWnd, IM_CLEARALL, 0, 0L);
2298 int GetData(BYTE* lpBuffer, INT cbBuffer)
const 2300 ATLASSERT(::IsWindow(m_hWnd));
2301 ATLASSERT(lpBuffer);
2302 return (
int)::SendMessage(m_hWnd, IM_GETDATA, (WPARAM)cbBuffer, (LPARAM)lpBuffer);
2305 int GetDataLen()
const 2307 ATLASSERT(::IsWindow(m_hWnd));
2308 return (
int)::SendMessage(m_hWnd, IM_GETDATALEN, 0, 0L);
2311 CRichInkCtrl GetRichInk()
const 2313 ATLASSERT(::IsWindow(m_hWnd));
2314 return (HWND)::SendMessage(m_hWnd, IM_GETRICHINK, 0, 0L);
2317 BOOL IsRecording()
const 2319 ATLASSERT(::IsWindow(m_hWnd));
2320 return (BOOL)::SendMessage(m_hWnd, IM_RECORDING, 0, 0L);
2325 ATLASSERT(::IsWindow(m_hWnd));
2326 ::SendMessage(m_hWnd, IM_REINIT, 0, 0L);
2329 void SetData(
const BYTE* lpInkData, INT cbInkData)
2331 ATLASSERT(::IsWindow(m_hWnd));
2332 ATLASSERT(lpInkData);
2333 ::SendMessage(m_hWnd, IM_SETDATA, (WPARAM)cbInkData, (LPARAM)lpInkData);
2338 ATLASSERT(::IsWindow(m_hWnd));
2339 ::SendMessage(m_hWnd, IM_VOICE_PLAY, 0, 0L);
2342 BOOL IsVoicePlaying()
const 2344 ATLASSERT(::IsWindow(m_hWnd));
2345 return (BOOL)::SendMessage(m_hWnd, IM_VOICE_PLAYING, 0, 0L);
2350 ATLASSERT(::IsWindow(m_hWnd));
2351 return (BOOL)::SendMessage(m_hWnd, IM_VOICE_RECORD, 0, 0L);
2356 ATLASSERT(::IsWindow(m_hWnd));
2357 ::SendMessage(m_hWnd, IM_VOICE_STOP, 0, 0L);
2360 void ShowVoiceBar(BOOL bShow = TRUE)
2362 ATLASSERT(::IsWindow(m_hWnd));
2363 ::SendMessage(m_hWnd, IM_VOICEBAR, (WPARAM)bShow, 0L);
2367 typedef CInkXCtrlT<ATL::CWindow> CInkXCtrl;
2369 #endif // WIN32_PLATFORM_PSPC 2375 template <
class TBase>
2376 class CVoiceRecorderCtrlT :
public TBase
2380 CVoiceRecorderCtrlT(HWND hWnd = NULL) : TBase(hWnd)
2383 CVoiceRecorderCtrlT< TBase >& operator =(HWND hWnd)
2389 HWND Create(HWND hWndParent,
const POINT pt, LPTSTR pstrFileName, UINT nID, DWORD dwStyle = 0)
2391 ATLASSERT(pstrFileName != NULL);
2392 CM_VOICE_RECORDER cmvr = { 0 };
2393 cmvr.cb =
sizeof(CM_VOICE_RECORDER);
2394 cmvr.dwStyle = dwStyle;
2397 cmvr.hwndParent = hWndParent;
2399 cmvr.lpszRecordFileName = pstrFileName;
2400 m_hWnd = VoiceRecorder_Create(&cmvr);
2404 HWND Create(LPCM_VOICE_RECORDER pAttribs)
2406 ATLASSERT(pAttribs);
2407 m_hWnd = VoiceRecorder_Create(pAttribs);
2414 ATLASSERT(::IsWindow(m_hWnd));
2415 ::SendMessage(m_hWnd, VRM_RECORD, 0, 0L);
2420 ATLASSERT(::IsWindow(m_hWnd));
2421 ::SendMessage(m_hWnd, VRM_PLAY, 0, 0L);
2426 ATLASSERT(::IsWindow(m_hWnd));
2427 ::SendMessage(m_hWnd, VRM_STOP, 0, 0L);
2432 ATLASSERT(::IsWindow(m_hWnd));
2433 ::SendMessage(m_hWnd, VRM_CANCEL, 0, 0L);
2438 ATLASSERT(::IsWindow(m_hWnd));
2439 ::SendMessage(m_hWnd, VRM_OK, 0, 0L);
2443 typedef CVoiceRecorderCtrlT<ATL::CWindow> CVoiceRecorderCtrl;
2446 #ifdef WIN32_PLATFORM_PSPC 2451 template <
class TBase>
2452 class CDocListCtrlT :
public TBase
2456 DOCLISTCREATE m_dlc;
2457 TCHAR m_szPath[MAX_PATH];
2460 CDocListCtrlT(HWND hWnd = NULL) : TBase(hWnd)
2463 CDocListCtrlT< TBase >& operator =(HWND hWnd)
2469 HWND Create(HWND hWndParent, WORD wId, LPCTSTR pszFolder = NULL, LPCTSTR pstrFilter = NULL,
2470 WORD wFilterIndex = 0, DWORD dwFlags = DLF_SHOWEXTENSION)
2472 ATLASSERT(pstrFilter != NULL);
2473 ::ZeroMemory(&m_dlc,
sizeof(DOCLISTCREATE));
2474 ::ZeroMemory(m_szPath,
sizeof(m_szPath));
2475 if(pszFolder != NULL)
2476 SecureHelper::strncpy_x(m_szPath, MAX_PATH, pszFolder, MAX_PATH - 1);
2477 m_dlc.dwStructSize =
sizeof(DOCLISTCREATE);
2478 m_dlc.hwndParent = hWndParent;
2479 m_dlc.pszFolder = m_szPath;
2480 m_dlc.pstrFilter = pstrFilter;
2481 m_dlc.wFilterIndex = wFilterIndex;
2483 m_dlc.dwFlags = dwFlags;
2484 m_hWnd = DocList_Create(&m_dlc);
2488 HWND Create(DOCLISTCREATE* pDlc)
2491 m_hWnd = DocList_Create(&m_dlc);
2498 ATLASSERT(::IsWindow(m_hWnd));
2499 ::SendMessage(m_hWnd, DLM_DELETESEL, 0, 0L);
2502 void DisableUpdates()
2504 ATLASSERT(::IsWindow(m_hWnd));
2505 ::SendMessage(m_hWnd, DLM_DISABLEUPDATES, 0, 0L);
2508 void EnableUpdates()
2510 ATLASSERT(::IsWindow(m_hWnd));
2511 ::SendMessage(m_hWnd, DLM_ENABLEUPDATES, 0, 0L);
2514 int GetFilterIndex()
const 2516 ATLASSERT(::IsWindow(m_hWnd));
2517 return (
int)::SendMessage(m_hWnd, DLM_GETFILTERINDEX, 0, 0L);
2520 int GetItemCount()
const 2522 ATLASSERT(::IsWindow(m_hWnd));
2523 return (
int)::SendMessage(m_hWnd, DLM_GETITEMCOUNT, 0, 0L);
2526 int GetNextItem(
int iIndex, DWORD dwRelation = LVNI_ALL)
const 2528 ATLASSERT(::IsWindow(m_hWnd));
2529 return (
int)::SendMessage(m_hWnd, DLM_GETNEXTITEM, (WPARAM)iIndex, (LPARAM)dwRelation);
2532 int GetFirstItem(DWORD dwRelation = LVNI_ALL)
const 2534 ATLASSERT(::IsWindow(m_hWnd));
2535 return (
int)::SendMessage(m_hWnd, DLM_GETNEXTITEM, (WPARAM)-1, (LPARAM)dwRelation);
2538 BOOL GetNextWave(
int* pIndex)
const 2540 ATLASSERT(::IsWindow(m_hWnd));
2542 return (BOOL)::SendMessage(m_hWnd, DLM_GETNEXTWAVE, 0, (LPARAM)pIndex);
2545 BOOL GetPrevWave(
int* pIndex)
const 2547 ATLASSERT(::IsWindow(m_hWnd));
2549 return (BOOL)::SendMessage(m_hWnd, DLM_GETPREVWAVE, 0, (LPARAM)pIndex);
2552 int GetSelCount()
const 2554 ATLASSERT(::IsWindow(m_hWnd));
2555 return (
int)::SendMessage(m_hWnd, DLM_GETSELCOUNT, 0, 0L);
2558 BOOL GetSelPathName(LPTSTR pstrPath,
int cchMax)
const 2560 ATLASSERT(::IsWindow(m_hWnd));
2561 ATLASSERT(pstrPath);
2562 return (BOOL)::SendMessage(m_hWnd, DLM_GETSELPATHNAME, (WPARAM)cchMax, (LPARAM)pstrPath);
2565 void ReceiveIR(LPCTSTR pstrPath)
const 2567 ATLASSERT(::IsWindow(m_hWnd));
2568 ATLASSERT(pstrPath);
2569 ::SendMessage(m_hWnd, DLM_RECEIVEIR, 0, (LPARAM)pstrPath);
2574 ATLASSERT(::IsWindow(m_hWnd));
2575 ::SendMessage(m_hWnd, DLM_REFRESH, 0, 0L);
2578 BOOL RenameMoveSelectedItems()
2580 ATLASSERT(::IsWindow(m_hWnd));
2581 return (BOOL)::SendMessage(m_hWnd, DLM_RENAMEMOVE, 0, 0L);
2586 ATLASSERT(::IsWindow(m_hWnd));
2587 return (
int)::SendMessage(m_hWnd, DLM_SELECTALL, 0, 0L);
2590 HRESULT SelectItem(LPCTSTR pstrPath, BOOL bVisible = TRUE)
2592 ATLASSERT(::IsWindow(m_hWnd));
2593 ATLASSERT(pstrPath);
2594 return (HRESULT)::SendMessage(m_hWnd, DLM_SELECTITEM, (WPARAM)bVisible, (LPARAM)pstrPath);
2597 void SendEMail(LPCTSTR pstrAttachment)
2599 ATLASSERT(::IsWindow(m_hWnd));
2600 ::SendMessage(m_hWnd, DLM_SENDEMAIL, 0, (LPARAM)pstrAttachment);
2603 void SendIR(LPCTSTR pstrPath)
2605 ATLASSERT(::IsWindow(m_hWnd));
2606 ::SendMessage(m_hWnd, DLM_SENDIR, 0, (LPARAM)pstrPath);
2609 HRESULT SetFilterIndex(
int iIndex)
2611 ATLASSERT(::IsWindow(m_hWnd));
2612 return (HRESULT)::SendMessage(m_hWnd, DLM_SETFILTERINDEX, (WPARAM)iIndex, 0L);
2615 void SetFolder(LPCTSTR pstrPath)
2617 ATLASSERT(::IsWindow(m_hWnd));
2618 ATLASSERT(pstrPath);
2619 ::SendMessage(m_hWnd, DLM_SETFOLDER, 0, (LPARAM)pstrPath);
2622 BOOL SetItemState(
int iIndex,
const LVITEM* pItem)
2624 ATLASSERT(::IsWindow(m_hWnd));
2626 return (BOOL)::SendMessage(m_hWnd, DLM_SETITEMSTATE, (WPARAM)iIndex, (LPARAM)pItem);
2629 BOOL SetItemState(
int iIndex, UINT uState, UINT uMask)
2631 ATLASSERT(::IsWindow(m_hWnd));
2633 lvi.stateMask = uMask;
2635 return (BOOL)::SendMessage(m_hWnd, DLM_SETITEMSTATE, (WPARAM)iIndex, (LPARAM)&lvi);
2638 void SetOneItem(
int iIndex, LPCVOID pPA)
2640 ATLASSERT(::IsWindow(m_hWnd));
2641 ::SendMessage(m_hWnd, DLM_SETONEITEM, (WPARAM)iIndex, (LPARAM)pPA);
2644 void SetSelect(
int iIndex)
2646 ATLASSERT(::IsWindow(m_hWnd));
2647 ::SendMessage(m_hWnd, DLM_SETSELECT, (WPARAM)iIndex, 0L);
2650 void SetSelPathName(LPCTSTR pstrPath)
2652 ATLASSERT(::IsWindow(m_hWnd));
2653 ATLASSERT(pstrPath);
2654 ::SendMessage(m_hWnd, DLM_SETSELPATHNAME, 0, (LPARAM)pstrPath);
2659 ATLASSERT(::IsWindow(m_hWnd));
2660 return (BOOL)::SendMessage(m_hWnd, DLM_SETSORTORDER, 0, 0L);
2665 ATLASSERT(::IsWindow(m_hWnd));
2666 return (HRESULT)::SendMessage(m_hWnd, DLM_UPDATE, 0, 0L);
2669 BOOL ValidateFolder()
2671 ATLASSERT(::IsWindow(m_hWnd));
2672 return (BOOL)::SendMessage(m_hWnd, DLM_VALIDATEFOLDER, 0, 0L);
2676 BOOL GetFirstSelectedWaveFile(
int* pIndex, LPTSTR szPath,
const size_t cchPath)
2678 ATLASSERT(::IsWindow(m_hWnd));
2679 return DocList_GetFirstSelectedWaveFile(m_hWnd, pIndex, szPath, cchPath);
2682 BOOL GetNextSelectedWaveFile(
int* pIndex, LPTSTR szPath,
const size_t cchPath)
2684 ATLASSERT(::IsWindow(m_hWnd));
2685 return DocList_GetNextSelectedWaveFile(m_hWnd, pIndex, szPath, cchPath);
2689 typedef CDocListCtrlT<ATL::CWindow> CDocListCtrl;
2691 #endif // WIN32_PLATFORM_PSPC 2697 template <
class TBase>
2698 class CCapEditT :
public TBase
2702 CCapEditT(HWND hWnd = NULL) : TBase(hWnd)
2705 CCapEditT< TBase >& operator =(HWND hWnd)
2711 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2712 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2715 HWND hWnd = CWindow::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2716 ATLASSERT(hWnd != NULL);
2721 static LPCTSTR GetWndClassName()
2727 typedef CCapEditT<WTL::CEdit> CCapEdit;
2732 #ifndef WIN32_PLATFORM_WFSP // Tooltips not supported on SmartPhone 2734 template <
class TBase>
2735 class CTTStaticT :
public TBase
2739 CTTStaticT(HWND hWnd = NULL) : TBase(hWnd)
2742 CTTStaticT< TBase >& operator =(HWND hWnd)
2748 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2749 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2752 HWND hWnd = TBase::Create(hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2753 ATLASSERT(hWnd != NULL);
2758 static LPCTSTR GetWndClassName()
2764 BOOL SetToolTipText(LPCTSTR pstrTipText)
2766 ATLASSERT(::IsWindow(m_hWnd));
2767 ATLASSERT(pstrTipText);
2768 ATLASSERT(lstrlen(pstrTipText) <= 253);
2770 int cchLen = lstrlen(pstrTipText) + 3;
2771 LPTSTR pstr = buff.Allocate(cchLen);
2774 SecureHelper::strcpy_x(pstr, cchLen, _T(
"~~"));
2775 SecureHelper::strcat_x(pstr, cchLen, pstrTipText);
2776 return SetWindowText(pstr);
2780 typedef CTTStaticT<WTL::CStatic> CTTStatic;
2786 template <
class TBase>
2787 class CTTButtonT :
public TBase
2791 CTTButtonT(HWND hWnd = NULL) : TBase(hWnd)
2794 CTTButtonT< TBase >& operator =(HWND hWnd)
2800 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2801 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2804 HWND hWnd = TBase::Create(hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2805 ATLASSERT(hWnd != NULL);
2810 static LPCTSTR GetWndClassName()
2816 BOOL SetToolTipText(LPCTSTR pstrTipText)
2818 ATLASSERT(::IsWindow(m_hWnd));
2819 ATLASSERT(pstrTipText);
2820 ATLASSERT(lstrlen(pstrTipText) <= 253);
2822 int cchLen = lstrlen(pstrTipText) + 3;
2823 LPTSTR pstr = buff.Allocate(cchLen);
2826 SecureHelper::strcpy_x(pstr, cchLen, _T(
"~~"));
2827 SecureHelper::strcat_x(pstr, cchLen, pstrTipText);
2828 return SetWindowText(pstr);
2832 typedef CTTButtonT<WTL::CButton> CTTButton;
2834 #endif // !WIN32_PLATFORM_WFSP 2839 #ifdef WIN32_PLATFORM_WFSP 2844 template <
class TBase>
2852 CSpinCtrlT< TBase >& operator =(HWND hWnd)
2858 HWND Create(HWND hWndParent, HWND hBuddy, DWORD dwStyle,
int nID, LPCTSTR szExpandedName = NULL)
2860 ATLASSERT(::IsWindow(hWndParent));
2862 ATLASSERT(m_hWnd != NULL);
2865 ATLASSERT(::IsWindow(hBuddy));
2872 typedef CSpinCtrlT<ATL::CWindow> CSpinCtrl;
2878 template <
class TBase,
bool t_bExpandOnly>
2879 class CSpinned :
public TBase
2882 CSpinCtrl m_SpinCtrl;
2883 DWORD m_dwSpinnedStyle;
2886 CSpinned(HWND hWnd = NULL) : TBase(hWnd)
2888 m_dwSpinnedStyle = WS_VISIBLE | UDS_ALIGNRIGHT | UDS_EXPANDABLE;
2890 if (t_bExpandOnly ==
true)
2891 m_dwSpinnedStyle |= UDS_NOSCROLL;
2893 m_dwSpinnedStyle |= UDS_HORZ | UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_WRAP;
2896 AttachOrCreateSpinCtrl();
2899 CSpinned<TBase, t_bExpandOnly>& operator =(HWND hWnd)
2905 void Attach(HWND hWnd)
2907 ATLASSERT(!IsWindow());
2908 TBase* pT =
static_cast<TBase*
>(
this);
2911 AttachOrCreateSpinCtrl();
2914 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szExpandedName = NULL,
2915 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2919 TBase* pT =
static_cast<TBase*
>(
this);
2920 TBase::Create(hWndParent, rect, NULL, dwStyle, dwExStyle, MenuOrID, lpCreateParam);
2921 ATLASSERT(pT->m_hWnd != NULL);
2923 m_SpinCtrl.Create(hWndParent, pT->m_hWnd, m_dwSpinnedStyle, ATL_IDW_SPIN_ID + (
int)MenuOrID.m_hMenu, szExpandedName);
2925 ATLASSERT(m_SpinCtrl.m_hWnd != NULL);
2931 CSpinCtrl& GetSpinCtrl()
2938 bool AttachOrCreateSpinCtrl()
2940 TBase* pT =
static_cast<TBase*
>(
this);
2942 HWND hSpin = ::GetDlgItem(pT->GetParent(), ATL_IDW_SPIN_ID + pT->GetDlgCtrlID());
2946 m_SpinCtrl.Attach(hSpin);
2948 TCHAR sClassName[16] = { 0 };
2949 ::GetClassName(hSpin, sClassName, 16);
2950 ATLASSERT(!_tcscmp(sClassName, UPDOWN_CLASS));
2951 ATLASSERT(m_SpinCtrl.GetBuddy().m_hWnd == pT->m_hWnd);
2956 m_SpinCtrl.Create(pT->GetParent(), pT->m_hWnd, m_dwSpinnedStyle, ATL_IDW_SPIN_ID + pT->GetDlgCtrlID());
2959 return m_SpinCtrl.m_hWnd != NULL;
2970 typedef CSpinned<CListBox, false> CSpinListBox;
2971 typedef CSpinned<CListBox, true> CExpandListBox;
2972 typedef CSpinned<CEdit, true> CExpandEdit;
2973 typedef CSpinned<CCapEdit, true> CExpandCapEdit;
2975 #endif // WIN32_PLATFORM_WFSP 2977 #endif // _WTL_CE_NO_CONTROLS 2981 #endif // __ATLWINCE_H__ Definition: atlwinx.h:452
Definition: atlwince.h:527
Definition: atlwince.h:1192
Definition: atlctrls.h:6844
Definition: atlwince.h:653
Definition: atlwince.h:1389
Definition: atldlgs.h:3621
Definition: atlwince.h:601
Definition: atlapp.h:1872
Definition: atlframe.h:3194
Definition: atlwince.h:1325
Definition: atlapp.h:1231
Definition: atlwince.h:1333
Definition: atlframe.h:49
Definition: atlwince.h:1244
Definition: atlwince.h:1342
Definition: atlmisc.h:162
Definition: atlwince.h:609
Definition: atlctrlx.h:3856
Definition: atlapp.h:1455
Definition: atlwince.h:1350
Definition: atlwince.h:971
Definition: atlgdi.h:1209
Definition: atlwince.h:483
Definition: atlwince.h:991
Definition: atlwince.h:715
Definition: atlwinx.h:432
Definition: atlwince.h:1286
Definition: atlgdi.h:3362
Definition: atlgdi.h:3407
Definition: atlwince.h:888
Definition: atlwince.h:697
Definition: atlwince.h:231
Definition: atlwince.h:688