home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / HandHeldPCPro30 / sdk.exe / Jupiter SDK / data1.cab / MFC / src / winctrl6.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-02-19  |  8.7 KB  |  328 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #include "stdafx.h"
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CIPAddressCtrl
  15.  
  16. #ifdef AFX_INET_SEG
  17. #pragma code_seg(AFX_INET_SEG)
  18. #endif
  19.  
  20. #if !defined(_WIN32_WCE)
  21. CIPAddressCtrl::~CIPAddressCtrl()
  22. {
  23.     DestroyWindow();
  24. }
  25.  
  26. BOOL CIPAddressCtrl::Create(DWORD dwStyle, const RECT& rect,
  27.     CWnd* pParentWnd, UINT nID)
  28. {
  29.     // initialize common controls
  30.     VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTL_INTERNET_REG));
  31.  
  32.     // the IP Address Control must be a child
  33.     ASSERT(dwStyle & WS_CHILD);
  34.  
  35.     CWnd* pWnd = this;
  36.     return pWnd->Create(WC_IPADDRESS, NULL, dwStyle, rect, pParentWnd, nID);
  37. }
  38.  
  39. int CIPAddressCtrl::GetAddress(BYTE& nField0, BYTE& nField1, BYTE& nField2, BYTE& nField3)
  40. {
  41.     ASSERT(::IsWindow(m_hWnd));
  42.     DWORD dwAddress;
  43.     LRESULT nRetVal = ::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM) &dwAddress);
  44.  
  45.     nField0 = (BYTE) FIRST_IPADDRESS(dwAddress);
  46.     nField1 = (BYTE) SECOND_IPADDRESS(dwAddress);
  47.     nField2 = (BYTE) THIRD_IPADDRESS(dwAddress);
  48.     nField3 = (BYTE) FOURTH_IPADDRESS(dwAddress);
  49.  
  50.     return nRetVal;
  51. }
  52.  
  53. /////////////////////////////////////////////////////////////////////////////
  54. // CComboBoxEx
  55.  
  56. #ifdef AFX_CMNCTL_SEG
  57. #pragma code_seg(AFX_CMNCTL_SEG)
  58. #endif
  59.  
  60. BOOL CComboBoxEx::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
  61.     UINT nID)
  62. {
  63.     // initialize common controls
  64.     VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTL_USEREX_REG));
  65.  
  66.     CWnd* pWnd = this;
  67.     return pWnd->Create(WC_COMBOBOXEX, NULL, dwStyle, rect, pParentWnd, nID);
  68. }
  69.  
  70. int CComboBoxEx::DeleteItem(int iIndex)
  71. {
  72.     ASSERT(::IsWindow(m_hWnd));
  73.     return (int) ::SendMessage(m_hWnd, CBEM_DELETEITEM, (WPARAM) iIndex, 0);
  74. }
  75.  
  76. BOOL CComboBoxEx::GetItem(COMBOBOXEXITEM* pCBItem)
  77. {
  78.     ASSERT(::IsWindow(m_hWnd));
  79.     ASSERT(pCBItem != NULL);
  80.     ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM)));
  81.  
  82.     return (int) ::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM) pCBItem);
  83. }
  84.  
  85. int CComboBoxEx::InsertItem(const COMBOBOXEXITEM* pCBItem)
  86. {
  87.     ASSERT(::IsWindow(m_hWnd));
  88.     ASSERT(pCBItem != NULL);
  89.     ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM), FALSE));
  90.  
  91.     return (int) ::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM) pCBItem);
  92. }
  93.  
  94. BOOL CComboBoxEx::SetItem(const COMBOBOXEXITEM* pCBItem)
  95. {
  96.     ASSERT(::IsWindow(m_hWnd));
  97.     ASSERT(pCBItem != NULL);
  98.     ASSERT(AfxIsValidAddress(pCBItem, sizeof(COMBOBOXEXITEM), FALSE));
  99.  
  100.     return (int) ::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM) pCBItem);
  101. }
  102.  
  103. CComboBoxEx::~CComboBoxEx()
  104. {
  105.     DestroyWindow();
  106. }
  107. #endif // _WIN32_WCE
  108.  
  109. #if !defined(_WIN32_WCE_NO_CONTROLBARS)
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CReBarCtrl
  112.  
  113. BOOL CReBarCtrl::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
  114.     UINT nID)
  115. {
  116.     // initialize common controls
  117.     VERIFY(AfxDeferRegisterClass(AFX_WNDCOMMCTL_COOL_REG));
  118.  
  119.     CWnd* pWnd = this;
  120.     return pWnd->Create(REBARCLASSNAME, NULL, dwStyle, rect, pParentWnd, nID);
  121. }
  122.  
  123. CImageList* CReBarCtrl::GetImageList() const
  124. {
  125.     REBARINFO rbi;
  126.     rbi.cbSize = sizeof(rbi);
  127.     rbi.fMask = RBIM_IMAGELIST;
  128.     return GetBarInfo(&rbi) ? CImageList::FromHandle(rbi.himl) : NULL;
  129. }
  130.  
  131. BOOL CReBarCtrl::SetImageList(CImageList* pImageList)
  132. {
  133.     REBARINFO rbi;
  134.     rbi.cbSize = sizeof(rbi);
  135.     rbi.fMask = RBIM_IMAGELIST;
  136.     rbi.himl = (HIMAGELIST)pImageList->GetSafeHandle();
  137.     return SetBarInfo(&rbi);
  138. }
  139.  
  140. #if !defined(_WIN32_WCE)
  141. BOOL CReBarCtrl::GetColorScheme(COLORSCHEME* lpcs)
  142. {
  143.     lpcs->dwSize = sizeof(COLORSCHEME);
  144.     return SendMessage(RB_GETCOLORSCHEME, 0, (LPARAM)lpcs);
  145. }
  146.  
  147. void CReBarCtrl::SetColorScheme(const COLORSCHEME* lpcs)
  148. {
  149.     ((COLORSCHEME*)lpcs)->dwSize = sizeof(COLORSCHEME);
  150.     SendMessage(RB_SETCOLORSCHEME, 0, (LPARAM)lpcs);
  151. }
  152. #endif // _WIN32_WCE
  153. #endif // _WIN32_WCE_NO_CONTROLBARS
  154.  
  155. /////////////////////////////////////////////////////////////////////////////
  156. // CListCtrl
  157.  
  158. BOOL CListCtrl::SetColumnOrderArray(int iCount, LPINT piArray)
  159. {
  160.     ASSERT(::IsWindow(m_hWnd));
  161.     ASSERT(AfxIsValidAddress(piArray, iCount * sizeof(int), FALSE));
  162.  
  163.     return (BOOL) ::SendMessage(m_hWnd, LVM_SETCOLUMNORDERARRAY,
  164.                     (WPARAM) iCount, (LPARAM) piArray);
  165. }
  166.  
  167. BOOL CListCtrl::GetColumnOrderArray(LPINT piArray, int iCount /* = -1 */)
  168. {
  169.     ASSERT(::IsWindow(m_hWnd));
  170.  
  171.     // if -1 was passed, find the count ourselves
  172.  
  173.     int nCount = iCount;
  174.     if (nCount == -1)
  175.     {
  176.         CHeaderCtrl* pCtrl = GetHeaderCtrl();
  177.         ASSERT(pCtrl != NULL);
  178.         if (pCtrl != NULL)
  179.             nCount = pCtrl->GetItemCount();
  180.     }
  181.     if (nCount == -1)
  182.         return FALSE;
  183.  
  184.     ASSERT(AfxIsValidAddress(piArray, nCount * sizeof(int)));
  185.     return (BOOL) ::SendMessage(m_hWnd, LVM_GETCOLUMNORDERARRAY,
  186.         (WPARAM) nCount, (LPARAM) piArray);
  187. }
  188.  
  189. #if !defined(_WIN32_WCE)
  190. BOOL CListCtrl::SetBkImage(HBITMAP hbm, BOOL fTile /*= TRUE*/, int xOffsetPercent /*= 0*/, int yOffsetPercent /*= 0*/)
  191. {
  192.     LVBKIMAGE lv;
  193.  
  194.     lv.ulFlags = LVBKIF_SOURCE_HBITMAP;
  195.     if( fTile )
  196.         lv.ulFlags |= LVBKIF_STYLE_TILE;
  197.     else
  198.         lv.ulFlags |= LVBKIF_STYLE_NORMAL;
  199.     lv.hbm = hbm;
  200.     lv.xOffsetPercent = xOffsetPercent;
  201.     lv.yOffsetPercent = yOffsetPercent;
  202.     return SetBkImage(&lv);
  203. }
  204.  
  205. BOOL CListCtrl::SetBkImage(LPTSTR pszUrl, BOOL fTile /*= TRUE*/, int xOffsetPercent /*= 0*/, int yOffsetPercent /*= 0*/)
  206. {
  207.     LVBKIMAGE lv;
  208.  
  209.     lv.ulFlags = LVBKIF_SOURCE_URL;
  210.     if( fTile )
  211.         lv.ulFlags |= LVBKIF_STYLE_TILE;
  212.     else
  213.         lv.ulFlags |= LVBKIF_STYLE_NORMAL;
  214.     lv.pszImage = pszUrl;
  215.     lv.xOffsetPercent = xOffsetPercent;
  216.     lv.yOffsetPercent = yOffsetPercent;
  217.     return SetBkImage(&lv);
  218. }
  219. #endif // _WIN32_WCE
  220.  
  221. BOOL CListCtrl::GetCheck(int nItem) const
  222. {
  223.     ASSERT(::IsWindow(m_hWnd));
  224.     int nState = (int)::SendMessage(m_hWnd, LVM_GETITEMSTATE, (WPARAM)nItem,
  225.         (LPARAM)LVIS_STATEIMAGEMASK);
  226.     // Return zero if it's not checked, or nonzero otherwise.
  227.     return ((BOOL)(nState >> 12) -1);
  228. }
  229.  
  230. BOOL CListCtrl::SetCheck(int nItem, BOOL fCheck)
  231. {
  232.     ASSERT(::IsWindow(m_hWnd));
  233.     LVITEM lvi;
  234.     lvi.stateMask = LVIS_STATEIMAGEMASK;
  235.  
  236.     /*
  237.     Since state images are one-based, 1 in this macro turns the check off, and
  238.     2 turns it on.
  239.     */
  240.     lvi.state = INDEXTOSTATEIMAGEMASK((fCheck ? 2 : 1));
  241.     return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi);
  242. }
  243.  
  244. /////////////////////////////////////////////////////////////////////////////
  245. // CHeaderCtrl
  246.  
  247. CHeaderCtrl* CListCtrl::GetHeaderCtrl()
  248. {
  249.     ASSERT(::IsWindow(m_hWnd));
  250.  
  251.     HWND hWnd = (HWND) ::SendMessage(m_hWnd, LVM_GETHEADER, 0, 0);
  252.     if (hWnd == NULL)
  253.         return NULL;
  254.     else
  255.         return (CHeaderCtrl*) CHeaderCtrl::FromHandle(hWnd);
  256. }
  257.  
  258.  
  259. BOOL CHeaderCtrl::SetOrderArray(int iCount, LPINT piArray)
  260. {
  261.     ASSERT(::IsWindow(m_hWnd));
  262.     ASSERT(AfxIsValidAddress(piArray, iCount * sizeof(int), FALSE));
  263.  
  264.     return (BOOL) ::SendMessage(m_hWnd, HDM_SETORDERARRAY,
  265.                     (WPARAM) iCount, (LPARAM) piArray);
  266. }
  267.  
  268. BOOL CHeaderCtrl::GetOrderArray(LPINT piArray, int iCount /* = -1 */)
  269. {
  270.     ASSERT(::IsWindow(m_hWnd));
  271.  
  272.     // if -1 was passed, find the count ourselves
  273.  
  274.     int nCount = iCount;
  275.     if (nCount == -1)
  276.     {
  277.         nCount = GetItemCount();
  278.  
  279.         if (nCount == -1)
  280.             return FALSE;
  281.     }
  282.  
  283.     ASSERT(AfxIsValidAddress(piArray, iCount * sizeof(int)));
  284.  
  285.     return (BOOL) ::SendMessage(m_hWnd, HDM_GETORDERARRAY,
  286.         (WPARAM) iCount, (LPARAM) piArray);
  287. }
  288.  
  289. /////////////////////////////////////////////////////////////////////////////
  290. // CProgressCtrl
  291.  
  292. void CProgressCtrl::GetRange(int& nLower, int& nUpper)
  293. {
  294.     ASSERT(::IsWindow(m_hWnd));
  295.     PBRANGE range;
  296.     ::SendMessage(m_hWnd, PBM_GETRANGE, (WPARAM) FALSE, (LPARAM) &range);
  297.     nLower = range.iLow;
  298.     nUpper = range.iHigh;
  299.     return;
  300. }
  301.  
  302.  
  303.  
  304. /////////////////////////////////////////////////////////////////////////////
  305.  
  306. #ifndef _AFX_ENABLE_INLINES
  307.  
  308. static const char _szAfxWinInl[] = "afxcmn2.inl";
  309. #undef THIS_FILE
  310. #define THIS_FILE _szAfxWinInl
  311. #define _AFXCMN_INLINE
  312. #include "afxcmn2.inl"
  313.  
  314. #endif //_AFX_ENABLE_INLINES
  315.  
  316. /////////////////////////////////////////////////////////////////////////////
  317.  
  318. #ifdef AFX_INIT_SEG
  319. #pragma code_seg(AFX_INIT_SEG)
  320. #endif
  321.  
  322. WCE_DEL IMPLEMENT_DYNAMIC(CIPAddressCtrl, CWnd)
  323. #if !defined(_WIN32_WCE_NO_CONTROLBARS)
  324. IMPLEMENT_DYNAMIC(CReBarCtrl, CWnd)
  325. #endif // _WIN32_WCE_NO_CONTROLBARS
  326. /////////////////////////////////////////////////////////////////////////////
  327.  
  328.