Index: third_party/wtl/include/atluser.h |
diff --git a/third_party/wtl/include/atluser.h b/third_party/wtl/include/atluser.h |
deleted file mode 100644 |
index 2df3b4d302010704687b52425c9f23cb0c8d8017..0000000000000000000000000000000000000000 |
--- a/third_party/wtl/include/atluser.h |
+++ /dev/null |
@@ -1,1159 +0,0 @@ |
-// Windows Template Library - WTL version 8.0 |
-// Copyright (C) Microsoft Corporation. All rights reserved. |
-// |
-// This file is a part of the Windows Template Library. |
-// The use and distribution terms for this software are covered by the |
-// Microsoft Permissive License (Ms-PL) which can be found in the file |
-// Ms-PL.txt at the root of this distribution. |
- |
-#ifndef __ATLUSER_H__ |
-#define __ATLUSER_H__ |
- |
-#pragma once |
- |
-#ifndef __cplusplus |
- #error ATL requires C++ compilation (use a .cpp suffix) |
-#endif |
- |
-#ifndef __ATLAPP_H__ |
- #error atluser.h requires atlapp.h to be included first |
-#endif |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// Classes in this file: |
-// |
-// CMenuItemInfo |
-// CMenuT<t_bManaged> |
-// CAcceleratorT<t_bManaged> |
-// CIconT<t_bManaged> |
-// CCursorT<t_bManaged> |
-// CResource |
-// |
-// Global functions: |
-// AtlMessageBox() |
- |
- |
-namespace WTL |
-{ |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// AtlMessageBox - accepts both memory and resource based strings |
- |
-inline int AtlMessageBox(HWND hWndOwner, ATL::_U_STRINGorID message, ATL::_U_STRINGorID title = (LPCTSTR)NULL, UINT uType = MB_OK | MB_ICONINFORMATION) |
-{ |
- ATLASSERT(hWndOwner == NULL || ::IsWindow(hWndOwner)); |
- |
- LPTSTR lpstrMessage = NULL; |
- if(IS_INTRESOURCE(message.m_lpstr)) |
- { |
- for(int nLen = 256; ; nLen *= 2) |
- { |
- ATLTRY(lpstrMessage = new TCHAR[nLen]); |
- if(lpstrMessage == NULL) |
- { |
- ATLASSERT(FALSE); |
- return 0; |
- } |
- int nRes = ::LoadString(ModuleHelper::GetResourceInstance(), LOWORD(message.m_lpstr), lpstrMessage, nLen); |
- if(nRes < nLen - 1) |
- break; |
- delete [] lpstrMessage; |
- lpstrMessage = NULL; |
- } |
- |
- message.m_lpstr = lpstrMessage; |
- } |
- |
- LPTSTR lpstrTitle = NULL; |
- if(IS_INTRESOURCE(title.m_lpstr) && LOWORD(title.m_lpstr) != 0) |
- { |
- for(int nLen = 256; ; nLen *= 2) |
- { |
- ATLTRY(lpstrTitle = new TCHAR[nLen]); |
- if(lpstrTitle == NULL) |
- { |
- ATLASSERT(FALSE); |
- return 0; |
- } |
- int nRes = ::LoadString(ModuleHelper::GetResourceInstance(), LOWORD(title.m_lpstr), lpstrTitle, nLen); |
- if(nRes < nLen - 1) |
- break; |
- delete [] lpstrTitle; |
- lpstrTitle = NULL; |
- } |
- |
- title.m_lpstr = lpstrTitle; |
- } |
- |
- int nRet = ::MessageBox(hWndOwner, message.m_lpstr, title.m_lpstr, uType); |
- |
- delete [] lpstrMessage; |
- delete [] lpstrTitle; |
- |
- return nRet; |
-} |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// CMenu |
- |
-#if (WINVER >= 0x0500) |
- #ifndef MII_SIZEOF_STRUCT |
- #define MII_SIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) |
- #endif |
- #define MENUITEMINFO_SIZE_VERSION_400A MII_SIZEOF_STRUCT(MENUITEMINFOA, cch) |
- #define MENUITEMINFO_SIZE_VERSION_400W MII_SIZEOF_STRUCT(MENUITEMINFOW, cch) |
- #ifdef UNICODE |
- #define MENUITEMINFO_SIZE_VERSION_400 MENUITEMINFO_SIZE_VERSION_400W |
- #else |
- #define MENUITEMINFO_SIZE_VERSION_400 MENUITEMINFO_SIZE_VERSION_400A |
- #endif // !UNICODE |
-#endif // (WINVER >= 0x0500) |
- |
-class CMenuItemInfo : public MENUITEMINFO |
-{ |
-public: |
- CMenuItemInfo() |
- { |
- memset(this, 0, sizeof(MENUITEMINFO)); |
- cbSize = sizeof(MENUITEMINFO); |
-#if (WINVER >= 0x0500) |
- // adjust struct size if running on older version of Windows |
- if(AtlIsOldWindows()) |
- { |
- ATLASSERT(cbSize > MENUITEMINFO_SIZE_VERSION_400); // must be |
- cbSize = MENUITEMINFO_SIZE_VERSION_400; |
- } |
-#endif // (WINVER >= 0x0500) |
- } |
-}; |
- |
- |
-// forward declarations |
-template <bool t_bManaged> class CMenuT; |
-typedef CMenuT<false> CMenuHandle; |
-typedef CMenuT<true> CMenu; |
- |
- |
-template <bool t_bManaged> |
-class CMenuT |
-{ |
-public: |
-// Data members |
- HMENU m_hMenu; |
- |
-// Constructor/destructor/operators |
- CMenuT(HMENU hMenu = NULL) : m_hMenu(hMenu) |
- { } |
- |
- ~CMenuT() |
- { |
- if(t_bManaged && m_hMenu != NULL) |
- DestroyMenu(); |
- } |
- |
- CMenuT<t_bManaged>& operator =(HMENU hMenu) |
- { |
- Attach(hMenu); |
- return *this; |
- } |
- |
- void Attach(HMENU hMenuNew) |
- { |
- ATLASSERT(::IsMenu(hMenuNew)); |
- if(t_bManaged && m_hMenu != NULL && m_hMenu != hMenuNew) |
- ::DestroyMenu(m_hMenu); |
- m_hMenu = hMenuNew; |
- } |
- |
- HMENU Detach() |
- { |
- HMENU hMenu = m_hMenu; |
- m_hMenu = NULL; |
- return hMenu; |
- } |
- |
- operator HMENU() const { return m_hMenu; } |
- |
- bool IsNull() const { return (m_hMenu == NULL); } |
- |
- BOOL IsMenu() const |
- { |
- return ::IsMenu(m_hMenu); |
- } |
- |
-// Create/destroy methods |
- BOOL CreateMenu() |
- { |
- ATLASSERT(m_hMenu == NULL); |
- m_hMenu = ::CreateMenu(); |
- return (m_hMenu != NULL) ? TRUE : FALSE; |
- } |
- |
- BOOL CreatePopupMenu() |
- { |
- ATLASSERT(m_hMenu == NULL); |
- m_hMenu = ::CreatePopupMenu(); |
- return (m_hMenu != NULL) ? TRUE : FALSE; |
- } |
- |
- BOOL LoadMenu(ATL::_U_STRINGorID menu) |
- { |
- ATLASSERT(m_hMenu == NULL); |
- m_hMenu = ::LoadMenu(ModuleHelper::GetResourceInstance(), menu.m_lpstr); |
- return (m_hMenu != NULL) ? TRUE : FALSE; |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL LoadMenuIndirect(const void* lpMenuTemplate) |
- { |
- ATLASSERT(m_hMenu == NULL); |
- m_hMenu = ::LoadMenuIndirect(lpMenuTemplate); |
- return (m_hMenu != NULL) ? TRUE : FALSE; |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL DestroyMenu() |
- { |
- if (m_hMenu == NULL) |
- return FALSE; |
- BOOL bRet = ::DestroyMenu(m_hMenu); |
- if(bRet) |
- m_hMenu = NULL; |
- return bRet; |
- } |
- |
-// Menu Operations |
- BOOL DeleteMenu(UINT nPosition, UINT nFlags) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::DeleteMenu(m_hMenu, nPosition, nFlags); |
- } |
- |
- BOOL TrackPopupMenu(UINT nFlags, int x, int y, HWND hWnd, LPCRECT lpRect = NULL) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
-#ifndef _WIN32_WCE |
-#if (WINVER >= 0x0500) |
- x = _FixTrackMenuPopupX(x, y); |
-#endif // !(WINVER >= 0x0500) |
- return ::TrackPopupMenu(m_hMenu, nFlags, x, y, 0, hWnd, lpRect); |
-#else // CE specific |
- lpRect; |
- return ::TrackPopupMenuEx(m_hMenu, nFlags, x, y, hWnd, NULL); |
-#endif // _WIN32_WCE |
- } |
- |
- BOOL TrackPopupMenuEx(UINT uFlags, int x, int y, HWND hWnd, LPTPMPARAMS lptpm = NULL) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
-#if (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
- x = _FixTrackMenuPopupX(x, y); |
-#endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
- return ::TrackPopupMenuEx(m_hMenu, uFlags, x, y, hWnd, lptpm); |
- } |
- |
-#if (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
- // helper that fixes popup menu X position when it's off-screen |
- static int _FixTrackMenuPopupX(int x, int y) |
- { |
- POINT pt = { x, y }; |
- HMONITOR hMonitor = ::MonitorFromPoint(pt, MONITOR_DEFAULTTONULL); |
- if(hMonitor == NULL) |
- { |
- HMONITOR hMonitorNear = ::MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST); |
- if(hMonitorNear != NULL) |
- { |
- MONITORINFO mi = { 0 }; |
- mi.cbSize = sizeof(MONITORINFO); |
- if(::GetMonitorInfo(hMonitorNear, &mi) != FALSE) |
- { |
- if(x < mi.rcWork.left) |
- x = mi.rcWork.left; |
- else if(x > mi.rcWork.right) |
- x = mi.rcWork.right; |
- } |
- } |
- } |
- |
- return x; |
- } |
- |
- BOOL GetMenuInfo(LPMENUINFO lpMenuInfo) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuInfo(m_hMenu, lpMenuInfo); |
- } |
- |
- BOOL SetMenuInfo(LPCMENUINFO lpMenuInfo) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::SetMenuInfo(m_hMenu, lpMenuInfo); |
- } |
-#endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
- |
-// Menu Item Operations |
- BOOL AppendMenu(UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::AppendMenu(m_hMenu, nFlags, nIDNewItem, lpszNewItem); |
- } |
- |
- BOOL AppendMenu(UINT nFlags, HMENU hSubMenu, LPCTSTR lpszNewItem) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::AppendMenu(m_hMenu, nFlags | MF_POPUP, (UINT_PTR)hSubMenu, lpszNewItem); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL AppendMenu(UINT nFlags, UINT_PTR nIDNewItem, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::AppendMenu(m_hMenu, nFlags | MF_BITMAP, nIDNewItem, (LPCTSTR)hBmp); |
- } |
- |
- BOOL AppendMenu(UINT nFlags, HMENU hSubMenu, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::AppendMenu(m_hMenu, nFlags | (MF_BITMAP | MF_POPUP), (UINT_PTR)hSubMenu, (LPCTSTR)hBmp); |
- } |
-#endif // !_WIN32_WCE |
- |
- UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return (UINT)::CheckMenuItem(m_hMenu, nIDCheckItem, nCheck); |
- } |
- |
- UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::EnableMenuItem(m_hMenu, nIDEnableItem, nEnable); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL HiliteMenuItem(HWND hWnd, UINT uIDHiliteItem, UINT uHilite) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::HiliteMenuItem(hWnd, m_hMenu, uIDHiliteItem, uHilite); |
- } |
- |
- int GetMenuItemCount() const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuItemCount(m_hMenu); |
- } |
- |
- UINT GetMenuItemID(int nPos) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuItemID(m_hMenu, nPos); |
- } |
- |
- UINT GetMenuState(UINT nID, UINT nFlags) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuState(m_hMenu, nID, nFlags); |
- } |
- |
- int GetMenuString(UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuString(m_hMenu, nIDItem, lpString, nMaxCount, nFlags); |
- } |
- |
- int GetMenuStringLen(UINT nIDItem, UINT nFlags) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuString(m_hMenu, nIDItem, NULL, 0, nFlags); |
- } |
- |
-#ifndef _ATL_NO_COM |
- BOOL GetMenuString(UINT nIDItem, BSTR& bstrText, UINT nFlags) const |
- { |
- USES_CONVERSION; |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(bstrText == NULL); |
- |
- int nLen = GetMenuStringLen(nIDItem, nFlags); |
- if(nLen == 0) |
- { |
- bstrText = ::SysAllocString(OLESTR("")); |
- return (bstrText != NULL) ? TRUE : FALSE; |
- } |
- |
- nLen++; // increment to include terminating NULL char |
- CTempBuffer<TCHAR, _WTL_STACK_ALLOC_THRESHOLD> buff; |
- LPTSTR lpszText = buff.Allocate(nLen); |
- if(lpszText == NULL) |
- return FALSE; |
- |
- if(!GetMenuString(nIDItem, lpszText, nLen, nFlags)) |
- return FALSE; |
- |
- bstrText = ::SysAllocString(T2OLE(lpszText)); |
- return (bstrText != NULL) ? TRUE : FALSE; |
- } |
-#endif // !_ATL_NO_COM |
-#endif // !_WIN32_WCE |
- |
-#if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) |
- int GetMenuString(UINT nIDItem, _CSTRING_NS::CString& strText, UINT nFlags) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- |
- int nLen = GetMenuStringLen(nIDItem, nFlags); |
- if(nLen == 0) |
- return 0; |
- |
- nLen++; // increment to include terminating NULL char |
- LPTSTR lpstr = strText.GetBufferSetLength(nLen); |
- if(lpstr == NULL) |
- return 0; |
- int nRet = GetMenuString(nIDItem, lpstr, nLen, nFlags); |
- strText.ReleaseBuffer(); |
- return nRet; |
- } |
-#endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) |
- |
- CMenuHandle GetSubMenu(int nPos) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return CMenuHandle(::GetSubMenu(m_hMenu, nPos)); |
- } |
- |
- BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::InsertMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); |
- } |
- |
- BOOL InsertMenu(UINT nPosition, UINT nFlags, HMENU hSubMenu, LPCTSTR lpszNewItem) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_POPUP, (UINT_PTR)hSubMenu, lpszNewItem); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL InsertMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::InsertMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem, (LPCTSTR)hBmp); |
- } |
- |
- BOOL InsertMenu(UINT nPosition, UINT nFlags, HMENU hSubMenu, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::InsertMenu(m_hMenu, nPosition, nFlags | (MF_BITMAP | MF_POPUP), (UINT_PTR)hSubMenu, (LPCTSTR)hBmp); |
- } |
- |
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::ModifyMenu(m_hMenu, nPosition, nFlags, nIDNewItem, lpszNewItem); |
- } |
- |
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, HMENU hSubMenu, LPCTSTR lpszNewItem) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_POPUP, (UINT_PTR)hSubMenu, lpszNewItem); |
- } |
- |
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::ModifyMenu(m_hMenu, nPosition, nFlags | MF_BITMAP, nIDNewItem, (LPCTSTR)hBmp); |
- } |
- |
- BOOL ModifyMenu(UINT nPosition, UINT nFlags, HMENU hSubMenu, HBITMAP hBmp) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- ATLASSERT(::IsMenu(hSubMenu)); |
- return ::ModifyMenu(m_hMenu, nPosition, nFlags | (MF_BITMAP | MF_POPUP), (UINT_PTR)hSubMenu, (LPCTSTR)hBmp); |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL RemoveMenu(UINT nPosition, UINT nFlags) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::RemoveMenu(m_hMenu, nPosition, nFlags); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags, HBITMAP hBmpUnchecked, HBITMAP hBmpChecked) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::SetMenuItemBitmaps(m_hMenu, nPosition, nFlags, hBmpUnchecked, hBmpChecked); |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL CheckMenuRadioItem(UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::CheckMenuRadioItem(m_hMenu, nIDFirst, nIDLast, nIDItem, nFlags); |
- } |
- |
- BOOL GetMenuItemInfo(UINT uItem, BOOL bByPosition, LPMENUITEMINFO lpmii) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return (BOOL)::GetMenuItemInfo(m_hMenu, uItem, bByPosition, lpmii); |
- } |
- |
- BOOL SetMenuItemInfo(UINT uItem, BOOL bByPosition, LPMENUITEMINFO lpmii) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return (BOOL)::SetMenuItemInfo(m_hMenu, uItem, bByPosition, lpmii); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL InsertMenuItem(UINT uItem, BOOL bByPosition, LPMENUITEMINFO lpmii) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return (BOOL)::InsertMenuItem(m_hMenu, uItem, bByPosition, lpmii); |
- } |
- |
- UINT GetMenuDefaultItem(BOOL bByPosition = FALSE, UINT uFlags = 0U) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuDefaultItem(m_hMenu, (UINT)bByPosition, uFlags); |
- } |
- |
- BOOL SetMenuDefaultItem(UINT uItem = (UINT)-1, BOOL bByPosition = FALSE) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::SetMenuDefaultItem(m_hMenu, uItem, (UINT)bByPosition); |
- } |
- |
- BOOL GetMenuItemRect(HWND hWnd, UINT uItem, LPRECT lprcItem) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuItemRect(hWnd, m_hMenu, uItem, lprcItem); |
- } |
- |
- int MenuItemFromPoint(HWND hWnd, POINT point) const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::MenuItemFromPoint(hWnd, m_hMenu, point); |
- } |
- |
-// Context Help Functions |
- BOOL SetMenuContextHelpId(DWORD dwContextHelpId) |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::SetMenuContextHelpId(m_hMenu, dwContextHelpId); |
- } |
- |
- DWORD GetMenuContextHelpId() const |
- { |
- ATLASSERT(::IsMenu(m_hMenu)); |
- return ::GetMenuContextHelpId(m_hMenu); |
- } |
-#endif // !_WIN32_WCE |
-}; |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// CAccelerator |
- |
-template <bool t_bManaged> |
-class CAcceleratorT |
-{ |
-public: |
- HACCEL m_hAccel; |
- |
-// Constructor/destructor/operators |
- CAcceleratorT(HACCEL hAccel = NULL) : m_hAccel(hAccel) |
- { } |
- |
- ~CAcceleratorT() |
- { |
- if(t_bManaged && m_hAccel != NULL) |
- ::DestroyAcceleratorTable(m_hAccel); |
- } |
- |
- CAcceleratorT<t_bManaged>& operator =(HACCEL hAccel) |
- { |
- Attach(hAccel); |
- return *this; |
- } |
- |
- void Attach(HACCEL hAccel) |
- { |
- if(t_bManaged && m_hAccel != NULL) |
- ::DestroyAcceleratorTable(m_hAccel); |
- m_hAccel = hAccel; |
- } |
- |
- HACCEL Detach() |
- { |
- HACCEL hAccel = m_hAccel; |
- m_hAccel = NULL; |
- return hAccel; |
- } |
- |
- operator HACCEL() const { return m_hAccel; } |
- |
- bool IsNull() const { return m_hAccel == NULL; } |
- |
-// Create/destroy methods |
- HACCEL LoadAccelerators(ATL::_U_STRINGorID accel) |
- { |
- ATLASSERT(m_hAccel == NULL); |
- m_hAccel = ::LoadAccelerators(ModuleHelper::GetResourceInstance(), accel.m_lpstr); |
- return m_hAccel; |
- } |
- |
- HACCEL CreateAcceleratorTable(LPACCEL pAccel, int cEntries) |
- { |
- ATLASSERT(m_hAccel == NULL); |
- ATLASSERT(pAccel != NULL); |
- m_hAccel = ::CreateAcceleratorTable(pAccel, cEntries); |
- return m_hAccel; |
- } |
- |
- void DestroyObject() |
- { |
- if(m_hAccel != NULL) |
- { |
- ::DestroyAcceleratorTable(m_hAccel); |
- m_hAccel = NULL; |
- } |
- } |
- |
-// Operations |
-#ifndef _WIN32_WCE |
- int CopyAcceleratorTable(LPACCEL lpAccelDst, int cEntries) |
- { |
- ATLASSERT(m_hAccel != NULL); |
- ATLASSERT(lpAccelDst != NULL); |
- return ::CopyAcceleratorTable(m_hAccel, lpAccelDst, cEntries); |
- } |
- |
- int GetEntriesCount() const |
- { |
- ATLASSERT(m_hAccel != NULL); |
- return ::CopyAcceleratorTable(m_hAccel, NULL, 0); |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL TranslateAccelerator(HWND hWnd, LPMSG pMsg) |
- { |
- ATLASSERT(m_hAccel != NULL); |
- ATLASSERT(::IsWindow(hWnd)); |
- ATLASSERT(pMsg != NULL); |
- return ::TranslateAccelerator(hWnd, m_hAccel, pMsg); |
- } |
-}; |
- |
-typedef CAcceleratorT<false> CAcceleratorHandle; |
-typedef CAcceleratorT<true> CAccelerator; |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// CIcon |
- |
-template <bool t_bManaged> |
-class CIconT |
-{ |
-public: |
- HICON m_hIcon; |
- |
-// Constructor/destructor/operators |
- CIconT(HICON hIcon = NULL) : m_hIcon(hIcon) |
- { } |
- |
- ~CIconT() |
- { |
- if(t_bManaged && m_hIcon != NULL) |
- ::DestroyIcon(m_hIcon); |
- } |
- |
- CIconT<t_bManaged>& operator =(HICON hIcon) |
- { |
- Attach(hIcon); |
- return *this; |
- } |
- |
- void Attach(HICON hIcon) |
- { |
- if(t_bManaged && m_hIcon != NULL) |
- ::DestroyIcon(m_hIcon); |
- m_hIcon = hIcon; |
- } |
- |
- HICON Detach() |
- { |
- HICON hIcon = m_hIcon; |
- m_hIcon = NULL; |
- return hIcon; |
- } |
- |
- operator HICON() const { return m_hIcon; } |
- |
- bool IsNull() const { return m_hIcon == NULL; } |
- |
-// Create/destroy methods |
- HICON LoadIcon(ATL::_U_STRINGorID icon) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- m_hIcon = ::LoadIcon(ModuleHelper::GetResourceInstance(), icon.m_lpstr); |
- return m_hIcon; |
- } |
- |
- HICON LoadIcon(ATL::_U_STRINGorID icon, int cxDesired, int cyDesired, UINT fuLoad = 0) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- m_hIcon = (HICON) ::LoadImage(ModuleHelper::GetResourceInstance(), icon.m_lpstr, IMAGE_ICON, cxDesired, cyDesired, fuLoad); |
- return m_hIcon; |
- } |
- |
-#ifndef _WIN32_WCE |
- HICON LoadOEMIcon(LPCTSTR lpstrIconName) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(IsOEMIcon(lpstrIconName)); |
- m_hIcon = ::LoadIcon(NULL, lpstrIconName); |
- return m_hIcon; |
- } |
- |
- HICON CreateIcon(int nWidth, int nHeight, BYTE cPlanes, BYTE cBitsPixel, CONST BYTE* lpbANDbits, CONST BYTE *lpbXORbits) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(lpbANDbits != NULL); |
- ATLASSERT(lpbXORbits != NULL); |
- m_hIcon = ::CreateIcon(ModuleHelper::GetResourceInstance(), nWidth, nHeight, cPlanes, cBitsPixel, lpbANDbits, lpbXORbits); |
- return m_hIcon; |
- } |
- |
- HICON CreateIconFromResource(PBYTE pBits, DWORD dwResSize, DWORD dwVersion = 0x00030000) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(pBits != NULL); |
- m_hIcon = ::CreateIconFromResource(pBits, dwResSize, TRUE, dwVersion); |
- return m_hIcon; |
- } |
- |
- HICON CreateIconFromResourceEx(PBYTE pbBits, DWORD cbBits, DWORD dwVersion = 0x00030000, int cxDesired = 0, int cyDesired = 0, UINT uFlags = LR_DEFAULTCOLOR) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(pbBits != NULL); |
- ATLASSERT(cbBits > 0); |
- m_hIcon = ::CreateIconFromResourceEx(pbBits, cbBits, TRUE, dwVersion, cxDesired, cyDesired, uFlags); |
- return m_hIcon; |
- } |
-#endif // !_WIN32_WCE |
- |
- HICON CreateIconIndirect(PICONINFO pIconInfo) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(pIconInfo != NULL); |
- m_hIcon = ::CreateIconIndirect(pIconInfo); |
- return m_hIcon; |
- } |
- |
-#ifndef _WIN32_WCE |
- HICON ExtractIcon(LPCTSTR lpszExeFileName, UINT nIconIndex) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(lpszExeFileName != NULL); |
- m_hIcon = ::ExtractIcon(ModuleHelper::GetModuleInstance(), lpszExeFileName, nIconIndex); |
- return m_hIcon; |
- } |
- |
- HICON ExtractAssociatedIcon(HINSTANCE hInst, LPTSTR lpIconPath, LPWORD lpiIcon) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(lpIconPath != NULL); |
- ATLASSERT(lpiIcon != NULL); |
- m_hIcon = ::ExtractAssociatedIcon(hInst, lpIconPath, lpiIcon); |
- return m_hIcon; |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL DestroyIcon() |
- { |
- ATLASSERT(m_hIcon != NULL); |
- BOOL bRet = ::DestroyIcon(m_hIcon); |
- if(bRet != FALSE) |
- m_hIcon = NULL; |
- return bRet; |
- } |
- |
-// Operations |
-#ifndef _WIN32_WCE |
- HICON CopyIcon() |
- { |
- ATLASSERT(m_hIcon != NULL); |
- return ::CopyIcon(m_hIcon); |
- } |
- |
- HICON DuplicateIcon() |
- { |
- ATLASSERT(m_hIcon != NULL); |
- return ::DuplicateIcon(NULL, m_hIcon); |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL DrawIcon(HDC hDC, int x, int y) |
- { |
- ATLASSERT(m_hIcon != NULL); |
-#ifndef _WIN32_WCE |
- return ::DrawIcon(hDC, x, y, m_hIcon); |
-#else // CE specific |
- return ::DrawIconEx(hDC, x, y, m_hIcon, 0, 0, 0, NULL, DI_NORMAL); |
-#endif // _WIN32_WCE |
- } |
- |
- BOOL DrawIcon(HDC hDC, POINT pt) |
- { |
- ATLASSERT(m_hIcon != NULL); |
-#ifndef _WIN32_WCE |
- return ::DrawIcon(hDC, pt.x, pt.y, m_hIcon); |
-#else // CE specific |
- return ::DrawIconEx(hDC, pt.x, pt.y, m_hIcon, 0, 0, 0, NULL, DI_NORMAL); |
-#endif // _WIN32_WCE |
- } |
- |
- BOOL DrawIconEx(HDC hDC, int x, int y, int cxWidth, int cyWidth, UINT uStepIfAniCur = 0, HBRUSH hbrFlickerFreeDraw = NULL, UINT uFlags = DI_NORMAL) |
- { |
- ATLASSERT(m_hIcon != NULL); |
- return ::DrawIconEx(hDC, x, y, m_hIcon, cxWidth, cyWidth, uStepIfAniCur, hbrFlickerFreeDraw, uFlags); |
- } |
- |
- BOOL DrawIconEx(HDC hDC, POINT pt, SIZE size, UINT uStepIfAniCur = 0, HBRUSH hbrFlickerFreeDraw = NULL, UINT uFlags = DI_NORMAL) |
- { |
- ATLASSERT(m_hIcon != NULL); |
- return ::DrawIconEx(hDC, pt.x, pt.y, m_hIcon, size.cx, size.cy, uStepIfAniCur, hbrFlickerFreeDraw, uFlags); |
- } |
- |
-#ifndef _WIN32_WCE |
- BOOL GetIconInfo(PICONINFO pIconInfo) const |
- { |
- ATLASSERT(m_hIcon != NULL); |
- ATLASSERT(pIconInfo != NULL); |
- return ::GetIconInfo(m_hIcon, pIconInfo); |
- } |
- |
-#if (_WIN32_WINNT >= 0x0600) |
- BOOL GetIconInfoEx(PICONINFOEX pIconInfo) const |
- { |
- ATLASSERT(m_hIcon != NULL); |
- ATLASSERT(pIconInfo != NULL); |
- return ::GetIconInfoEx(m_hIcon, pIconInfo); |
- } |
-#endif // (_WIN32_WINNT >= 0x0600) |
- |
-#if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) |
- HRESULT LoadIconMetric(ATL::_U_STRINGorID icon, int lims) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- USES_CONVERSION; |
- return ::LoadIconMetric(ModuleHelper::GetResourceInstance(), T2CW(icon.m_lpstr), lims, &m_hIcon); |
- } |
- |
- HRESULT LoadIconWithScaleDown(ATL::_U_STRINGorID icon, int cx, int cy) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- USES_CONVERSION; |
- return ::LoadIconWithScaleDown(ModuleHelper::GetResourceInstance(), T2CW(icon.m_lpstr), cx, cy, &m_hIcon); |
- } |
- |
- HRESULT LoadOEMIconMetric(LPCTSTR lpstrIconName, int lims) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(IsOEMIcon(lpstrIconName)); |
- return ::LoadIconMetric(NULL, (LPCWSTR)lpstrIconName, lims, &m_hIcon); |
- } |
- |
- HRESULT LoadOEMIconWithScaleDown(LPCTSTR lpstrIconName, int cx, int cy) |
- { |
- ATLASSERT(m_hIcon == NULL); |
- ATLASSERT(IsOEMIcon(lpstrIconName)); |
- USES_CONVERSION; |
- return ::LoadIconWithScaleDown(NULL, (LPCWSTR)lpstrIconName, cx, cy, &m_hIcon); |
- } |
-#endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) |
-#endif // !_WIN32_WCE |
- |
- // Helper |
-#ifndef _WIN32_WCE |
- static bool IsOEMIcon(LPCTSTR lpstrIconName) |
- { |
-#if (WINVER >= 0x0600) |
- return (lpstrIconName == IDI_APPLICATION || lpstrIconName == IDI_ASTERISK || lpstrIconName == IDI_EXCLAMATION || |
- lpstrIconName == IDI_HAND || lpstrIconName == IDI_QUESTION || lpstrIconName == IDI_WINLOGO || |
- lpstrIconName == IDI_SHIELD); |
-#else // !(WINVER >= 0x0600) |
- return (lpstrIconName == IDI_APPLICATION || lpstrIconName == IDI_ASTERISK || lpstrIconName == IDI_EXCLAMATION || |
- lpstrIconName == IDI_HAND || lpstrIconName == IDI_QUESTION || lpstrIconName == IDI_WINLOGO); |
-#endif // !(WINVER >= 0x0600) |
- } |
-#endif // !_WIN32_WCE |
-}; |
- |
-typedef CIconT<false> CIconHandle; |
-typedef CIconT<true> CIcon; |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// CCursor |
- |
-// protect template member from a winuser.h macro |
-#ifdef CopyCursor |
- #undef CopyCursor |
-#endif |
- |
-template <bool t_bManaged> |
-class CCursorT |
-{ |
-public: |
- HCURSOR m_hCursor; |
- |
-// Constructor/destructor/operators |
- CCursorT(HCURSOR hCursor = NULL) : m_hCursor(hCursor) |
- { } |
- |
- ~CCursorT() |
- { |
- if(t_bManaged && m_hCursor != NULL) |
- DestroyCursor(); |
- } |
- |
- CCursorT<t_bManaged>& operator =(HCURSOR hCursor) |
- { |
- Attach(hCursor); |
- return *this; |
- } |
- |
- void Attach(HCURSOR hCursor) |
- { |
- if(t_bManaged && m_hCursor != NULL) |
- DestroyCursor(); |
- m_hCursor = hCursor; |
- } |
- |
- HCURSOR Detach() |
- { |
- HCURSOR hCursor = m_hCursor; |
- m_hCursor = NULL; |
- return hCursor; |
- } |
- |
- operator HCURSOR() const { return m_hCursor; } |
- |
- bool IsNull() const { return m_hCursor == NULL; } |
- |
-// Create/destroy methods |
- HCURSOR LoadCursor(ATL::_U_STRINGorID cursor) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- m_hCursor = ::LoadCursor(ModuleHelper::GetResourceInstance(), cursor.m_lpstr); |
- return m_hCursor; |
- } |
- |
- HCURSOR LoadSysCursor(LPCTSTR lpstrCursorName) |
- { |
- ATLASSERT(m_hCursor == NULL); |
-#if (WINVER >= 0x0500) |
- ATLASSERT(lpstrCursorName == IDC_ARROW || lpstrCursorName == IDC_IBEAM || lpstrCursorName == IDC_WAIT || |
- lpstrCursorName == IDC_CROSS || lpstrCursorName == IDC_UPARROW || lpstrCursorName == IDC_SIZE || |
- lpstrCursorName == IDC_ICON || lpstrCursorName == IDC_SIZENWSE || lpstrCursorName == IDC_SIZENESW || |
- lpstrCursorName == IDC_SIZEWE || lpstrCursorName == IDC_SIZENS || lpstrCursorName == IDC_SIZEALL || |
- lpstrCursorName == IDC_NO || lpstrCursorName == IDC_APPSTARTING || lpstrCursorName == IDC_HELP || |
- lpstrCursorName == IDC_HAND); |
-#else // !(WINVER >= 0x0500) |
- ATLASSERT(lpstrCursorName == IDC_ARROW || lpstrCursorName == IDC_IBEAM || lpstrCursorName == IDC_WAIT || |
- lpstrCursorName == IDC_CROSS || lpstrCursorName == IDC_UPARROW || lpstrCursorName == IDC_SIZE || |
- lpstrCursorName == IDC_ICON || lpstrCursorName == IDC_SIZENWSE || lpstrCursorName == IDC_SIZENESW || |
- lpstrCursorName == IDC_SIZEWE || lpstrCursorName == IDC_SIZENS || lpstrCursorName == IDC_SIZEALL || |
- lpstrCursorName == IDC_NO || lpstrCursorName == IDC_APPSTARTING || lpstrCursorName == IDC_HELP); |
-#endif // !(WINVER >= 0x0500) |
- m_hCursor = ::LoadCursor(NULL, lpstrCursorName); |
- return m_hCursor; |
- } |
- |
- // deprecated |
- HCURSOR LoadOEMCursor(LPCTSTR lpstrCursorName) |
- { |
- return LoadSysCursor(lpstrCursorName); |
- } |
- |
- HCURSOR LoadCursor(ATL::_U_STRINGorID cursor, int cxDesired, int cyDesired, UINT fuLoad = 0) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- m_hCursor = (HCURSOR) ::LoadImage(ModuleHelper::GetResourceInstance(), cursor.m_lpstr, IMAGE_CURSOR, cxDesired, cyDesired, fuLoad); |
- return m_hCursor; |
- } |
- |
-#ifndef _WIN32_WCE |
- HCURSOR LoadCursorFromFile(LPCTSTR pstrFilename) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- ATLASSERT(pstrFilename != NULL); |
- m_hCursor = ::LoadCursorFromFile(pstrFilename); |
- return m_hCursor; |
- } |
-#endif // !_WIN32_WCE |
- |
-#if !defined(_WIN32_WCE) || ((_WIN32_WCE >= 0x400) && !(defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))) |
- HCURSOR CreateCursor(int xHotSpot, int yHotSpot, int nWidth, int nHeight, CONST VOID *pvANDPlane, CONST VOID *pvXORPlane) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- m_hCursor = ::CreateCursor(ModuleHelper::GetResourceInstance(), xHotSpot, yHotSpot, nWidth, nHeight, pvANDPlane, pvXORPlane); |
- return m_hCursor; |
- } |
-#endif // !defined(_WIN32_WCE) || ((_WIN32_WCE >= 0x400) && !(defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))) |
- |
-#ifndef _WIN32_WCE |
- HCURSOR CreateCursorFromResource(PBYTE pBits, DWORD dwResSize, DWORD dwVersion = 0x00030000) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- ATLASSERT(pBits != NULL); |
- m_hCursor = (HCURSOR)::CreateIconFromResource(pBits, dwResSize, FALSE, dwVersion); |
- return m_hCursor; |
- } |
- |
- HCURSOR CreateCursorFromResourceEx(PBYTE pbBits, DWORD cbBits, DWORD dwVersion = 0x00030000, int cxDesired = 0, int cyDesired = 0, UINT uFlags = LR_DEFAULTCOLOR) |
- { |
- ATLASSERT(m_hCursor == NULL); |
- ATLASSERT(pbBits != NULL); |
- ATLASSERT(cbBits > 0); |
- m_hCursor = (HCURSOR)::CreateIconFromResourceEx(pbBits, cbBits, FALSE, dwVersion, cxDesired, cyDesired, uFlags); |
- return m_hCursor; |
- } |
-#endif // !_WIN32_WCE |
- |
- BOOL DestroyCursor() |
- { |
- ATLASSERT(m_hCursor != NULL); |
-#if !defined(_WIN32_WCE) || ((_WIN32_WCE >= 0x400) && !(defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP))) |
- BOOL bRet = ::DestroyCursor(m_hCursor); |
- if(bRet != FALSE) |
- m_hCursor = NULL; |
- return bRet; |
-#else // !(!defined(_WIN32_WCE) || ((_WIN32_WCE >= 0x400) && !(defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)))) |
- ATLTRACE2(atlTraceUI, 0, _T("Warning: This version of Windows CE does not have ::DestroyCursor()\n")); |
- return FALSE; |
-#endif // !(!defined(_WIN32_WCE) || ((_WIN32_WCE >= 0x400) && !(defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)))) |
- } |
- |
-// Operations |
-#ifndef _WIN32_WCE |
- HCURSOR CopyCursor() |
- { |
- ATLASSERT(m_hCursor != NULL); |
- return (HCURSOR)::CopyIcon((HICON)m_hCursor); |
- } |
-#endif // !_WIN32_WCE |
- |
-#if (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
- BOOL GetCursorInfo(LPCURSORINFO pCursorInfo) |
- { |
- ATLASSERT(m_hCursor != NULL); |
- ATLASSERT(pCursorInfo != NULL); |
- return ::GetCursorInfo(pCursorInfo); |
- } |
-#endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) |
-}; |
- |
-typedef CCursorT<false> CCursorHandle; |
-typedef CCursorT<true> CCursor; |
- |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// CResource - Wraps a generic Windows resource. |
-// Use it with custom resource types other than the |
-// standard RT_CURSOR, RT_BITMAP, etc. |
- |
-class CResource |
-{ |
-public: |
- HGLOBAL m_hGlobal; |
- HRSRC m_hResource; |
- |
-// Constructor/destructor |
- CResource() : m_hGlobal(NULL), m_hResource(NULL) |
- { } |
- |
- ~CResource() |
- { |
- Release(); |
- } |
- |
-// Load methods |
- bool Load(ATL::_U_STRINGorID Type, ATL::_U_STRINGorID ID) |
- { |
- ATLASSERT(m_hResource == NULL); |
- ATLASSERT(m_hGlobal == NULL); |
- |
- m_hResource = ::FindResource(ModuleHelper::GetResourceInstance(), ID.m_lpstr, Type.m_lpstr); |
- if(m_hResource == NULL) |
- return false; |
- |
- m_hGlobal = ::LoadResource(ModuleHelper::GetResourceInstance(), m_hResource); |
- if(m_hGlobal == NULL) |
- { |
- m_hResource = NULL; |
- return false; |
- } |
- |
- return true; |
- } |
- |
-#ifndef _WIN32_WCE |
- bool LoadEx(ATL::_U_STRINGorID Type, ATL::_U_STRINGorID ID, WORD wLanguage) |
- { |
- ATLASSERT(m_hResource == NULL); |
- ATLASSERT(m_hGlobal == NULL); |
- |
- m_hResource = ::FindResourceEx(ModuleHelper::GetResourceInstance(), ID.m_lpstr, Type.m_lpstr, wLanguage); |
- if(m_hResource == NULL) |
- return false; |
- |
- m_hGlobal = ::LoadResource(ModuleHelper::GetResourceInstance(), m_hResource); |
- if(m_hGlobal == NULL) |
- { |
- m_hResource = NULL; |
- return false; |
- } |
- |
- return true; |
- } |
-#endif // !_WIN32_WCE |
- |
-// Misc. operations |
- DWORD GetSize() const |
- { |
- ATLASSERT(m_hResource != NULL); |
- return ::SizeofResource(ModuleHelper::GetResourceInstance(), m_hResource); |
- } |
- |
- LPVOID Lock() |
- { |
- ATLASSERT(m_hResource != NULL); |
- ATLASSERT(m_hGlobal != NULL); |
- LPVOID pVoid = ::LockResource(m_hGlobal); |
- ATLASSERT(pVoid != NULL); |
- return pVoid; |
- } |
- |
- void Release() |
- { |
- if(m_hGlobal != NULL) |
- { |
- FreeResource(m_hGlobal); |
- m_hGlobal = NULL; |
- m_hResource = NULL; |
- } |
- } |
-}; |
- |
-}; // namespace WTL |
- |
-#endif // __ATLUSER_H__ |