10 #define __ATLCTRLS_H__ 15 #error atlctrls.h requires atlapp.h to be included first 19 #error atlctrls.h requires atlwin.h to be included first 25 #elif defined(WIN32_PLATFORM_WFSP) && !defined(_WINUSERM_H_) 33 #endif // _INC_WINDOWSX 105 template <
class TBase>
110 CStaticT(HWND hWnd = NULL) : TBase(hWnd)
119 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
120 DWORD dwStyle = 0, DWORD dwExStyle = 0,
123 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
127 static LPCTSTR GetWndClassName()
133 HICON GetIcon()
const 135 ATLASSERT(::IsWindow(m_hWnd));
136 return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L);
139 HICON SetIcon(HICON hIcon)
141 ATLASSERT(::IsWindow(m_hWnd));
142 return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L);
145 HENHMETAFILE GetEnhMetaFile()
const 147 ATLASSERT(::IsWindow(m_hWnd));
148 return (HENHMETAFILE)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ENHMETAFILE, 0L);
151 HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile)
153 ATLASSERT(::IsWindow(m_hWnd));
154 return (HENHMETAFILE)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hMetaFile);
157 HICON GetIcon()
const 159 ATLASSERT(::IsWindow(m_hWnd));
160 return (HICON)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ICON, 0L);
163 HICON SetIcon(HICON hIcon)
165 ATLASSERT(::IsWindow(m_hWnd));
166 return (HICON)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
172 ATLASSERT(::IsWindow(m_hWnd));
173 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_BITMAP, 0L));
178 ATLASSERT(::IsWindow(m_hWnd));
179 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap));
182 HCURSOR GetCursor()
const 184 ATLASSERT(::IsWindow(m_hWnd));
185 return (HCURSOR)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_CURSOR, 0L);
188 HCURSOR SetCursor(HCURSOR hCursor)
190 ATLASSERT(::IsWindow(m_hWnd));
191 return (HCURSOR)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor);
201 template <
class TBase>
206 CButtonT(HWND hWnd = NULL) : TBase(hWnd)
215 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
216 DWORD dwStyle = 0, DWORD dwExStyle = 0,
219 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
223 static LPCTSTR GetWndClassName()
228 UINT GetState()
const 230 ATLASSERT(::IsWindow(m_hWnd));
231 return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0L);
234 void SetState(BOOL bHighlight)
236 ATLASSERT(::IsWindow(m_hWnd));
237 ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0L);
242 ATLASSERT(::IsWindow(m_hWnd));
243 return (
int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0L);
246 void SetCheck(
int nCheck)
248 ATLASSERT(::IsWindow(m_hWnd));
249 ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0L);
252 UINT GetButtonStyle()
const 254 ATLASSERT(::IsWindow(m_hWnd));
255 return (UINT)::GetWindowLong(m_hWnd, GWL_STYLE) & 0xFFFF;
258 void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE)
260 ATLASSERT(::IsWindow(m_hWnd));
261 ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw);
265 HICON GetIcon()
const 267 ATLASSERT(::IsWindow(m_hWnd));
268 return (HICON)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_ICON, 0L);
271 HICON SetIcon(HICON hIcon)
273 ATLASSERT(::IsWindow(m_hWnd));
274 return (HICON)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
279 ATLASSERT(::IsWindow(m_hWnd));
280 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_BITMAP, 0L));
285 ATLASSERT(::IsWindow(m_hWnd));
286 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap));
288 #endif // !_WIN32_WCE 290 #if (_WIN32_WINNT >= 0x0501) 291 BOOL GetIdealSize(LPSIZE lpSize)
const 293 ATLASSERT(::IsWindow(m_hWnd));
294 return (BOOL)::SendMessage(m_hWnd, BCM_GETIDEALSIZE, 0, (LPARAM)lpSize);
297 BOOL GetImageList(PBUTTON_IMAGELIST pButtonImagelist)
const 299 ATLASSERT(::IsWindow(m_hWnd));
300 return (BOOL)::SendMessage(m_hWnd, BCM_GETIMAGELIST, 0, (LPARAM)pButtonImagelist);
303 BOOL SetImageList(PBUTTON_IMAGELIST pButtonImagelist)
305 ATLASSERT(::IsWindow(m_hWnd));
306 return (BOOL)::SendMessage(m_hWnd, BCM_SETIMAGELIST, 0, (LPARAM)pButtonImagelist);
309 BOOL GetTextMargin(LPRECT lpRect)
const 311 ATLASSERT(::IsWindow(m_hWnd));
312 return (BOOL)::SendMessage(m_hWnd, BCM_GETTEXTMARGIN, 0, (LPARAM)lpRect);
315 BOOL SetTextMargin(LPRECT lpRect)
317 ATLASSERT(::IsWindow(m_hWnd));
318 return (BOOL)::SendMessage(m_hWnd, BCM_SETTEXTMARGIN, 0, (LPARAM)lpRect);
320 #endif // (_WIN32_WINNT >= 0x0501) 322 #if (WINVER >= 0x0600) 323 void SetDontClick(BOOL bDontClick)
325 ATLASSERT(::IsWindow(m_hWnd));
326 ::SendMessage(m_hWnd, BM_SETDONTCLICK, (WPARAM)bDontClick, 0L);
328 #endif // (WINVER >= 0x0600) 330 #if (_WIN32_WINNT >= 0x0600) 331 BOOL SetDropDownState(BOOL bDropDown)
333 ATLASSERT(::IsWindow(m_hWnd));
334 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
335 return (BOOL)::SendMessage(m_hWnd, BCM_SETDROPDOWNSTATE, (WPARAM)bDropDown, 0L);
338 BOOL GetSplitInfo(PBUTTON_SPLITINFO pSplitInfo)
const 340 ATLASSERT(::IsWindow(m_hWnd));
341 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
342 return (BOOL)::SendMessage(m_hWnd, BCM_GETSPLITINFO, 0, (LPARAM)pSplitInfo);
345 BOOL SetSplitInfo(PBUTTON_SPLITINFO pSplitInfo)
347 ATLASSERT(::IsWindow(m_hWnd));
348 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
349 return (BOOL)::SendMessage(m_hWnd, BCM_SETSPLITINFO, 0, (LPARAM)pSplitInfo);
352 int GetNoteLength()
const 354 ATLASSERT(::IsWindow(m_hWnd));
355 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
356 return (
int)::SendMessage(m_hWnd, BCM_GETNOTELENGTH, 0, 0L);
359 BOOL GetNote(LPWSTR lpstrNoteText,
int cchNoteText)
const 361 ATLASSERT(::IsWindow(m_hWnd));
362 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
363 return (BOOL)::SendMessage(m_hWnd, BCM_GETNOTE, cchNoteText, (LPARAM)lpstrNoteText);
366 BOOL SetNote(LPCWSTR lpstrNoteText)
368 ATLASSERT(::IsWindow(m_hWnd));
369 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
370 return (BOOL)::SendMessage(m_hWnd, BCM_SETNOTE, 0, (LPARAM)lpstrNoteText);
373 LRESULT SetElevationRequiredState(BOOL bSet)
375 ATLASSERT(::IsWindow(m_hWnd));
376 return ::SendMessage(m_hWnd, BCM_SETSHIELD, 0, (LPARAM)bSet);
378 #endif // (_WIN32_WINNT >= 0x0600) 383 ATLASSERT(::IsWindow(m_hWnd));
384 ::SendMessage(m_hWnd, BM_CLICK, 0, 0L);
394 template <
class TBase>
399 CListBoxT(HWND hWnd = NULL) : TBase(hWnd)
408 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
409 DWORD dwStyle = 0, DWORD dwExStyle = 0,
412 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
416 static LPCTSTR GetWndClassName()
418 return _T(
"LISTBOX");
424 ATLASSERT(::IsWindow(m_hWnd));
425 return (
int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0L);
429 int SetCount(
int cItems)
431 ATLASSERT(::IsWindow(m_hWnd));
432 ATLASSERT(((GetStyle() & LBS_NODATA) != 0) && ((GetStyle() & LBS_HASSTRINGS) == 0));
433 return (
int)::SendMessage(m_hWnd, LB_SETCOUNT, cItems, 0L);
435 #endif // !_WIN32_WCE 437 int GetHorizontalExtent()
const 439 ATLASSERT(::IsWindow(m_hWnd));
440 return (
int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT, 0, 0L);
443 void SetHorizontalExtent(
int cxExtent)
445 ATLASSERT(::IsWindow(m_hWnd));
446 ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0L);
449 int GetTopIndex()
const 451 ATLASSERT(::IsWindow(m_hWnd));
452 return (
int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0L);
455 int SetTopIndex(
int nIndex)
457 ATLASSERT(::IsWindow(m_hWnd));
458 return (
int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0L);
461 LCID GetLocale()
const 463 ATLASSERT(::IsWindow(m_hWnd));
464 return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0L);
467 LCID SetLocale(LCID nNewLocale)
469 ATLASSERT(::IsWindow(m_hWnd));
470 return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0L);
473 #if (WINVER >= 0x0500) && !defined(_WIN32_WCE) 474 DWORD GetListBoxInfo()
const 476 ATLASSERT(::IsWindow(m_hWnd));
477 #if (_WIN32_WINNT >= 0x0501) 478 return (DWORD)::SendMessage(m_hWnd, LB_GETLISTBOXINFO, 0, 0L);
479 #else // !(_WIN32_WINNT >= 0x0501) 480 return ::GetListBoxInfo(m_hWnd);
481 #endif // !(_WIN32_WINNT >= 0x0501) 483 #endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) 486 int GetCurSel()
const 488 ATLASSERT(::IsWindow(m_hWnd));
489 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
490 return (
int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0L);
493 int SetCurSel(
int nSelect)
495 ATLASSERT(::IsWindow(m_hWnd));
496 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
497 return (
int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0L);
501 int GetSel(
int nIndex)
const 503 ATLASSERT(::IsWindow(m_hWnd));
504 return (
int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0L);
507 int SetSel(
int nIndex, BOOL bSelect = TRUE)
509 ATLASSERT(::IsWindow(m_hWnd));
510 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
511 return (
int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex);
514 int GetSelCount()
const 516 ATLASSERT(::IsWindow(m_hWnd));
517 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
518 return (
int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0L);
521 int GetSelItems(
int nMaxItems, LPINT rgIndex)
const 523 ATLASSERT(::IsWindow(m_hWnd));
524 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
525 return (
int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex);
528 int GetAnchorIndex()
const 530 ATLASSERT(::IsWindow(m_hWnd));
531 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
532 return (
int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0L);
535 void SetAnchorIndex(
int nIndex)
537 ATLASSERT(::IsWindow(m_hWnd));
538 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
539 ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0L);
542 int GetCaretIndex()
const 544 ATLASSERT(::IsWindow(m_hWnd));
545 return (
int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0);
548 int SetCaretIndex(
int nIndex, BOOL bScroll = TRUE)
550 ATLASSERT(::IsWindow(m_hWnd));
551 return (
int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0));
555 DWORD_PTR GetItemData(
int nIndex)
const 557 ATLASSERT(::IsWindow(m_hWnd));
558 return (DWORD_PTR)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0L);
561 int SetItemData(
int nIndex, DWORD_PTR dwItemData)
563 ATLASSERT(::IsWindow(m_hWnd));
564 return (
int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData);
567 void* GetItemDataPtr(
int nIndex)
const 569 ATLASSERT(::IsWindow(m_hWnd));
570 return (
void*)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0L);
573 int SetItemDataPtr(
int nIndex,
void* pData)
575 ATLASSERT(::IsWindow(m_hWnd));
576 return SetItemData(nIndex, (DWORD_PTR)pData);
579 int GetItemRect(
int nIndex, LPRECT lpRect)
const 581 ATLASSERT(::IsWindow(m_hWnd));
582 return (
int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect);
585 int GetText(
int nIndex, LPTSTR lpszBuffer)
const 587 ATLASSERT(::IsWindow(m_hWnd));
588 return (
int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer);
593 BOOL GetTextBSTR(
int nIndex, BSTR& bstrText)
const 596 ATLASSERT(::IsWindow(m_hWnd));
597 ATLASSERT(bstrText == NULL);
599 int nLen = GetTextLen(nIndex);
604 LPTSTR lpstrText = buff.Allocate(nLen + 1);
605 if(lpstrText == NULL)
608 if(GetText(nIndex, lpstrText) == LB_ERR)
611 bstrText = ::SysAllocString(T2OLE(lpstrText));
612 return (bstrText != NULL) ? TRUE : FALSE;
614 #endif // _OLEAUTO_H_ 615 #endif // !_ATL_NO_COM 617 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 618 int GetText(
int nIndex, _CSTRING_NS::CString& strText)
const 620 ATLASSERT(::IsWindow(m_hWnd));
621 int cchLen = GetTextLen(nIndex);
625 LPTSTR lpstr = strText.GetBufferSetLength(cchLen);
628 nRet = GetText(nIndex, lpstr);
629 strText.ReleaseBuffer();
633 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 635 int GetTextLen(
int nIndex)
const 637 ATLASSERT(::IsWindow(m_hWnd));
638 return (
int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0L);
641 int GetItemHeight(
int nIndex)
const 643 ATLASSERT(::IsWindow(m_hWnd));
644 return (
int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L);
647 int SetItemHeight(
int nIndex, UINT cyItemHeight)
649 ATLASSERT(::IsWindow(m_hWnd));
650 return (
int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0));
654 void SetColumnWidth(
int cxWidth)
656 ATLASSERT(::IsWindow(m_hWnd));
657 ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0L);
660 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
662 ATLASSERT(::IsWindow(m_hWnd));
663 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
664 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
669 ATLASSERT(::IsWindow(m_hWnd));
670 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
671 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0L);
674 BOOL SetTabStops(
const int& cxEachStop)
676 ATLASSERT(::IsWindow(m_hWnd));
677 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
678 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
682 int InitStorage(
int nItems, UINT nBytes)
684 ATLASSERT(::IsWindow(m_hWnd));
685 return (
int)::SendMessage(m_hWnd, LB_INITSTORAGE, (WPARAM)nItems, nBytes);
690 ATLASSERT(::IsWindow(m_hWnd));
691 ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0L);
694 UINT ItemFromPoint(POINT pt, BOOL& bOutside)
const 696 ATLASSERT(::IsWindow(m_hWnd));
697 DWORD dw = (DWORD)::SendMessage(m_hWnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y));
698 bOutside = (BOOL)HIWORD(dw);
699 return (UINT)LOWORD(dw);
703 int AddString(LPCTSTR lpszItem)
705 ATLASSERT(::IsWindow(m_hWnd));
706 return (
int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem);
709 int DeleteString(UINT nIndex)
711 ATLASSERT(::IsWindow(m_hWnd));
712 return (
int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0L);
715 int InsertString(
int nIndex, LPCTSTR lpszItem)
717 ATLASSERT(::IsWindow(m_hWnd));
718 return (
int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem);
722 int Dir(UINT attr, LPCTSTR lpszWildCard)
724 ATLASSERT(::IsWindow(m_hWnd));
725 return (
int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard);
728 int AddFile(LPCTSTR lpstrFileName)
730 ATLASSERT(::IsWindow(m_hWnd));
731 return (
int)::SendMessage(m_hWnd, LB_ADDFILE, 0, (LPARAM)lpstrFileName);
733 #endif // !_WIN32_WCE 736 int FindString(
int nStartAfter, LPCTSTR lpszItem)
const 738 ATLASSERT(::IsWindow(m_hWnd));
739 return (
int)::SendMessage(m_hWnd, LB_FINDSTRING, nStartAfter, (LPARAM)lpszItem);
742 int FindStringExact(
int nIndexStart, LPCTSTR lpszFind)
const 744 ATLASSERT(::IsWindow(m_hWnd));
745 return (
int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind);
748 int SelectString(
int nStartAfter, LPCTSTR lpszItem)
750 ATLASSERT(::IsWindow(m_hWnd));
751 return (
int)::SendMessage(m_hWnd, LB_SELECTSTRING, nStartAfter, (LPARAM)lpszItem);
754 int SelItemRange(BOOL bSelect,
int nFirstItem,
int nLastItem)
756 ATLASSERT(::IsWindow(m_hWnd));
757 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
758 ATLASSERT(nFirstItem <= nLastItem);
759 return bSelect ? (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) : (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem);
762 #ifdef WIN32_PLATFORM_WFSP // SmartPhone only messages 763 DWORD GetInputMode(BOOL bCurrentMode = TRUE)
765 return SendMessage(LB_GETINPUTMODE, 0, (LPARAM)bCurrentMode);
768 BOOL SetInputMode(DWORD dwMode)
770 return SendMessage(LB_SETINPUTMODE, 0, (LPARAM)dwMode);
772 #endif // WIN32_PLATFORM_WFSP 781 #ifndef WIN32_PLATFORM_WFSP // No COMBOBOX on SmartPhones 783 template <
class TBase>
797 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
798 DWORD dwStyle = 0, DWORD dwExStyle = 0,
801 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
805 static LPCTSTR GetWndClassName()
807 return _T(
"COMBOBOX");
813 ATLASSERT(::IsWindow(m_hWnd));
814 return (
int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0L);
817 int GetCurSel()
const 819 ATLASSERT(::IsWindow(m_hWnd));
820 return (
int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0L);
823 int SetCurSel(
int nSelect)
825 ATLASSERT(::IsWindow(m_hWnd));
826 return (
int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0L);
829 LCID GetLocale()
const 831 ATLASSERT(::IsWindow(m_hWnd));
832 return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0L);
835 LCID SetLocale(LCID nNewLocale)
837 ATLASSERT(::IsWindow(m_hWnd));
838 return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0L);
841 int GetTopIndex()
const 843 ATLASSERT(::IsWindow(m_hWnd));
844 return (
int)::SendMessage(m_hWnd, CB_GETTOPINDEX, 0, 0L);
847 int SetTopIndex(
int nIndex)
849 ATLASSERT(::IsWindow(m_hWnd));
850 return (
int)::SendMessage(m_hWnd, CB_SETTOPINDEX, nIndex, 0L);
853 UINT GetHorizontalExtent()
const 855 ATLASSERT(::IsWindow(m_hWnd));
856 return (UINT)::SendMessage(m_hWnd, CB_GETHORIZONTALEXTENT, 0, 0L);
859 void SetHorizontalExtent(UINT nExtent)
861 ATLASSERT(::IsWindow(m_hWnd));
862 ::SendMessage(m_hWnd, CB_SETHORIZONTALEXTENT, nExtent, 0L);
865 int GetDroppedWidth()
const 867 ATLASSERT(::IsWindow(m_hWnd));
868 return (
int)::SendMessage(m_hWnd, CB_GETDROPPEDWIDTH, 0, 0L);
871 int SetDroppedWidth(UINT nWidth)
873 ATLASSERT(::IsWindow(m_hWnd));
874 return (
int)::SendMessage(m_hWnd, CB_SETDROPPEDWIDTH, nWidth, 0L);
877 #if ((WINVER >= 0x0500) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 878 BOOL GetComboBoxInfo(PCOMBOBOXINFO pComboBoxInfo)
const 880 ATLASSERT(::IsWindow(m_hWnd));
881 #if ((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 882 return (BOOL)::SendMessage(m_hWnd, CB_GETCOMBOBOXINFO, 0, (LPARAM)pComboBoxInfo);
883 #else // !((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 884 return ::GetComboBoxInfo(m_hWnd, pComboBoxInfo);
885 #endif // !((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 887 #endif // ((WINVER >= 0x0500) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 890 DWORD GetEditSel()
const 892 ATLASSERT(::IsWindow(m_hWnd));
893 return (DWORD)::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0L);
896 BOOL SetEditSel(
int nStartChar,
int nEndChar)
898 ATLASSERT(::IsWindow(m_hWnd));
899 return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar));
903 DWORD_PTR GetItemData(
int nIndex)
const 905 ATLASSERT(::IsWindow(m_hWnd));
906 return (DWORD_PTR)::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0L);
909 int SetItemData(
int nIndex, DWORD_PTR dwItemData)
911 ATLASSERT(::IsWindow(m_hWnd));
912 return (
int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData);
915 void* GetItemDataPtr(
int nIndex)
const 917 ATLASSERT(::IsWindow(m_hWnd));
918 return (
void*)GetItemData(nIndex);
921 int SetItemDataPtr(
int nIndex,
void* pData)
923 ATLASSERT(::IsWindow(m_hWnd));
924 return SetItemData(nIndex, (DWORD_PTR)pData);
927 int GetLBText(
int nIndex, LPTSTR lpszText)
const 929 ATLASSERT(::IsWindow(m_hWnd));
930 return (
int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText);
934 BOOL GetLBTextBSTR(
int nIndex, BSTR& bstrText)
const 937 ATLASSERT(::IsWindow(m_hWnd));
938 ATLASSERT(bstrText == NULL);
940 int nLen = GetLBTextLen(nIndex);
945 LPTSTR lpstrText = buff.Allocate(nLen + 1);
946 if(lpstrText == NULL)
949 if(GetLBText(nIndex, lpstrText) == CB_ERR)
952 bstrText = ::SysAllocString(T2OLE(lpstrText));
953 return (bstrText != NULL) ? TRUE : FALSE;
955 #endif // !_ATL_NO_COM 957 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 958 int GetLBText(
int nIndex, _CSTRING_NS::CString& strText)
const 960 ATLASSERT(::IsWindow(m_hWnd));
961 int cchLen = GetLBTextLen(nIndex);
965 LPTSTR lpstr = strText.GetBufferSetLength(cchLen);
968 nRet = GetLBText(nIndex, lpstr);
969 strText.ReleaseBuffer();
973 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 975 int GetLBTextLen(
int nIndex)
const 977 ATLASSERT(::IsWindow(m_hWnd));
978 return (
int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0L);
981 int GetItemHeight(
int nIndex)
const 983 ATLASSERT(::IsWindow(m_hWnd));
984 return (
int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L);
987 int SetItemHeight(
int nIndex, UINT cyItemHeight)
989 ATLASSERT(::IsWindow(m_hWnd));
990 return (
int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0));
993 BOOL GetExtendedUI()
const 995 ATLASSERT(::IsWindow(m_hWnd));
996 return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L);
999 int SetExtendedUI(BOOL bExtended = TRUE)
1001 ATLASSERT(::IsWindow(m_hWnd));
1002 return (
int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L);
1005 void GetDroppedControlRect(LPRECT lprect)
const 1007 ATLASSERT(::IsWindow(m_hWnd));
1008 ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (LPARAM)lprect);
1011 BOOL GetDroppedState()
const 1013 ATLASSERT(::IsWindow(m_hWnd));
1014 return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L);
1017 #if (_WIN32_WINNT >= 0x0501) 1018 int GetMinVisible()
const 1020 ATLASSERT(::IsWindow(m_hWnd));
1021 return (
int)::SendMessage(m_hWnd, CB_GETMINVISIBLE, 0, 0L);
1024 BOOL SetMinVisible(
int nMinVisible)
1026 ATLASSERT(::IsWindow(m_hWnd));
1027 return (BOOL)::SendMessage(m_hWnd, CB_SETMINVISIBLE, nMinVisible, 0L);
1031 BOOL GetCueBannerText(LPWSTR lpwText,
int cchText)
const 1033 #ifndef CB_GETCUEBANNER 1034 const UINT CB_GETCUEBANNER = (CBM_FIRST + 4);
1036 ATLASSERT(::IsWindow(m_hWnd));
1037 return (BOOL)::SendMessage(m_hWnd, CB_GETCUEBANNER, (WPARAM)lpwText, cchText);
1041 BOOL SetCueBannerText(LPCWSTR lpcwText)
1043 #ifndef CB_SETCUEBANNER 1044 const UINT CB_SETCUEBANNER = (CBM_FIRST + 3);
1046 ATLASSERT(::IsWindow(m_hWnd));
1047 return (BOOL)::SendMessage(m_hWnd, CB_SETCUEBANNER, 0, (LPARAM)lpcwText);
1049 #endif // (_WIN32_WINNT >= 0x0501) 1052 int InitStorage(
int nItems, UINT nBytes)
1054 ATLASSERT(::IsWindow(m_hWnd));
1055 return (
int)::SendMessage(m_hWnd, CB_INITSTORAGE, (WPARAM)nItems, nBytes);
1060 ATLASSERT(::IsWindow(m_hWnd));
1061 ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0L);
1065 BOOL LimitText(
int nMaxChars)
1067 ATLASSERT(::IsWindow(m_hWnd));
1068 return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0L);
1072 void ShowDropDown(BOOL bShowIt = TRUE)
1074 ATLASSERT(::IsWindow(m_hWnd));
1075 ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0L);
1079 int AddString(LPCTSTR lpszString)
1081 ATLASSERT(::IsWindow(m_hWnd));
1082 return (
int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString);
1085 int DeleteString(UINT nIndex)
1087 ATLASSERT(::IsWindow(m_hWnd));
1088 return (
int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0L);
1091 int InsertString(
int nIndex, LPCTSTR lpszString)
1093 ATLASSERT(::IsWindow(m_hWnd));
1094 return (
int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString);
1098 int Dir(UINT attr, LPCTSTR lpszWildCard)
1100 ATLASSERT(::IsWindow(m_hWnd));
1101 return (
int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard);
1103 #endif // !_WIN32_WCE 1106 int FindString(
int nStartAfter, LPCTSTR lpszString)
const 1108 ATLASSERT(::IsWindow(m_hWnd));
1109 return (
int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter, (LPARAM)lpszString);
1112 int FindStringExact(
int nIndexStart, LPCTSTR lpszFind)
const 1114 ATLASSERT(::IsWindow(m_hWnd));
1115 return (
int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind);
1118 int SelectString(
int nStartAfter, LPCTSTR lpszString)
1120 ATLASSERT(::IsWindow(m_hWnd));
1121 return (
int)::SendMessage(m_hWnd, CB_SELECTSTRING, nStartAfter, (LPARAM)lpszString);
1127 ATLASSERT(::IsWindow(m_hWnd));
1128 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
1133 ATLASSERT(::IsWindow(m_hWnd));
1134 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
1139 ATLASSERT(::IsWindow(m_hWnd));
1140 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
1145 ATLASSERT(::IsWindow(m_hWnd));
1146 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
1152 #endif // !WIN32_PLATFORM_WFSP 1157 template <
class TBase>
1162 CEditT(HWND hWnd = NULL) : TBase(hWnd)
1171 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
1172 DWORD dwStyle = 0, DWORD dwExStyle = 0,
1175 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
1179 static LPCTSTR GetWndClassName()
1184 BOOL CanUndo()
const 1186 ATLASSERT(::IsWindow(m_hWnd));
1187 return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0L);
1190 int GetLineCount()
const 1192 ATLASSERT(::IsWindow(m_hWnd));
1193 return (
int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0L);
1196 BOOL GetModify()
const 1198 ATLASSERT(::IsWindow(m_hWnd));
1199 return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0L);
1202 void SetModify(BOOL bModified = TRUE)
1204 ATLASSERT(::IsWindow(m_hWnd));
1205 ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0L);
1208 void GetRect(LPRECT lpRect)
const 1210 ATLASSERT(::IsWindow(m_hWnd));
1211 ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect);
1214 DWORD GetSel()
const 1216 ATLASSERT(::IsWindow(m_hWnd));
1217 return (DWORD)::SendMessage(m_hWnd, EM_GETSEL, 0, 0L);
1220 void GetSel(
int& nStartChar,
int& nEndChar)
const 1222 ATLASSERT(::IsWindow(m_hWnd));
1223 ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar, (LPARAM)&nEndChar);
1227 HLOCAL GetHandle()
const 1229 ATLASSERT(::IsWindow(m_hWnd));
1230 return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0L);
1233 void SetHandle(HLOCAL hBuffer)
1235 ATLASSERT(::IsWindow(m_hWnd));
1236 ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0L);
1238 #endif // !_WIN32_WCE 1240 DWORD GetMargins()
const 1242 ATLASSERT(::IsWindow(m_hWnd));
1243 return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0L);
1246 void GetMargins(UINT& nLeft, UINT& nRight)
const 1248 ATLASSERT(::IsWindow(m_hWnd));
1249 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0L);
1250 nLeft = LOWORD(dwRet);
1251 nRight = HIWORD(dwRet);
1254 void SetMargins(UINT nLeft, UINT nRight, WORD wFlags = EC_LEFTMARGIN | EC_RIGHTMARGIN)
1256 ATLASSERT(::IsWindow(m_hWnd));
1257 ::SendMessage(m_hWnd, EM_SETMARGINS, wFlags, MAKELONG(nLeft, nRight));
1260 UINT GetLimitText()
const 1262 ATLASSERT(::IsWindow(m_hWnd));
1263 return (UINT)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L);
1266 void SetLimitText(UINT nMax)
1268 ATLASSERT(::IsWindow(m_hWnd));
1269 ::SendMessage(m_hWnd, EM_SETLIMITTEXT, nMax, 0L);
1272 POINT PosFromChar(UINT nChar)
const 1274 ATLASSERT(::IsWindow(m_hWnd));
1275 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_POSFROMCHAR, nChar, 0);
1276 POINT point = { GET_X_LPARAM(dwRet), GET_Y_LPARAM(dwRet) };
1280 int CharFromPos(POINT pt,
int* pLine = NULL)
const 1282 ATLASSERT(::IsWindow(m_hWnd));
1283 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y));
1285 *pLine = (int)(
short)HIWORD(dwRet);
1286 return (
int)(short)LOWORD(dwRet);
1290 int GetLine(
int nIndex, LPTSTR lpszBuffer)
const 1292 ATLASSERT(::IsWindow(m_hWnd));
1293 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
1296 int GetLine(
int nIndex, LPTSTR lpszBuffer,
int nMaxLength)
const 1298 ATLASSERT(::IsWindow(m_hWnd));
1299 *(LPWORD)lpszBuffer = (WORD)nMaxLength;
1300 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
1303 TCHAR GetPasswordChar()
const 1305 ATLASSERT(::IsWindow(m_hWnd));
1306 return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L);
1309 void SetPasswordChar(TCHAR ch)
1311 ATLASSERT(::IsWindow(m_hWnd));
1312 ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0L);
1316 EDITWORDBREAKPROC GetWordBreakProc()
const 1318 ATLASSERT(::IsWindow(m_hWnd));
1319 return (EDITWORDBREAKPROC)::SendMessage(m_hWnd, EM_GETWORDBREAKPROC, 0, 0L);
1322 void SetWordBreakProc(EDITWORDBREAKPROC ewbprc)
1324 ATLASSERT(::IsWindow(m_hWnd));
1325 ::SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, (LPARAM)ewbprc);
1327 #endif // !_WIN32_WCE 1329 int GetFirstVisibleLine()
const 1331 ATLASSERT(::IsWindow(m_hWnd));
1332 return (
int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L);
1336 int GetThumb()
const 1338 ATLASSERT(::IsWindow(m_hWnd));
1339 ATLASSERT((GetStyle() & ES_MULTILINE) != 0);
1340 return (
int)::SendMessage(m_hWnd, EM_GETTHUMB, 0, 0L);
1342 #endif // !_WIN32_WCE 1344 BOOL SetReadOnly(BOOL bReadOnly = TRUE)
1346 ATLASSERT(::IsWindow(m_hWnd));
1347 return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L);
1350 #if (WINVER >= 0x0500) && !defined(_WIN32_WCE) 1351 UINT GetImeStatus(UINT uStatus)
const 1353 ATLASSERT(::IsWindow(m_hWnd));
1354 return (UINT)::SendMessage(m_hWnd, EM_GETIMESTATUS, uStatus, 0L);
1357 UINT SetImeStatus(UINT uStatus, UINT uData)
1359 ATLASSERT(::IsWindow(m_hWnd));
1360 return (UINT)::SendMessage(m_hWnd, EM_SETIMESTATUS, uStatus, uData);
1362 #endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) 1364 #if (_WIN32_WINNT >= 0x0501) 1365 BOOL GetCueBannerText(LPCWSTR lpstrText,
int cchText)
const 1367 ATLASSERT(::IsWindow(m_hWnd));
1368 return (BOOL)::SendMessage(m_hWnd, EM_GETCUEBANNER, (WPARAM)lpstrText, cchText);
1372 BOOL SetCueBannerText(LPCWSTR lpstrText, BOOL bKeepWithFocus = FALSE)
1374 ATLASSERT(::IsWindow(m_hWnd));
1375 return (BOOL)::SendMessage(m_hWnd, EM_SETCUEBANNER, (WPARAM)bKeepWithFocus, (LPARAM)(lpstrText));
1377 #endif // (_WIN32_WINNT >= 0x0501) 1380 void EmptyUndoBuffer()
1382 ATLASSERT(::IsWindow(m_hWnd));
1383 ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0L);
1386 BOOL FmtLines(BOOL bAddEOL)
1388 ATLASSERT(::IsWindow(m_hWnd));
1389 return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0L);
1392 void LimitText(
int nChars = 0)
1394 ATLASSERT(::IsWindow(m_hWnd));
1395 ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0L);
1398 int LineFromChar(
int nIndex = -1)
const 1400 ATLASSERT(::IsWindow(m_hWnd));
1401 return (
int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0L);
1404 int LineIndex(
int nLine = -1)
const 1406 ATLASSERT(::IsWindow(m_hWnd));
1407 return (
int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0L);
1410 int LineLength(
int nLine = -1)
const 1412 ATLASSERT(::IsWindow(m_hWnd));
1413 return (
int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0L);
1416 void LineScroll(
int nLines,
int nChars = 0)
1418 ATLASSERT(::IsWindow(m_hWnd));
1419 ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines);
1422 void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE)
1424 ATLASSERT(::IsWindow(m_hWnd));
1425 ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText);
1428 void SetRect(LPCRECT lpRect)
1430 ATLASSERT(::IsWindow(m_hWnd));
1431 ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect);
1434 void SetRectNP(LPCRECT lpRect)
1436 ATLASSERT(::IsWindow(m_hWnd));
1437 ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect);
1440 void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE)
1442 ATLASSERT(::IsWindow(m_hWnd));
1443 ::SendMessage(m_hWnd, EM_SETSEL, LOWORD(dwSelection), HIWORD(dwSelection));
1445 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1448 void SetSel(
int nStartChar,
int nEndChar, BOOL bNoScroll = FALSE)
1450 ATLASSERT(::IsWindow(m_hWnd));
1451 ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
1453 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1456 void SetSelAll(BOOL bNoScroll = FALSE)
1458 SetSel(0, -1, bNoScroll);
1461 void SetSelNone(BOOL bNoScroll = FALSE)
1463 SetSel(-1, 0, bNoScroll);
1466 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
1468 ATLASSERT(::IsWindow(m_hWnd));
1469 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
1474 ATLASSERT(::IsWindow(m_hWnd));
1475 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0L);
1478 BOOL SetTabStops(
const int& cxEachStop)
1480 ATLASSERT(::IsWindow(m_hWnd));
1481 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
1486 ATLASSERT(::IsWindow(m_hWnd));
1487 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1490 int Scroll(
int nScrollAction)
1492 ATLASSERT(::IsWindow(m_hWnd));
1493 ATLASSERT((GetStyle() & ES_MULTILINE) != 0);
1494 LRESULT lRet = ::SendMessage(m_hWnd, EM_SCROLL, nScrollAction, 0L);
1495 if(!(BOOL)HIWORD(lRet))
1497 return (
int)(short)LOWORD(lRet);
1501 void InsertText(
int nInsertAfterChar, LPCTSTR lpstrText, BOOL bNoScroll = FALSE, BOOL bCanUndo = FALSE)
1503 SetSel(nInsertAfterChar, nInsertAfterChar, bNoScroll);
1504 ReplaceSel(lpstrText, bCanUndo);
1507 void AppendText(LPCTSTR lpstrText, BOOL bNoScroll = FALSE, BOOL bCanUndo = FALSE)
1509 InsertText(GetWindowTextLength(), lpstrText, bNoScroll, bCanUndo);
1512 #if (_WIN32_WINNT >= 0x0501) 1513 BOOL ShowBalloonTip(PEDITBALLOONTIP pEditBaloonTip)
1515 ATLASSERT(::IsWindow(m_hWnd));
1516 return (BOOL)::SendMessage(m_hWnd, EM_SHOWBALLOONTIP, 0, (LPARAM)pEditBaloonTip);
1519 BOOL HideBalloonTip()
1521 ATLASSERT(::IsWindow(m_hWnd));
1522 return (BOOL)::SendMessage(m_hWnd, EM_HIDEBALLOONTIP, 0, 0L);
1524 #endif // (_WIN32_WINNT >= 0x0501) 1526 #if (_WIN32_WINNT >= 0x0600) 1527 DWORD GetHilite()
const 1529 ATLASSERT(::IsWindow(m_hWnd));
1530 return (DWORD)::SendMessage(m_hWnd, EM_GETHILITE, 0, 0L);
1533 void GetHilite(
int& nStartChar,
int& nEndChar)
const 1535 ATLASSERT(::IsWindow(m_hWnd));
1536 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_GETHILITE, 0, 0L);
1537 nStartChar = (int)(
short)LOWORD(dwRet);
1538 nEndChar = (int)(
short)HIWORD(dwRet);
1541 void SetHilite(
int nStartChar,
int nEndChar)
1543 ATLASSERT(::IsWindow(m_hWnd));
1544 ::SendMessage(m_hWnd, EM_SETHILITE, nStartChar, nEndChar);
1546 #endif // (_WIN32_WINNT >= 0x0600) 1551 ATLASSERT(::IsWindow(m_hWnd));
1552 return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0L);
1557 ATLASSERT(::IsWindow(m_hWnd));
1558 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
1563 ATLASSERT(::IsWindow(m_hWnd));
1564 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
1569 ATLASSERT(::IsWindow(m_hWnd));
1570 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
1575 ATLASSERT(::IsWindow(m_hWnd));
1576 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
1579 #ifdef WIN32_PLATFORM_WFSP // SmartPhone only messages 1580 DWORD GetExtendedStyle()
1582 return SendMessage(EM_GETEXTENDEDSTYLE);
1585 DWORD SetExtendedStyle(DWORD dwMask, DWORD dwExStyle)
1587 return SendMessage(EM_SETEXTENDEDSTYLE, (WPARAM)dwMask, (LPARAM)dwExStyle);
1590 DWORD GetInputMode(BOOL bCurrentMode = TRUE)
1592 return SendMessage(EM_GETINPUTMODE, 0, (LPARAM)bCurrentMode);
1595 BOOL SetInputMode(DWORD dwMode)
1597 return SendMessage(EM_SETINPUTMODE, 0, (LPARAM)dwMode);
1600 BOOL SetSymbols(LPCTSTR szSymbols)
1602 return SendMessage(EM_SETSYMBOLS, 0, (LPARAM)szSymbols);
1607 return SendMessage(EM_SETSYMBOLS);
1609 #endif // WIN32_PLATFORM_WFSP 1637 COMMAND_ID_HANDLER(ID_EDIT_CLEAR, OnEditClear)
1638 COMMAND_ID_HANDLER(ID_EDIT_CLEAR_ALL, OnEditClearAll)
1639 COMMAND_ID_HANDLER(ID_EDIT_COPY, OnEditCopy)
1640 COMMAND_ID_HANDLER(ID_EDIT_CUT, OnEditCut)
1641 COMMAND_ID_HANDLER(ID_EDIT_PASTE, OnEditPaste)
1642 COMMAND_ID_HANDLER(ID_EDIT_SELECT_ALL, OnEditSelectAll)
1643 COMMAND_ID_HANDLER(ID_EDIT_UNDO, OnEditUndo)
1646 LRESULT OnEditClear(WORD , WORD , HWND , BOOL& )
1648 T* pT =
static_cast<T*
>(
this);
1653 LRESULT OnEditClearAll(WORD , WORD , HWND , BOOL& )
1655 T* pT =
static_cast<T*
>(
this);
1661 LRESULT OnEditCopy(WORD , WORD , HWND , BOOL& )
1663 T* pT =
static_cast<T*
>(
this);
1668 LRESULT OnEditCut(WORD , WORD , HWND , BOOL& )
1670 T* pT =
static_cast<T*
>(
this);
1675 LRESULT OnEditPaste(WORD , WORD , HWND , BOOL& )
1677 T* pT =
static_cast<T*
>(
this);
1682 LRESULT OnEditSelectAll(WORD , WORD , HWND , BOOL& )
1684 T* pT =
static_cast<T*
>(
this);
1689 LRESULT OnEditUndo(WORD , WORD , HWND , BOOL& )
1691 T* pT =
static_cast<T*
>(
this);
1698 {
return HasSelection(); }
1700 BOOL CanCopy()
const 1701 {
return HasSelection(); }
1703 BOOL CanClear()
const 1704 {
return HasSelection(); }
1706 BOOL CanSelectAll()
const 1707 {
return HasText(); }
1709 BOOL CanFind()
const 1710 {
return HasText(); }
1712 BOOL CanRepeat()
const 1713 {
return HasText(); }
1715 BOOL CanReplace()
const 1716 {
return HasText(); }
1718 BOOL CanClearAll()
const 1719 {
return HasText(); }
1722 BOOL HasSelection()
const 1724 const T* pT =
static_cast<const T*
>(
this);
1725 int nMin = 0, nMax = 0;
1726 ::SendMessage(pT->m_hWnd, EM_GETSEL, (WPARAM)&nMin, (LPARAM)&nMax);
1727 return (nMin != nMax);
1730 BOOL HasText()
const 1732 const T* pT =
static_cast<const T*
>(
this);
1733 return (pT->GetWindowTextLength() > 0);
1741 template <
class TBase>
1755 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
1756 DWORD dwStyle = 0, DWORD dwExStyle = 0,
1759 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
1763 static LPCTSTR GetWndClassName()
1765 return _T(
"SCROLLBAR");
1769 int GetScrollPos()
const 1771 ATLASSERT(::IsWindow(m_hWnd));
1772 return ::GetScrollPos(m_hWnd, SB_CTL);
1774 #endif // !_WIN32_WCE 1776 int SetScrollPos(
int nPos, BOOL bRedraw = TRUE)
1778 ATLASSERT(::IsWindow(m_hWnd));
1779 return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw);
1783 void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos)
const 1785 ATLASSERT(::IsWindow(m_hWnd));
1786 ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos);
1788 #endif // !_WIN32_WCE 1790 void SetScrollRange(
int nMinPos,
int nMaxPos, BOOL bRedraw = TRUE)
1792 ATLASSERT(::IsWindow(m_hWnd));
1793 ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw);
1796 BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo)
const 1798 ATLASSERT(::IsWindow(m_hWnd));
1799 return ::GetScrollInfo(m_hWnd, SB_CTL, lpScrollInfo);
1802 int SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
1804 ATLASSERT(::IsWindow(m_hWnd));
1805 return ::SetScrollInfo(m_hWnd, SB_CTL, lpScrollInfo, bRedraw);
1809 int GetScrollLimit()
const 1811 SCROLLINFO
info = {
sizeof(SCROLLINFO), SIF_RANGE | SIF_PAGE };
1812 ::GetScrollInfo(m_hWnd, SB_CTL, &info);
1814 info.nMax -= info.nPage - 1;
1819 #if (WINVER >= 0x0500) 1820 BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollBarInfo)
const 1822 ATLASSERT(::IsWindow(m_hWnd));
1823 #if (_WIN32_WINNT >= 0x0501) 1824 return (BOOL)::SendMessage(m_hWnd, SBM_GETSCROLLBARINFO, 0, (LPARAM)pScrollBarInfo);
1825 #else // !(_WIN32_WINNT >= 0x0501) 1826 return ::GetScrollBarInfo(m_hWnd, OBJID_CLIENT, pScrollBarInfo);
1827 #endif // !(_WIN32_WINNT >= 0x0501) 1829 #endif // (WINVER >= 0x0500) 1832 void ShowScrollBar(BOOL bShow = TRUE)
1834 ATLASSERT(::IsWindow(m_hWnd));
1835 ::ShowScrollBar(m_hWnd, SB_CTL, bShow);
1838 BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH)
1840 ATLASSERT(::IsWindow(m_hWnd));
1841 return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags);
1843 #endif // !_WIN32_WCE 1860 template <
bool t_bManaged>
1865 HIMAGELIST m_hImageList;
1868 CImageListT(HIMAGELIST hImageList = NULL) : m_hImageList(hImageList)
1873 if(t_bManaged && (m_hImageList != NULL))
1883 void Attach(HIMAGELIST hImageList)
1885 if(t_bManaged && (m_hImageList != NULL) && (m_hImageList != hImageList))
1886 ImageList_Destroy(m_hImageList);
1887 m_hImageList = hImageList;
1892 HIMAGELIST hImageList = m_hImageList;
1893 m_hImageList = NULL;
1897 operator HIMAGELIST()
const {
return m_hImageList; }
1899 bool IsNull()
const {
return (m_hImageList == NULL); }
1902 int GetImageCount()
const 1904 ATLASSERT(m_hImageList != NULL);
1905 return ImageList_GetImageCount(m_hImageList);
1908 COLORREF GetBkColor()
const 1910 ATLASSERT(m_hImageList != NULL);
1911 return ImageList_GetBkColor(m_hImageList);
1914 COLORREF SetBkColor(COLORREF cr)
1916 ATLASSERT(m_hImageList != NULL);
1917 return ImageList_SetBkColor(m_hImageList, cr);
1920 BOOL GetImageInfo(
int nImage, IMAGEINFO* pImageInfo)
const 1922 ATLASSERT(m_hImageList != NULL);
1923 return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo);
1926 HICON GetIcon(
int nIndex, UINT uFlags = ILD_NORMAL)
const 1928 ATLASSERT(m_hImageList != NULL);
1929 return ImageList_GetIcon(m_hImageList, nIndex, uFlags);
1932 BOOL GetIconSize(
int& cx,
int& cy)
const 1934 ATLASSERT(m_hImageList != NULL);
1935 return ImageList_GetIconSize(m_hImageList, &cx, &cy);
1938 BOOL GetIconSize(SIZE& size)
const 1940 ATLASSERT(m_hImageList != NULL);
1941 return ImageList_GetIconSize(m_hImageList, (
int*)&size.cx, (
int*)&size.cy);
1944 BOOL SetIconSize(
int cx,
int cy)
1946 ATLASSERT(m_hImageList != NULL);
1947 return ImageList_SetIconSize(m_hImageList, cx, cy);
1950 BOOL SetIconSize(SIZE size)
1952 ATLASSERT(m_hImageList != NULL);
1953 return ImageList_SetIconSize(m_hImageList, size.cx, size.cy);
1956 BOOL SetImageCount(UINT uNewCount)
1958 ATLASSERT(m_hImageList != NULL);
1959 return ImageList_SetImageCount(m_hImageList, uNewCount);
1962 BOOL SetOverlayImage(
int nImage,
int nOverlay)
1964 ATLASSERT(m_hImageList != NULL);
1965 return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay);
1969 BOOL Create(
int cx,
int cy, UINT nFlags,
int nInitial,
int nGrow)
1971 ATLASSERT(m_hImageList == NULL);
1972 m_hImageList = ImageList_Create(cx, cy, nFlags, nInitial, nGrow);
1973 return (m_hImageList != NULL) ? TRUE : FALSE;
1978 ATLASSERT(m_hImageList == NULL);
1979 m_hImageList = ImageList_LoadBitmap(ModuleHelper::GetResourceInstance(), bitmap.m_lpstr, cx, nGrow, crMask);
1980 return (m_hImageList != NULL) ? TRUE : FALSE;
1983 BOOL CreateFromImage(
ATL::_U_STRINGorID image,
int cx,
int nGrow, COLORREF crMask, UINT uType, UINT uFlags = LR_DEFAULTCOLOR | LR_DEFAULTSIZE)
1985 ATLASSERT(m_hImageList == NULL);
1986 m_hImageList = ImageList_LoadImage(ModuleHelper::GetResourceInstance(), image.m_lpstr, cx, nGrow, crMask, uType, uFlags);
1987 return (m_hImageList != NULL) ? TRUE : FALSE;
1990 BOOL Merge(HIMAGELIST hImageList1,
int nImage1, HIMAGELIST hImageList2,
int nImage2,
int dx,
int dy)
1992 ATLASSERT(m_hImageList == NULL);
1993 m_hImageList = ImageList_Merge(hImageList1, nImage1, hImageList2, nImage2, dx, dy);
1994 return (m_hImageList != NULL) ? TRUE : FALSE;
1998 #ifdef __IStream_INTERFACE_DEFINED__ 1999 BOOL CreateFromStream(LPSTREAM lpStream)
2001 ATLASSERT(m_hImageList == NULL);
2002 m_hImageList = ImageList_Read(lpStream);
2003 return (m_hImageList != NULL) ? TRUE : FALSE;
2005 #endif // __IStream_INTERFACE_DEFINED__ 2006 #endif // !_WIN32_WCE 2010 if (m_hImageList == NULL)
2012 BOOL bRet = ImageList_Destroy(m_hImageList);
2014 m_hImageList = NULL;
2018 int Add(HBITMAP hBitmap, HBITMAP hBitmapMask = NULL)
2020 ATLASSERT(m_hImageList != NULL);
2021 return ImageList_Add(m_hImageList, hBitmap, hBitmapMask);
2024 int Add(HBITMAP hBitmap, COLORREF crMask)
2026 ATLASSERT(m_hImageList != NULL);
2027 return ImageList_AddMasked(m_hImageList, hBitmap, crMask);
2030 BOOL Remove(
int nImage)
2032 ATLASSERT(m_hImageList != NULL);
2033 return ImageList_Remove(m_hImageList, nImage);
2038 ATLASSERT(m_hImageList != NULL);
2039 return ImageList_RemoveAll(m_hImageList);
2042 BOOL Replace(
int nImage, HBITMAP hBitmap, HBITMAP hBitmapMask)
2044 ATLASSERT(m_hImageList != NULL);
2045 return ImageList_Replace(m_hImageList, nImage, hBitmap, hBitmapMask);
2048 int AddIcon(HICON hIcon)
2050 ATLASSERT(m_hImageList != NULL);
2051 return ImageList_AddIcon(m_hImageList, hIcon);
2054 int ReplaceIcon(
int nImage, HICON hIcon)
2056 ATLASSERT(m_hImageList != NULL);
2057 return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon);
2060 HICON ExtractIcon(
int nImage)
2062 ATLASSERT(m_hImageList != NULL);
2063 return ImageList_ExtractIcon(NULL, m_hImageList, nImage);
2066 BOOL Draw(HDC hDC,
int nImage,
int x,
int y, UINT nStyle)
2068 ATLASSERT(m_hImageList != NULL);
2069 ATLASSERT(hDC != NULL);
2070 return ImageList_Draw(m_hImageList, nImage, hDC, x, y, nStyle);
2073 BOOL Draw(HDC hDC,
int nImage, POINT pt, UINT nStyle)
2075 ATLASSERT(m_hImageList != NULL);
2076 ATLASSERT(hDC != NULL);
2077 return ImageList_Draw(m_hImageList, nImage, hDC, pt.x, pt.y, nStyle);
2080 BOOL DrawEx(
int nImage, HDC hDC,
int x,
int y,
int dx,
int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
2082 ATLASSERT(m_hImageList != NULL);
2083 ATLASSERT(hDC != NULL);
2084 return ImageList_DrawEx(m_hImageList, nImage, hDC, x, y, dx, dy, rgbBk, rgbFg, fStyle);
2087 BOOL DrawEx(
int nImage, HDC hDC, RECT& rect, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
2089 ATLASSERT(m_hImageList != NULL);
2090 ATLASSERT(hDC != NULL);
2091 return ImageList_DrawEx(m_hImageList, nImage, hDC, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, rgbBk, rgbFg, fStyle);
2094 static BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp)
2096 return ImageList_DrawIndirect(pimldp);
2099 BOOL Copy(
int nSrc,
int nDst, UINT uFlags = ILCF_MOVE)
2101 ATLASSERT(m_hImageList != NULL);
2102 return ImageList_Copy(m_hImageList, nDst, m_hImageList, nSrc, uFlags);
2105 #ifdef __IStream_INTERFACE_DEFINED__ 2107 static HIMAGELIST Read(LPSTREAM lpStream)
2109 return ImageList_Read(lpStream);
2112 BOOL Write(LPSTREAM lpStream)
2114 ATLASSERT(m_hImageList != NULL);
2115 return ImageList_Write(m_hImageList, lpStream);
2117 #endif // !_WIN32_WCE 2119 #if (_WIN32_WINNT >= 0x0501) 2120 static HRESULT ReadEx(DWORD dwFlags, LPSTREAM lpStream, REFIID riid, PVOID* ppv)
2122 return ImageList_ReadEx(dwFlags, lpStream, riid, ppv);
2125 HRESULT WriteEx(DWORD dwFlags, LPSTREAM lpStream)
2127 ATLASSERT(m_hImageList != NULL);
2128 return ImageList_WriteEx(m_hImageList, dwFlags, lpStream);
2130 #endif // (_WIN32_WINNT >= 0x0501) 2131 #endif // __IStream_INTERFACE_DEFINED__ 2134 BOOL BeginDrag(
int nImage, POINT ptHotSpot)
2136 ATLASSERT(m_hImageList != NULL);
2137 return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y);
2140 BOOL BeginDrag(
int nImage,
int xHotSpot,
int yHotSpot)
2142 ATLASSERT(m_hImageList != NULL);
2143 return ImageList_BeginDrag(m_hImageList, nImage, xHotSpot, yHotSpot);
2146 static void EndDrag()
2148 ImageList_EndDrag();
2151 static BOOL DragMove(POINT pt)
2153 return ImageList_DragMove(pt.x, pt.y);
2156 static BOOL DragMove(
int x,
int y)
2158 return ImageList_DragMove(x, y);
2161 BOOL SetDragCursorImage(
int nDrag, POINT ptHotSpot)
2163 ATLASSERT(m_hImageList != NULL);
2164 return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y);
2167 BOOL SetDragCursorImage(
int nDrag,
int xHotSpot,
int yHotSpot)
2169 ATLASSERT(m_hImageList != NULL);
2170 return ImageList_SetDragCursorImage(m_hImageList, nDrag, xHotSpot, yHotSpot);
2173 static BOOL DragShowNolock(BOOL bShow = TRUE)
2175 return ImageList_DragShowNolock(bShow);
2178 static CImageList GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
2180 return CImageList(ImageList_GetDragImage(lpPoint, lpPointHotSpot));
2183 static BOOL DragEnter(HWND hWnd, POINT point)
2185 return ImageList_DragEnter(hWnd, point.x, point.y);
2188 static BOOL DragEnter(HWND hWnd,
int x,
int y)
2190 return ImageList_DragEnter(hWnd, x, y);
2193 static BOOL DragLeave(HWND hWnd)
2195 return ImageList_DragLeave(hWnd);
2198 #if (_WIN32_IE >= 0x0400) 2199 CImageList Duplicate()
const 2201 ATLASSERT(m_hImageList != NULL);
2202 return CImageList(ImageList_Duplicate(m_hImageList));
2205 static CImageList Duplicate(HIMAGELIST hImageList)
2207 ATLASSERT(hImageList != NULL);
2208 return CImageList(ImageList_Duplicate(hImageList));
2210 #endif // (_WIN32_IE >= 0x0400) 2222 CToolInfo(UINT nFlags, HWND hWnd, UINT_PTR nIDTool = 0, LPRECT lpRect = NULL, LPTSTR lpstrText = LPSTR_TEXTCALLBACK, LPARAM lUserParam = NULL)
2224 Init(nFlags, hWnd, nIDTool, lpRect, lpstrText, lUserParam);
2227 operator LPTOOLINFO() {
return this; }
2229 operator LPARAM() {
return (LPARAM)
this; }
2231 void Init(UINT nFlags, HWND hWnd, UINT_PTR nIDTool = 0, LPRECT lpRect = NULL, LPTSTR lpstrText = LPSTR_TEXTCALLBACK, LPARAM lUserParam = NULL)
2233 ATLASSERT(::IsWindow(hWnd));
2234 memset(
this, 0,
sizeof(TOOLINFO));
2235 cbSize = RunTimeHelper::SizeOf_TOOLINFO();
2239 hwnd = ::GetParent(hWnd);
2240 uFlags |= TTF_IDISHWND;
2241 uId = (UINT_PTR)hWnd;
2250 hinst = ModuleHelper::GetResourceInstance();
2251 lpszText = lpstrText;
2252 lParam = lUserParam;
2256 template <
class TBase>
2270 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2271 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2274 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2278 static LPCTSTR GetWndClassName()
2280 return TOOLTIPS_CLASS;
2283 void GetText(LPTOOLINFO lpToolInfo)
const 2285 ATLASSERT(::IsWindow(m_hWnd));
2286 ::SendMessage(m_hWnd, TTM_GETTEXT, 0, (LPARAM)&lpToolInfo);
2289 void GetText(LPTSTR lpstrText, HWND hWnd, UINT_PTR nIDTool = 0)
const 2291 ATLASSERT(::IsWindow(m_hWnd));
2292 ATLASSERT(hWnd != NULL);
2293 CToolInfo ti(0, hWnd, nIDTool, NULL, lpstrText);
2294 ::SendMessage(m_hWnd, TTM_GETTEXT, 0, ti);
2297 BOOL GetToolInfo(LPTOOLINFO lpToolInfo)
const 2299 ATLASSERT(::IsWindow(m_hWnd));
2300 return (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, (LPARAM)lpToolInfo);
2303 BOOL GetToolInfo(HWND hWnd, UINT_PTR nIDTool, UINT* puFlags, LPRECT lpRect, LPTSTR lpstrText)
const 2305 ATLASSERT(::IsWindow(m_hWnd));
2306 ATLASSERT(hWnd != NULL);
2307 ATLASSERT(puFlags != NULL);
2308 ATLASSERT(lpRect != NULL);
2309 CToolInfo ti(0, hWnd, nIDTool, NULL, lpstrText);
2310 BOOL bRet = (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, ti);
2313 *puFlags = ti.uFlags;
2319 void SetToolInfo(LPTOOLINFO lpToolInfo)
2321 ATLASSERT(::IsWindow(m_hWnd));
2322 ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo);
2325 void SetToolRect(LPTOOLINFO lpToolInfo)
2327 ATLASSERT(::IsWindow(m_hWnd));
2328 ::SendMessage(m_hWnd, TTM_NEWTOOLRECT, 0, (LPARAM)lpToolInfo);
2331 void SetToolRect(HWND hWnd, UINT_PTR nIDTool, LPCRECT lpRect)
2333 ATLASSERT(::IsWindow(m_hWnd));
2334 ATLASSERT(hWnd != NULL);
2335 ATLASSERT(nIDTool != 0);
2337 CToolInfo ti(0, hWnd, nIDTool, (LPRECT)lpRect, NULL);
2338 ::SendMessage(m_hWnd, TTM_NEWTOOLRECT, 0, ti);
2341 int GetToolCount()
const 2343 ATLASSERT(::IsWindow(m_hWnd));
2344 return (
int)::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L);
2347 int GetDelayTime(DWORD dwType)
const 2349 ATLASSERT(::IsWindow(m_hWnd));
2350 return (
int)::SendMessage(m_hWnd, TTM_GETDELAYTIME, dwType, 0L);
2353 void SetDelayTime(DWORD dwType,
int nTime)
2355 ATLASSERT(::IsWindow(m_hWnd));
2356 ::SendMessage(m_hWnd, TTM_SETDELAYTIME, dwType, MAKELPARAM(nTime, 0));
2359 void GetMargin(LPRECT lpRect)
const 2361 ATLASSERT(::IsWindow(m_hWnd));
2362 ::SendMessage(m_hWnd, TTM_GETMARGIN, 0, (LPARAM)lpRect);
2365 void SetMargin(LPRECT lpRect)
2367 ATLASSERT(::IsWindow(m_hWnd));
2368 ::SendMessage(m_hWnd, TTM_SETMARGIN, 0, (LPARAM)lpRect);
2371 int GetMaxTipWidth()
const 2373 ATLASSERT(::IsWindow(m_hWnd));
2374 return (
int)::SendMessage(m_hWnd, TTM_GETMAXTIPWIDTH, 0, 0L);
2377 int SetMaxTipWidth(
int nWidth)
2379 ATLASSERT(::IsWindow(m_hWnd));
2380 return (
int)::SendMessage(m_hWnd, TTM_SETMAXTIPWIDTH, 0, nWidth);
2383 COLORREF GetTipBkColor()
const 2385 ATLASSERT(::IsWindow(m_hWnd));
2386 return (COLORREF)::SendMessage(m_hWnd, TTM_GETTIPBKCOLOR, 0, 0L);
2389 void SetTipBkColor(COLORREF clr)
2391 ATLASSERT(::IsWindow(m_hWnd));
2392 ::SendMessage(m_hWnd, TTM_SETTIPBKCOLOR, (WPARAM)clr, 0L);
2395 COLORREF GetTipTextColor()
const 2397 ATLASSERT(::IsWindow(m_hWnd));
2398 return (COLORREF)::SendMessage(m_hWnd, TTM_GETTIPTEXTCOLOR, 0, 0L);
2401 void SetTipTextColor(COLORREF clr)
2403 ATLASSERT(::IsWindow(m_hWnd));
2404 ::SendMessage(m_hWnd, TTM_SETTIPTEXTCOLOR, (WPARAM)clr, 0L);
2407 BOOL GetCurrentTool(LPTOOLINFO lpToolInfo)
const 2409 ATLASSERT(::IsWindow(m_hWnd));
2410 return (BOOL)::SendMessage(m_hWnd, TTM_GETCURRENTTOOL, 0, (LPARAM)lpToolInfo);
2413 #if (_WIN32_IE >= 0x0500) 2414 SIZE GetBubbleSize(LPTOOLINFO lpToolInfo)
const 2416 ATLASSERT(::IsWindow(m_hWnd));
2417 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TTM_GETBUBBLESIZE, 0, (LPARAM)lpToolInfo);
2418 SIZE size = { GET_X_LPARAM(dwRet), GET_Y_LPARAM(dwRet) };
2422 BOOL SetTitle(UINT_PTR uIcon, LPCTSTR lpstrTitle)
2424 ATLASSERT(::IsWindow(m_hWnd));
2425 return (BOOL)::SendMessage(m_hWnd, TTM_SETTITLE, uIcon, (LPARAM)lpstrTitle);
2428 BOOL SetTitle(HICON hIcon, LPCTSTR lpstrTitle)
2430 ATLASSERT(::IsWindow(m_hWnd));
2431 return (BOOL)::SendMessage(m_hWnd, TTM_SETTITLE, (WPARAM)hIcon, (LPARAM)lpstrTitle);
2433 #endif // (_WIN32_IE >= 0x0500) 2435 #if (_WIN32_WINNT >= 0x0501) 2436 void GetTitle(PTTGETTITLE pTTGetTitle)
const 2438 ATLASSERT(::IsWindow(m_hWnd));
2439 ::SendMessage(m_hWnd, TTM_GETTITLE, 0, (LPARAM)pTTGetTitle);
2442 void SetWindowTheme(LPCWSTR lpstrTheme)
2444 ATLASSERT(::IsWindow(m_hWnd));
2445 ::SendMessage(m_hWnd, TTM_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
2447 #endif // (_WIN32_WINNT >= 0x0501) 2450 void Activate(BOOL bActivate)
2452 ATLASSERT(::IsWindow(m_hWnd));
2453 ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L);
2456 BOOL AddTool(LPTOOLINFO lpToolInfo)
2458 ATLASSERT(::IsWindow(m_hWnd));
2459 return (BOOL)::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)lpToolInfo);
2462 BOOL AddTool(HWND hWnd,
ATL::_U_STRINGorID text = LPSTR_TEXTCALLBACK, LPCRECT lpRectTool = NULL, UINT_PTR nIDTool = 0)
2464 ATLASSERT(::IsWindow(m_hWnd));
2465 ATLASSERT(hWnd != NULL);
2467 ATLASSERT((lpRectTool != NULL && nIDTool != 0) || (lpRectTool == NULL && nIDTool == 0));
2469 CToolInfo ti(0, hWnd, nIDTool, (LPRECT)lpRectTool, (LPTSTR)text.m_lpstr);
2470 return (BOOL)::SendMessage(m_hWnd, TTM_ADDTOOL, 0, ti);
2473 void DelTool(LPTOOLINFO lpToolInfo)
2475 ATLASSERT(::IsWindow(m_hWnd));
2476 ::SendMessage(m_hWnd, TTM_DELTOOL, 0, (LPARAM)lpToolInfo);
2479 void DelTool(HWND hWnd, UINT_PTR nIDTool = 0)
2481 ATLASSERT(::IsWindow(m_hWnd));
2482 ATLASSERT(hWnd != NULL);
2484 CToolInfo ti(0, hWnd, nIDTool, NULL, NULL);
2485 ::SendMessage(m_hWnd, TTM_DELTOOL, 0, ti);
2488 BOOL HitTest(LPTTHITTESTINFO lpHitTestInfo)
const 2490 ATLASSERT(::IsWindow(m_hWnd));
2491 return (BOOL)::SendMessage(m_hWnd, TTM_HITTEST, 0, (LPARAM)lpHitTestInfo);
2494 BOOL HitTest(HWND hWnd, POINT pt, LPTOOLINFO lpToolInfo)
const 2496 ATLASSERT(::IsWindow(m_hWnd));
2497 ATLASSERT(hWnd != NULL);
2498 ATLASSERT(lpToolInfo != NULL);
2500 TTHITTESTINFO hti = { 0 };
2501 hti.ti.cbSize = RunTimeHelper::SizeOf_TOOLINFO();
2505 if((BOOL)::SendMessage(m_hWnd, TTM_HITTEST, 0, (LPARAM)&hti) != FALSE)
2507 *lpToolInfo = hti.ti;
2513 void RelayEvent(LPMSG lpMsg)
2515 ATLASSERT(::IsWindow(m_hWnd));
2516 ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg);
2519 void UpdateTipText(LPTOOLINFO lpToolInfo)
2521 ATLASSERT(::IsWindow(m_hWnd));
2522 ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, (LPARAM)lpToolInfo);
2527 ATLASSERT(::IsWindow(m_hWnd));
2528 ATLASSERT(hWnd != NULL);
2530 CToolInfo ti(0, hWnd, nIDTool, NULL, (LPTSTR)text.m_lpstr);
2531 ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, ti);
2534 BOOL EnumTools(UINT_PTR nTool, LPTOOLINFO lpToolInfo)
const 2536 ATLASSERT(::IsWindow(m_hWnd));
2537 return (BOOL)::SendMessage(m_hWnd, TTM_ENUMTOOLS, nTool, (LPARAM)lpToolInfo);
2542 ATLASSERT(::IsWindow(m_hWnd));
2543 ::SendMessage(m_hWnd, TTM_POP, 0, 0L);
2546 void TrackActivate(LPTOOLINFO lpToolInfo, BOOL bActivate)
2548 ATLASSERT(::IsWindow(m_hWnd));
2549 ::SendMessage(m_hWnd, TTM_TRACKACTIVATE, bActivate, (LPARAM)lpToolInfo);
2552 void TrackActivate(HWND hWnd, UINT_PTR nIDTool, BOOL bActivate)
2554 ATLASSERT(::IsWindow(m_hWnd));
2555 ATLASSERT(hWnd != NULL);
2558 ::SendMessage(m_hWnd, TTM_TRACKACTIVATE, bActivate, ti);
2561 void TrackPosition(
int xPos,
int yPos)
2563 ATLASSERT(::IsWindow(m_hWnd));
2564 ::SendMessage(m_hWnd, TTM_TRACKPOSITION, 0, MAKELPARAM(xPos, yPos));
2567 #if (_WIN32_IE >= 0x0400) 2570 ATLASSERT(::IsWindow(m_hWnd));
2571 ::SendMessage(m_hWnd, TTM_UPDATE, 0, 0L);
2573 #endif // (_WIN32_IE >= 0x0400) 2575 #if (_WIN32_IE >= 0x0500) 2576 BOOL AdjustRect(LPRECT lpRect, BOOL bLarger )
2578 ATLASSERT(::IsWindow(m_hWnd));
2579 return (BOOL)::SendMessage(m_hWnd, TTM_ADJUSTRECT, bLarger, (LPARAM)lpRect);
2581 #endif // (_WIN32_IE >= 0x0500) 2583 #if (_WIN32_WINNT >= 0x0501) 2586 ATLASSERT(::IsWindow(m_hWnd));
2587 ::SendMessage(m_hWnd, TTM_POPUP, 0, 0L);
2589 #endif // (_WIN32_WINNT >= 0x0501) 2594 #endif // !_WIN32_WCE 2600 template <
class TBase>
2614 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2615 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2618 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2622 static LPCTSTR GetWndClassName()
2627 int GetItemCount()
const 2629 ATLASSERT(::IsWindow(m_hWnd));
2630 return (
int)::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L);
2633 BOOL GetItem(
int nIndex, LPHDITEM pHeaderItem)
const 2635 ATLASSERT(::IsWindow(m_hWnd));
2636 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nIndex, (LPARAM)pHeaderItem);
2639 BOOL SetItem(
int nIndex, LPHDITEM pHeaderItem)
2641 ATLASSERT(::IsWindow(m_hWnd));
2642 return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nIndex, (LPARAM)pHeaderItem);
2645 CImageList GetImageList()
const 2647 ATLASSERT(::IsWindow(m_hWnd));
2648 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_GETIMAGELIST, 0, 0L));
2651 CImageList SetImageList(HIMAGELIST hImageList)
2653 ATLASSERT(::IsWindow(m_hWnd));
2654 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_SETIMAGELIST, 0, (LPARAM)hImageList));
2657 BOOL GetOrderArray(
int nSize,
int* lpnArray)
const 2659 ATLASSERT(::IsWindow(m_hWnd));
2660 return (BOOL)::SendMessage(m_hWnd, HDM_GETORDERARRAY, nSize, (LPARAM)lpnArray);
2663 BOOL SetOrderArray(
int nSize,
int* lpnArray)
2665 ATLASSERT(::IsWindow(m_hWnd));
2666 return (BOOL)::SendMessage(m_hWnd, HDM_SETORDERARRAY, nSize, (LPARAM)lpnArray);
2669 BOOL GetItemRect(
int nIndex, LPRECT lpItemRect)
const 2671 ATLASSERT(::IsWindow(m_hWnd));
2672 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEMRECT, nIndex, (LPARAM)lpItemRect);
2675 int SetHotDivider(BOOL bPos, DWORD dwInputValue)
2677 ATLASSERT(::IsWindow(m_hWnd));
2678 return (
int)::SendMessage(m_hWnd, HDM_SETHOTDIVIDER, bPos, dwInputValue);
2681 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 2682 BOOL GetUnicodeFormat()
const 2684 ATLASSERT(::IsWindow(m_hWnd));
2685 return (BOOL)::SendMessage(m_hWnd, HDM_GETUNICODEFORMAT, 0, 0L);
2688 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
2690 ATLASSERT(::IsWindow(m_hWnd));
2691 return (BOOL)::SendMessage(m_hWnd, HDM_SETUNICODEFORMAT, bUnicode, 0L);
2693 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 2695 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2696 int GetBitmapMargin()
const 2698 ATLASSERT(::IsWindow(m_hWnd));
2699 return (
int)::SendMessage(m_hWnd, HDM_GETBITMAPMARGIN, 0, 0L);
2702 int SetBitmapMargin(
int nWidth)
2704 ATLASSERT(::IsWindow(m_hWnd));
2705 return (
int)::SendMessage(m_hWnd, HDM_SETBITMAPMARGIN, nWidth, 0L);
2708 int SetFilterChangeTimeout(DWORD dwTimeOut)
2710 ATLASSERT(::IsWindow(m_hWnd));
2711 return (
int)::SendMessage(m_hWnd, HDM_SETFILTERCHANGETIMEOUT, 0, dwTimeOut);
2713 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2715 #if (_WIN32_WINNT >= 0x0600) 2716 BOOL GetItemDropDownRect(
int nIndex, LPRECT lpRect)
const 2718 ATLASSERT(::IsWindow(m_hWnd));
2719 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEMDROPDOWNRECT, nIndex, (LPARAM)lpRect);
2722 BOOL GetOverflowRect(LPRECT lpRect)
const 2724 ATLASSERT(::IsWindow(m_hWnd));
2725 return (BOOL)::SendMessage(m_hWnd, HDM_GETOVERFLOWRECT, 0, (LPARAM)lpRect);
2728 int GetFocusedItem()
const 2730 ATLASSERT(::IsWindow(m_hWnd));
2731 return (
int)::SendMessage(m_hWnd, HDM_GETFOCUSEDITEM, 0, 0L);
2734 BOOL SetFocusedItem(
int nIndex)
2736 ATLASSERT(::IsWindow(m_hWnd));
2737 return (BOOL)::SendMessage(m_hWnd, HDM_SETFOCUSEDITEM, 0, nIndex);
2739 #endif // (_WIN32_WINNT >= 0x0600) 2742 int InsertItem(
int nIndex, LPHDITEM phdi)
2744 ATLASSERT(::IsWindow(m_hWnd));
2745 return (
int)::SendMessage(m_hWnd, HDM_INSERTITEM, nIndex, (LPARAM)phdi);
2748 int AddItem(LPHDITEM phdi)
2750 return InsertItem(GetItemCount(), phdi);
2753 BOOL DeleteItem(
int nIndex)
2755 ATLASSERT(::IsWindow(m_hWnd));
2756 return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nIndex, 0L);
2759 BOOL Layout(HD_LAYOUT* pHeaderLayout)
2761 ATLASSERT(::IsWindow(m_hWnd));
2762 return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout);
2765 int HitTest(LPHDHITTESTINFO lpHitTestInfo)
const 2767 ATLASSERT(::IsWindow(m_hWnd));
2768 return (
int)::SendMessage(m_hWnd, HDM_HITTEST, 0, (LPARAM)lpHitTestInfo);
2771 int OrderToIndex(
int nOrder)
2773 ATLASSERT(::IsWindow(m_hWnd));
2774 return (
int)::SendMessage(m_hWnd, HDM_ORDERTOINDEX, nOrder, 0L);
2777 CImageList CreateDragImage(
int nIndex)
2779 ATLASSERT(::IsWindow(m_hWnd));
2780 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_CREATEDRAGIMAGE, nIndex, 0L));
2783 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2784 int EditFilter(
int nColumn, BOOL bDiscardChanges)
2786 ATLASSERT(::IsWindow(m_hWnd));
2787 return (
int)::SendMessage(m_hWnd, HDM_EDITFILTER, nColumn, MAKELPARAM(bDiscardChanges, 0));
2790 int ClearFilter(
int nColumn)
2792 ATLASSERT(::IsWindow(m_hWnd));
2793 return (
int)::SendMessage(m_hWnd, HDM_CLEARFILTER, nColumn, 0L);
2796 int ClearAllFilters()
2798 ATLASSERT(::IsWindow(m_hWnd));
2799 return (
int)::SendMessage(m_hWnd, HDM_CLEARFILTER, (WPARAM)-1, 0L);
2801 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2810 template <
class TBase>
2824 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2825 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2828 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2832 static LPCTSTR GetWndClassName()
2837 COLORREF GetBkColor()
const 2839 ATLASSERT(::IsWindow(m_hWnd));
2840 return (COLORREF)::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L);
2843 BOOL SetBkColor(COLORREF cr)
2845 ATLASSERT(::IsWindow(m_hWnd));
2846 return (BOOL)::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr);
2849 CImageList GetImageList(
int nImageListType)
const 2851 ATLASSERT(::IsWindow(m_hWnd));
2852 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageListType, 0L));
2855 CImageList SetImageList(HIMAGELIST hImageList,
int nImageList)
2857 ATLASSERT(::IsWindow(m_hWnd));
2858 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)hImageList));
2861 int GetItemCount()
const 2863 ATLASSERT(::IsWindow(m_hWnd));
2864 return (
int)::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L);
2867 BOOL SetItemCount(
int nItems)
2869 ATLASSERT(::IsWindow(m_hWnd));
2870 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0L);
2873 BOOL GetItem(LPLVITEM pItem)
const 2875 ATLASSERT(::IsWindow(m_hWnd));
2876 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem);
2879 BOOL SetItem(
const LVITEM* pItem)
2881 ATLASSERT(::IsWindow(m_hWnd));
2882 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem);
2885 BOOL SetItem(
int nItem,
int nSubItem, UINT nMask, LPCTSTR lpszItem,
2886 int nImage, UINT nState, UINT nStateMask, LPARAM lParam)
2888 ATLASSERT(::IsWindow(m_hWnd));
2892 lvi.iSubItem = nSubItem;
2893 lvi.stateMask = nStateMask;
2895 lvi.pszText = (LPTSTR) lpszItem;
2896 lvi.iImage = nImage;
2897 lvi.lParam = lParam;
2898 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)&lvi);
2901 UINT GetItemState(
int nItem, UINT nMask)
const 2903 ATLASSERT(::IsWindow(m_hWnd));
2904 return (UINT)::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask);
2907 BOOL SetItemState(
int nItem, UINT nState, UINT nStateMask)
2909 ATLASSERT(::IsWindow(m_hWnd));
2912 lvi.stateMask = nStateMask;
2913 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi);
2916 BOOL SetItemState(
int nItem, LPLVITEM pItem)
2918 ATLASSERT(::IsWindow(m_hWnd));
2919 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem);
2923 BOOL GetItemText(
int nItem,
int nSubItem, BSTR& bstrText)
const 2926 ATLASSERT(::IsWindow(m_hWnd));
2927 ATLASSERT(bstrText == NULL);
2929 lvi.iSubItem = nSubItem;
2931 LPTSTR lpstrText = NULL;
2933 for(
int nLen = 256; ; nLen *= 2)
2935 ATLTRY(lpstrText =
new TCHAR[nLen]);
2936 if(lpstrText == NULL)
2938 lpstrText[0] = NULL;
2939 lvi.cchTextMax = nLen;
2940 lvi.pszText = lpstrText;
2941 nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2944 delete [] lpstrText;
2948 if(lpstrText != NULL)
2951 bstrText = ::SysAllocString(T2OLE(lpstrText));
2952 delete [] lpstrText;
2955 return (bstrText != NULL) ? TRUE : FALSE;
2957 #endif // !_ATL_NO_COM 2959 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 2960 int GetItemText(
int nItem,
int nSubItem, _CSTRING_NS::CString& strText)
const 2962 ATLASSERT(::IsWindow(m_hWnd));
2964 lvi.iSubItem = nSubItem;
2968 for(
int nLen = 256; ; nLen *= 2)
2970 lvi.cchTextMax = nLen;
2971 lvi.pszText = strText.GetBufferSetLength(nLen);
2972 if(lvi.pszText == NULL)
2977 nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2981 strText.ReleaseBuffer();
2984 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 2986 int GetItemText(
int nItem,
int nSubItem, LPTSTR lpszText,
int nLen)
const 2988 ATLASSERT(::IsWindow(m_hWnd));
2990 lvi.iSubItem = nSubItem;
2991 lvi.cchTextMax = nLen;
2992 lvi.pszText = lpszText;
2993 return (
int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2996 BOOL SetItemText(
int nItem,
int nSubItem, LPCTSTR lpszText)
2998 ATLASSERT(::IsWindow(m_hWnd));
2999 return SetItem(nItem, nSubItem, LVIF_TEXT, lpszText, 0, 0, 0, 0);
3002 DWORD_PTR GetItemData(
int nItem)
const 3004 ATLASSERT(::IsWindow(m_hWnd));
3007 lvi.mask = LVIF_PARAM;
3008 BOOL bRet = (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)&lvi);
3009 return (DWORD_PTR)(bRet ? lvi.lParam : NULL);
3012 BOOL SetItemData(
int nItem, DWORD_PTR dwData)
3014 ATLASSERT(::IsWindow(m_hWnd));
3015 return SetItem(nItem, 0, LVIF_PARAM, NULL, 0, 0, 0, (LPARAM)dwData);
3018 UINT GetCallbackMask()
const 3020 ATLASSERT(::IsWindow(m_hWnd));
3021 return (UINT)::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0L);
3024 BOOL SetCallbackMask(UINT nMask)
3026 ATLASSERT(::IsWindow(m_hWnd));
3027 return (BOOL)::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0L);
3030 BOOL GetItemPosition(
int nItem, LPPOINT lpPoint)
const 3032 ATLASSERT(::IsWindow(m_hWnd));
3033 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint);
3036 BOOL SetItemPosition(
int nItem, POINT pt)
3038 ATLASSERT(::IsWindow(m_hWnd));
3039 ATLASSERT(((GetStyle() & LVS_TYPEMASK) == LVS_ICON) || ((GetStyle() & LVS_TYPEMASK) == LVS_SMALLICON));
3040 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt);
3043 BOOL SetItemPosition(
int nItem,
int x,
int y)
3045 ATLASSERT(::IsWindow(m_hWnd));
3046 ATLASSERT(((GetStyle() & LVS_TYPEMASK) == LVS_ICON) || ((GetStyle() & LVS_TYPEMASK) == LVS_SMALLICON));
3047 POINT pt = { x, y };
3048 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt);
3051 int GetStringWidth(LPCTSTR lpsz)
const 3053 ATLASSERT(::IsWindow(m_hWnd));
3054 return (
int)::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz);
3057 CEdit GetEditControl()
const 3059 ATLASSERT(::IsWindow(m_hWnd));
3060 return CEdit((HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L));
3063 BOOL GetColumn(
int nCol, LVCOLUMN* pColumn)
const 3065 ATLASSERT(::IsWindow(m_hWnd));
3066 return (BOOL)::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn);
3069 BOOL SetColumn(
int nCol,
const LVCOLUMN* pColumn)
3071 ATLASSERT(::IsWindow(m_hWnd));
3072 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn);
3075 int GetColumnWidth(
int nCol)
const 3077 ATLASSERT(::IsWindow(m_hWnd));
3078 return (
int)::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0L);
3081 BOOL SetColumnWidth(
int nCol,
int cx)
3083 ATLASSERT(::IsWindow(m_hWnd));
3084 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0));
3087 BOOL GetViewRect(LPRECT lpRect)
const 3089 ATLASSERT(::IsWindow(m_hWnd));
3090 return (BOOL)::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect);
3093 COLORREF GetTextColor()
const 3095 ATLASSERT(::IsWindow(m_hWnd));
3096 return (COLORREF)::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L);
3099 BOOL SetTextColor(COLORREF cr)
3101 ATLASSERT(::IsWindow(m_hWnd));
3102 return (BOOL)::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr);
3105 COLORREF GetTextBkColor()
const 3107 ATLASSERT(::IsWindow(m_hWnd));
3108 return (COLORREF)::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L);
3111 BOOL SetTextBkColor(COLORREF cr)
3113 ATLASSERT(::IsWindow(m_hWnd));
3114 return (BOOL)::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr);
3117 int GetTopIndex()
const 3119 ATLASSERT(::IsWindow(m_hWnd));
3120 return (
int)::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0L);
3123 int GetCountPerPage()
const 3125 ATLASSERT(::IsWindow(m_hWnd));
3126 return (
int)::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0L);
3129 BOOL GetOrigin(LPPOINT lpPoint)
const 3131 ATLASSERT(::IsWindow(m_hWnd));
3132 return (BOOL)::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint);
3135 UINT GetSelectedCount()
const 3137 ATLASSERT(::IsWindow(m_hWnd));
3138 return (UINT)::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L);
3141 BOOL GetItemRect(
int nItem, LPRECT lpRect, UINT nCode)
const 3143 ATLASSERT(::IsWindow(m_hWnd));
3144 lpRect->left = nCode;
3145 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMRECT, (WPARAM)nItem, (LPARAM)lpRect);
3149 HCURSOR GetHotCursor()
const 3151 ATLASSERT(::IsWindow(m_hWnd));
3152 return (HCURSOR)::SendMessage(m_hWnd, LVM_GETHOTCURSOR, 0, 0L);
3155 HCURSOR SetHotCursor(HCURSOR hHotCursor)
3157 ATLASSERT(::IsWindow(m_hWnd));
3158 return (HCURSOR)::SendMessage(m_hWnd, LVM_SETHOTCURSOR, 0, (LPARAM)hHotCursor);
3161 int GetHotItem()
const 3163 ATLASSERT(::IsWindow(m_hWnd));
3164 return (
int)::SendMessage(m_hWnd, LVM_GETHOTITEM, 0, 0L);
3167 int SetHotItem(
int nIndex)
3169 ATLASSERT(::IsWindow(m_hWnd));
3170 return (
int)::SendMessage(m_hWnd, LVM_SETHOTITEM, nIndex, 0L);
3172 #endif // !_WIN32_WCE 3174 BOOL GetColumnOrderArray(
int nCount,
int* lpnArray)
const 3176 ATLASSERT(::IsWindow(m_hWnd));
3177 return (BOOL)::SendMessage(m_hWnd, LVM_GETCOLUMNORDERARRAY, nCount, (LPARAM)lpnArray);
3180 BOOL SetColumnOrderArray(
int nCount,
int* lpnArray)
3182 ATLASSERT(::IsWindow(m_hWnd));
3183 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNORDERARRAY, nCount, (LPARAM)lpnArray);
3186 CHeaderCtrl GetHeader()
const 3188 ATLASSERT(::IsWindow(m_hWnd));
3189 return CHeaderCtrl((HWND)::SendMessage(m_hWnd, LVM_GETHEADER, 0, 0L));
3192 BOOL GetSubItemRect(
int nItem,
int nSubItem,
int nFlag, LPRECT lpRect)
const 3194 ATLASSERT(::IsWindow(m_hWnd));
3195 ATLASSERT((GetStyle() & LVS_TYPEMASK) == LVS_REPORT);
3196 ATLASSERT(lpRect != NULL);
3197 lpRect->top = nSubItem;
3198 lpRect->left = nFlag;
3199 return (BOOL)::SendMessage(m_hWnd, LVM_GETSUBITEMRECT, nItem, (LPARAM)lpRect);
3202 DWORD SetIconSpacing(
int cx,
int cy)
3204 ATLASSERT(::IsWindow(m_hWnd));
3205 ATLASSERT((GetStyle() & LVS_TYPEMASK) == LVS_ICON);
3206 return (DWORD)::SendMessage(m_hWnd, LVM_SETICONSPACING, 0, MAKELPARAM(cx, cy));
3209 int GetISearchString(LPTSTR lpstr)
const 3211 ATLASSERT(::IsWindow(m_hWnd));
3212 return (
int)::SendMessage(m_hWnd, LVM_GETISEARCHSTRING, 0, (LPARAM)lpstr);
3215 void GetItemSpacing(SIZE& sizeSpacing, BOOL bSmallIconView = FALSE)
const 3217 ATLASSERT(::IsWindow(m_hWnd));
3218 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, LVM_GETITEMSPACING, bSmallIconView, 0L);
3219 sizeSpacing.cx = GET_X_LPARAM(dwRet);
3220 sizeSpacing.cy = GET_Y_LPARAM(dwRet);
3223 #if (_WIN32_WCE >= 410) 3224 void SetItemSpacing(INT cySpacing)
3226 ATLASSERT(::IsWindow(m_hWnd));
3227 ListView_SetItemSpacing(m_hWnd, cySpacing);
3229 #endif // (_WIN32_WCE >= 410) 3232 int GetSelectedIndex()
const 3234 ATLASSERT(::IsWindow(m_hWnd));
3235 ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
3236 return (
int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, (WPARAM)-1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0));
3239 BOOL GetSelectedItem(LPLVITEM pItem)
const 3241 ATLASSERT(::IsWindow(m_hWnd));
3242 ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
3243 ATLASSERT(pItem != NULL);
3244 pItem->iItem = (int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, (WPARAM)-1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0));
3245 if(pItem->iItem == -1)
3247 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem);
3251 DWORD GetExtendedListViewStyle()
const 3253 ATLASSERT(::IsWindow(m_hWnd));
3254 return (DWORD)::SendMessage(m_hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L);
3258 DWORD SetExtendedListViewStyle(DWORD dwExStyle, DWORD dwExMask = 0)
3260 ATLASSERT(::IsWindow(m_hWnd));
3261 return (DWORD)::SendMessage(m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, dwExMask, dwExStyle);
3265 BOOL GetCheckState(
int nIndex)
const 3267 ATLASSERT(::IsWindow(m_hWnd));
3268 ATLASSERT((GetExtendedListViewStyle() & LVS_EX_CHECKBOXES) != 0);
3269 UINT uRet = GetItemState(nIndex, LVIS_STATEIMAGEMASK);
3270 return (uRet >> 12) - 1;
3273 BOOL SetCheckState(
int nItem, BOOL bCheck)
3275 int nCheck = bCheck ? 2 : 1;
3276 return SetItemState(nItem, INDEXTOSTATEIMAGEMASK(nCheck), LVIS_STATEIMAGEMASK);
3280 DWORD GetViewType()
const 3282 ATLASSERT(::IsWindow(m_hWnd));
3283 return (GetStyle() & LVS_TYPEMASK);
3286 DWORD SetViewType(DWORD dwType)
3288 ATLASSERT(::IsWindow(m_hWnd));
3289 ATLASSERT(dwType == LVS_ICON || dwType == LVS_SMALLICON || dwType == LVS_LIST || dwType == LVS_REPORT);
3290 DWORD dwOldType = GetViewType();
3291 if(dwType != dwOldType)
3292 ModifyStyle(LVS_TYPEMASK, (dwType & LVS_TYPEMASK));
3296 #if (_WIN32_IE >= 0x0400) 3298 BOOL GetBkImage(LPLVBKIMAGE plvbki)
const 3300 ATLASSERT(::IsWindow(m_hWnd));
3301 return (BOOL)::SendMessage(m_hWnd, LVM_GETBKIMAGE, 0, (LPARAM)plvbki);
3304 BOOL SetBkImage(LPLVBKIMAGE plvbki)
3306 ATLASSERT(::IsWindow(m_hWnd));
3307 return (BOOL)::SendMessage(m_hWnd, LVM_SETBKIMAGE, 0, (LPARAM)plvbki);
3309 #endif // !_WIN32_WCE 3311 int GetSelectionMark()
const 3313 ATLASSERT(::IsWindow(m_hWnd));
3314 return (
int)::SendMessage(m_hWnd, LVM_GETSELECTIONMARK, 0, 0L);
3317 int SetSelectionMark(
int nIndex)
3319 ATLASSERT(::IsWindow(m_hWnd));
3320 return (
int)::SendMessage(m_hWnd, LVM_SETSELECTIONMARK, 0, nIndex);
3324 BOOL GetWorkAreas(
int nWorkAreas, LPRECT lpRect)
const 3326 ATLASSERT(::IsWindow(m_hWnd));
3327 return (BOOL)::SendMessage(m_hWnd, LVM_GETWORKAREAS, nWorkAreas, (LPARAM)lpRect);
3330 BOOL SetWorkAreas(
int nWorkAreas, LPRECT lpRect)
3332 ATLASSERT(::IsWindow(m_hWnd));
3333 return (BOOL)::SendMessage(m_hWnd, LVM_SETWORKAREAS, nWorkAreas, (LPARAM)lpRect);
3336 DWORD GetHoverTime()
const 3338 ATLASSERT(::IsWindow(m_hWnd));
3339 ATLASSERT((GetExtendedListViewStyle() & (LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE)) != 0);
3340 return (DWORD)::SendMessage(m_hWnd, LVM_GETHOVERTIME, 0, 0L);
3343 DWORD SetHoverTime(DWORD dwHoverTime)
3345 ATLASSERT(::IsWindow(m_hWnd));
3346 ATLASSERT((GetExtendedListViewStyle() & (LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE)) != 0);
3347 return (DWORD)::SendMessage(m_hWnd, LVM_SETHOVERTIME, 0, dwHoverTime);
3350 BOOL GetNumberOfWorkAreas(
int* pnWorkAreas)
const 3352 ATLASSERT(::IsWindow(m_hWnd));
3353 return (BOOL)::SendMessage(m_hWnd, LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)pnWorkAreas);
3355 #endif // !_WIN32_WCE 3357 BOOL SetItemCountEx(
int nItems, DWORD dwFlags)
3359 ATLASSERT(::IsWindow(m_hWnd));
3360 ATLASSERT(((GetStyle() & LVS_OWNERDATA) != 0) && (((GetStyle() & LVS_TYPEMASK) == LVS_REPORT) || ((GetStyle() & LVS_TYPEMASK) == LVS_LIST)));
3361 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, dwFlags);
3365 CToolTipCtrl GetToolTips()
const 3367 ATLASSERT(::IsWindow(m_hWnd));
3368 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, LVM_GETTOOLTIPS, 0, 0L));
3371 CToolTipCtrl SetToolTips(HWND hWndTT)
3373 ATLASSERT(::IsWindow(m_hWnd));
3374 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, LVM_SETTOOLTIPS, (WPARAM)hWndTT, 0L));
3377 BOOL GetUnicodeFormat()
const 3379 ATLASSERT(::IsWindow(m_hWnd));
3380 return (BOOL)::SendMessage(m_hWnd, LVM_GETUNICODEFORMAT, 0, 0L);
3383 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
3385 ATLASSERT(::IsWindow(m_hWnd));
3386 return (BOOL)::SendMessage(m_hWnd, LVM_SETUNICODEFORMAT, bUnicode, 0L);
3388 #endif // !_WIN32_WCE 3389 #endif // (_WIN32_IE >= 0x0400) 3391 #if (_WIN32_WINNT >= 0x0501) 3392 int GetSelectedColumn()
const 3394 ATLASSERT(::IsWindow(m_hWnd));
3395 return (
int)::SendMessage(m_hWnd, LVM_GETSELECTEDCOLUMN, 0, 0L);
3398 void SetSelectedColumn(
int nColumn)
3400 ATLASSERT(::IsWindow(m_hWnd));
3401 ::SendMessage(m_hWnd, LVM_SETSELECTEDCOLUMN, nColumn, 0L);
3404 DWORD GetView()
const 3406 ATLASSERT(::IsWindow(m_hWnd));
3407 return (DWORD)::SendMessage(m_hWnd, LVM_GETVIEW, 0, 0L);
3410 int SetView(DWORD dwView)
3412 ATLASSERT(::IsWindow(m_hWnd));
3413 return (
int)::SendMessage(m_hWnd, LVM_SETVIEW, dwView, 0L);
3416 BOOL IsGroupViewEnabled()
const 3418 ATLASSERT(::IsWindow(m_hWnd));
3419 return (BOOL)::SendMessage(m_hWnd, LVM_ISGROUPVIEWENABLED, 0, 0L);
3422 int GetGroupInfo(
int nGroupID, PLVGROUP pGroup)
const 3424 ATLASSERT(::IsWindow(m_hWnd));
3425 return (
int)::SendMessage(m_hWnd, LVM_GETGROUPINFO, nGroupID, (LPARAM)pGroup);
3428 int SetGroupInfo(
int nGroupID, PLVGROUP pGroup)
3430 ATLASSERT(::IsWindow(m_hWnd));
3431 return (
int)::SendMessage(m_hWnd, LVM_SETGROUPINFO, nGroupID, (LPARAM)pGroup);
3434 void GetGroupMetrics(PLVGROUPMETRICS pGroupMetrics)
const 3436 ATLASSERT(::IsWindow(m_hWnd));
3437 ::SendMessage(m_hWnd, LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics);
3440 void SetGroupMetrics(PLVGROUPMETRICS pGroupMetrics)
3442 ATLASSERT(::IsWindow(m_hWnd));
3443 ::SendMessage(m_hWnd, LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics);
3446 void GetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo)
const 3448 ATLASSERT(::IsWindow(m_hWnd));
3449 ::SendMessage(m_hWnd, LVM_GETTILEVIEWINFO, 0, (LPARAM)pTileViewInfo);
3452 BOOL SetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo)
3454 ATLASSERT(::IsWindow(m_hWnd));
3455 return (BOOL)::SendMessage(m_hWnd, LVM_SETTILEVIEWINFO, 0, (LPARAM)pTileViewInfo);
3458 void GetTileInfo(PLVTILEINFO pTileInfo)
const 3460 ATLASSERT(::IsWindow(m_hWnd));
3461 ::SendMessage(m_hWnd, LVM_GETTILEINFO, 0, (LPARAM)pTileInfo);
3464 BOOL SetTileInfo(PLVTILEINFO pTileInfo)
3466 ATLASSERT(::IsWindow(m_hWnd));
3467 return (BOOL)::SendMessage(m_hWnd, LVM_SETTILEINFO, 0, (LPARAM)pTileInfo);
3470 BOOL GetInsertMark(LPLVINSERTMARK pInsertMark)
const 3472 ATLASSERT(::IsWindow(m_hWnd));
3473 return (BOOL)::SendMessage(m_hWnd, LVM_GETINSERTMARK, 0, (LPARAM)pInsertMark);
3476 BOOL SetInsertMark(LPLVINSERTMARK pInsertMark)
3478 ATLASSERT(::IsWindow(m_hWnd));
3479 return (BOOL)::SendMessage(m_hWnd, LVM_SETINSERTMARK, 0, (LPARAM)pInsertMark);
3482 int GetInsertMarkRect(LPRECT lpRect)
const 3484 ATLASSERT(::IsWindow(m_hWnd));
3485 return (
int)::SendMessage(m_hWnd, LVM_GETINSERTMARKRECT, 0, (LPARAM)lpRect);
3488 COLORREF GetInsertMarkColor()
const 3490 ATLASSERT(::IsWindow(m_hWnd));
3491 return (COLORREF)::SendMessage(m_hWnd, LVM_GETINSERTMARKCOLOR, 0, 0L);
3494 COLORREF SetInsertMarkColor(COLORREF clr)
3496 ATLASSERT(::IsWindow(m_hWnd));
3497 return (COLORREF)::SendMessage(m_hWnd, LVM_SETINSERTMARKCOLOR, 0, clr);
3500 COLORREF GetOutlineColor()
const 3502 ATLASSERT(::IsWindow(m_hWnd));
3503 return (COLORREF)::SendMessage(m_hWnd, LVM_GETOUTLINECOLOR, 0, 0L);
3506 COLORREF SetOutlineColor(COLORREF clr)
3508 ATLASSERT(::IsWindow(m_hWnd));
3509 return (COLORREF)::SendMessage(m_hWnd, LVM_SETOUTLINECOLOR, 0, clr);
3511 #endif // (_WIN32_WINNT >= 0x0501) 3513 #if (_WIN32_WINNT >= 0x0600) 3514 int GetGroupCount()
const 3516 ATLASSERT(::IsWindow(m_hWnd));
3517 return (
int)::SendMessage(m_hWnd, LVM_GETGROUPCOUNT, 0, 0L);
3520 BOOL GetGroupInfoByIndex(
int nIndex, PLVGROUP pGroup)
const 3522 ATLASSERT(::IsWindow(m_hWnd));
3523 return (BOOL)::SendMessage(m_hWnd, LVM_GETGROUPINFOBYINDEX, nIndex, (LPARAM)pGroup);
3526 BOOL GetGroupRect(
int nGroupID,
int nType, LPRECT lpRect)
const 3528 ATLASSERT(::IsWindow(m_hWnd));
3529 ATLASSERT(lpRect != NULL);
3531 lpRect->top = nType;
3532 return (BOOL)::SendMessage(m_hWnd, LVM_GETGROUPRECT, nGroupID, (LPARAM)lpRect);
3535 UINT GetGroupState(
int nGroupID, UINT uMask)
const 3537 ATLASSERT(::IsWindow(m_hWnd));
3538 return (UINT)::SendMessage(m_hWnd, LVM_GETGROUPSTATE, nGroupID, (LPARAM)uMask);
3541 int GetFocusedGroup()
const 3543 ATLASSERT(::IsWindow(m_hWnd));
3544 return (
int)::SendMessage(m_hWnd, LVM_GETFOCUSEDGROUP, 0, 0L);
3547 BOOL GetEmptyText(LPWSTR lpstrText,
int cchText)
const 3549 ATLASSERT(::IsWindow(m_hWnd));
3550 return (BOOL)::SendMessage(m_hWnd, LVM_GETEMPTYTEXT, cchText, (LPARAM)lpstrText);
3553 BOOL GetFooterRect(LPRECT lpRect)
const 3555 ATLASSERT(::IsWindow(m_hWnd));
3556 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERRECT, 0, (LPARAM)lpRect);
3559 BOOL GetFooterInfo(LPLVFOOTERINFO lpFooterInfo)
const 3561 ATLASSERT(::IsWindow(m_hWnd));
3562 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERINFO, 0, (LPARAM)lpFooterInfo);
3565 BOOL GetFooterItemRect(
int nItem, LPRECT lpRect)
const 3567 ATLASSERT(::IsWindow(m_hWnd));
3568 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERITEMRECT, nItem, (LPARAM)lpRect);
3571 BOOL GetFooterItem(
int nItem, LPLVFOOTERITEM lpFooterItem)
const 3573 ATLASSERT(::IsWindow(m_hWnd));
3574 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERITEM, nItem, (LPARAM)lpFooterItem);
3577 BOOL GetItemIndexRect(PLVITEMINDEX pItemIndex,
int nSubItem,
int nType, LPRECT lpRect)
const 3579 ATLASSERT(::IsWindow(m_hWnd));
3580 ATLASSERT(pItemIndex != NULL);
3581 ATLASSERT(lpRect != NULL);
3584 lpRect->top = nSubItem;
3585 lpRect->left = nType;
3587 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMINDEXRECT, (WPARAM)pItemIndex, (LPARAM)lpRect);
3590 BOOL SetItemIndexState(PLVITEMINDEX pItemIndex, UINT uState, UINT dwMask)
3592 ATLASSERT(::IsWindow(m_hWnd));
3595 lvi.stateMask = dwMask;
3596 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMINDEXSTATE, (WPARAM)pItemIndex, (LPARAM)&lvi);
3599 BOOL GetNextItemIndex(PLVITEMINDEX pItemIndex, WORD wFlags)
const 3601 ATLASSERT(::IsWindow(m_hWnd));
3602 return (BOOL)::SendMessage(m_hWnd, LVM_GETNEXTITEMINDEX, (WPARAM)pItemIndex, MAKELPARAM(wFlags, 0));
3604 #endif // (_WIN32_WINNT >= 0x0600) 3607 int InsertColumn(
int nCol,
const LVCOLUMN* pColumn)
3609 ATLASSERT(::IsWindow(m_hWnd));
3610 return (
int)::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn);
3613 int InsertColumn(
int nCol, LPCTSTR lpszColumnHeading,
int nFormat = LVCFMT_LEFT,
3614 int nWidth = -1,
int nSubItem = -1,
int iImage = -1,
int iOrder = -1)
3616 LVCOLUMN column = { 0 };
3617 column.mask = LVCF_TEXT|LVCF_FMT;
3618 column.pszText = (LPTSTR)lpszColumnHeading;
3619 column.fmt = nFormat;
3622 column.mask |= LVCF_WIDTH;
3627 column.mask |= LVCF_SUBITEM;
3628 column.iSubItem = nSubItem;
3632 column.mask |= LVCF_IMAGE;
3633 column.iImage = iImage;
3637 column.mask |= LVCF_ORDER;
3638 column.iOrder = iOrder;
3640 return InsertColumn(nCol, &column);
3643 BOOL DeleteColumn(
int nCol)
3645 ATLASSERT(::IsWindow(m_hWnd));
3646 return (BOOL)::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0L);
3649 int InsertItem(UINT nMask,
int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask,
int nImage, LPARAM lParam)
3651 ATLASSERT(::IsWindow(m_hWnd));
3652 LVITEM item = { 0 };
3656 item.pszText = (LPTSTR)lpszItem;
3657 item.state = nState;
3658 item.stateMask = nStateMask;
3659 item.iImage = nImage;
3660 item.lParam = lParam;
3661 return InsertItem(&item);
3664 int InsertItem(
const LVITEM* pItem)
3666 ATLASSERT(::IsWindow(m_hWnd));
3667 return (
int)::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem);
3670 int InsertItem(
int nItem, LPCTSTR lpszItem)
3672 ATLASSERT(::IsWindow(m_hWnd));
3673 return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0);
3676 int InsertItem(
int nItem, LPCTSTR lpszItem,
int nImage)
3678 ATLASSERT(::IsWindow(m_hWnd));
3679 return InsertItem(LVIF_TEXT|LVIF_IMAGE, nItem, lpszItem, 0, 0, nImage, 0);
3682 int GetNextItem(
int nItem,
int nFlags)
const 3684 ATLASSERT(::IsWindow(m_hWnd));
3685 return (
int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0));
3688 BOOL DeleteItem(
int nItem)
3690 ATLASSERT(::IsWindow(m_hWnd));
3691 return (BOOL)::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L);
3694 BOOL DeleteAllItems()
3696 ATLASSERT(::IsWindow(m_hWnd));
3697 return (BOOL)::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L);
3700 int FindItem(LVFINDINFO* pFindInfo,
int nStart = -1)
const 3702 ATLASSERT(::IsWindow(m_hWnd));
3703 return (
int)::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo);
3706 int FindItem(LPCTSTR lpstrFind,
bool bPartial =
true,
bool bWrap =
false,
int nStart = -1)
const 3708 ATLASSERT(::IsWindow(m_hWnd));
3709 LVFINDINFO lvfi = { 0 };
3710 lvfi.flags = LVFI_STRING | (bWrap ? LVFI_WRAP : 0) | (bPartial ? LVFI_PARTIAL : 0);
3711 lvfi.psz = lpstrFind;
3712 return (
int)::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)&lvfi);
3715 int HitTest(LVHITTESTINFO* pHitTestInfo)
const 3717 ATLASSERT(::IsWindow(m_hWnd));
3718 return (
int)::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo);
3721 int HitTest(POINT pt, UINT* pFlags)
const 3723 ATLASSERT(::IsWindow(m_hWnd));
3724 LVHITTESTINFO hti = { 0 };
3726 int nRes = (int)::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)&hti);
3728 *pFlags = hti.flags;
3732 BOOL EnsureVisible(
int nItem, BOOL bPartialOK)
3734 ATLASSERT(::IsWindow(m_hWnd));
3735 return (BOOL)::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0));
3738 BOOL Scroll(SIZE size)
3740 ATLASSERT(::IsWindow(m_hWnd));
3741 return (BOOL)::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy);
3744 BOOL RedrawItems(
int nFirst,
int nLast)
3746 ATLASSERT(::IsWindow(m_hWnd));
3747 return (BOOL)::SendMessage(m_hWnd, LVM_REDRAWITEMS, nFirst, nLast);
3750 BOOL Arrange(UINT nCode)
3752 ATLASSERT(::IsWindow(m_hWnd));
3753 return (BOOL)::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L);
3756 CEdit EditLabel(
int nItem)
3758 ATLASSERT(::IsWindow(m_hWnd));
3759 return CEdit((HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L));
3762 BOOL Update(
int nItem)
3764 ATLASSERT(::IsWindow(m_hWnd));
3765 return (BOOL)::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L);
3768 BOOL SortItems(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
3770 ATLASSERT(::IsWindow(m_hWnd));
3771 return (BOOL)::SendMessage(m_hWnd, LVM_SORTITEMS, (WPARAM)lParamSort, (LPARAM)pfnCompare);
3774 CImageList RemoveImageList(
int nImageList)
3776 ATLASSERT(::IsWindow(m_hWnd));
3777 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_SETIMAGELIST, (WPARAM)nImageList, NULL));
3780 CImageList CreateDragImage(
int nItem, LPPOINT lpPoint)
3782 ATLASSERT(::IsWindow(m_hWnd));
3783 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_CREATEDRAGIMAGE, nItem, (LPARAM)lpPoint));
3786 DWORD ApproximateViewRect(
int cx = -1,
int cy = -1,
int nCount = -1)
3788 ATLASSERT(::IsWindow(m_hWnd));
3789 return (DWORD)::SendMessage(m_hWnd, LVM_APPROXIMATEVIEWRECT, nCount, MAKELPARAM(cx, cy));
3792 int SubItemHitTest(LPLVHITTESTINFO lpInfo)
const 3794 ATLASSERT(::IsWindow(m_hWnd));
3795 return (
int)::SendMessage(m_hWnd, LVM_SUBITEMHITTEST, 0, (LPARAM)lpInfo);
3798 int AddColumn(LPCTSTR strItem,
int nItem,
int nSubItem = -1,
3799 int nMask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM,
3800 int nFmt = LVCFMT_LEFT)
3802 const int cxOffset = 15;
3803 ATLASSERT(::IsWindow(m_hWnd));
3804 LVCOLUMN lvc = { 0 };
3807 lvc.pszText = (LPTSTR)strItem;
3808 lvc.cx = GetStringWidth(lvc.pszText) + cxOffset;
3809 if(nMask & LVCF_SUBITEM)
3810 lvc.iSubItem = (nSubItem != -1) ? nSubItem : nItem;
3811 return InsertColumn(nItem, &lvc);
3814 int AddItem(
int nItem,
int nSubItem, LPCTSTR strItem,
int nImageIndex = -3)
3816 ATLASSERT(::IsWindow(m_hWnd));
3817 LVITEM lvItem = { 0 };
3818 lvItem.mask = LVIF_TEXT;
3819 lvItem.iItem = nItem;
3820 lvItem.iSubItem = nSubItem;
3821 lvItem.pszText = (LPTSTR)strItem;
3822 if(nImageIndex != -3)
3824 lvItem.mask |= LVIF_IMAGE;
3825 lvItem.iImage = nImageIndex;
3828 return InsertItem(&lvItem);
3829 return SetItem(&lvItem) ? nItem : -1;
3832 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 3833 BOOL SortItemsEx(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
3835 ATLASSERT(::IsWindow(m_hWnd));
3836 return (BOOL)::SendMessage(m_hWnd, LVM_SORTITEMSEX, (WPARAM)lParamSort, (LPARAM)pfnCompare);
3838 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 3840 #if (_WIN32_WINNT >= 0x0501) 3841 int InsertGroup(
int nItem, PLVGROUP pGroup)
3843 ATLASSERT(::IsWindow(m_hWnd));
3844 return (
int)::SendMessage(m_hWnd, LVM_INSERTGROUP, nItem, (LPARAM)pGroup);
3847 int AddGroup(PLVGROUP pGroup)
3849 return InsertGroup(-1, pGroup);
3852 int RemoveGroup(
int nGroupID)
3854 ATLASSERT(::IsWindow(m_hWnd));
3855 return (
int)::SendMessage(m_hWnd, LVM_REMOVEGROUP, nGroupID, 0L);
3858 void MoveGroup(
int nGroupID,
int nItem)
3860 ATLASSERT(::IsWindow(m_hWnd));
3861 ::SendMessage(m_hWnd, LVM_MOVEGROUP, nGroupID, nItem);
3864 void MoveItemToGroup(
int nItem,
int nGroupID)
3866 ATLASSERT(::IsWindow(m_hWnd));
3867 ::SendMessage(m_hWnd, LVM_MOVEITEMTOGROUP, nItem, nGroupID);
3870 int EnableGroupView(BOOL bEnable)
3872 ATLASSERT(::IsWindow(m_hWnd));
3873 return (
int)::SendMessage(m_hWnd, LVM_ENABLEGROUPVIEW, bEnable, 0L);
3876 int SortGroups(PFNLVGROUPCOMPARE pCompareFunc, LPVOID lpVoid = NULL)
3878 ATLASSERT(::IsWindow(m_hWnd));
3879 return (
int)::SendMessage(m_hWnd, LVM_SORTGROUPS, (WPARAM)pCompareFunc, (LPARAM)lpVoid);
3882 void InsertGroupSorted(PLVINSERTGROUPSORTED pInsertGroupSorted)
3884 ATLASSERT(::IsWindow(m_hWnd));
3885 ::SendMessage(m_hWnd, LVM_INSERTGROUPSORTED, (WPARAM)pInsertGroupSorted, 0L);
3888 void RemoveAllGroups()
3890 ATLASSERT(::IsWindow(m_hWnd));
3891 ::SendMessage(m_hWnd, LVM_REMOVEALLGROUPS, 0, 0L);
3894 BOOL HasGroup(
int nGroupID)
3896 ATLASSERT(::IsWindow(m_hWnd));
3897 return (BOOL)::SendMessage(m_hWnd, LVM_HASGROUP, nGroupID, 0L);
3900 BOOL InsertMarkHitTest(LPPOINT lpPoint, LPLVINSERTMARK pInsertMark)
const 3902 ATLASSERT(::IsWindow(m_hWnd));
3903 return (BOOL)::SendMessage(m_hWnd, LVM_INSERTMARKHITTEST, (WPARAM)lpPoint, (LPARAM)pInsertMark);
3906 BOOL SetInfoTip(PLVSETINFOTIP pSetInfoTip)
3908 ATLASSERT(::IsWindow(m_hWnd));
3909 return (BOOL)::SendMessage(m_hWnd, LVM_SETINFOTIP, 0, (LPARAM)pSetInfoTip);
3912 void CancelEditLabel()
3914 ATLASSERT(::IsWindow(m_hWnd));
3915 ::SendMessage(m_hWnd, LVM_CANCELEDITLABEL, 0, 0L);
3918 UINT MapIndexToID(
int nIndex)
const 3920 ATLASSERT(::IsWindow(m_hWnd));
3921 return (UINT)::SendMessage(m_hWnd, LVM_MAPINDEXTOID, nIndex, 0L);
3924 int MapIDToIndex(UINT uID)
const 3926 ATLASSERT(::IsWindow(m_hWnd));
3927 return (
int)::SendMessage(m_hWnd, LVM_MAPIDTOINDEX, uID, 0L);
3929 #endif // (_WIN32_WINNT >= 0x0501) 3931 #if (_WIN32_WINNT >= 0x0600) 3932 int HitTestEx(LPLVHITTESTINFO lpHitTestInfo)
const 3934 ATLASSERT(::IsWindow(m_hWnd));
3935 return (
int)::SendMessage(m_hWnd, LVM_HITTEST, (WPARAM)-1, (LPARAM)lpHitTestInfo);
3938 int HitTestEx(POINT pt, UINT* pFlags)
const 3940 ATLASSERT(::IsWindow(m_hWnd));
3941 LVHITTESTINFO hti = { 0 };
3943 int nRes = (int)::SendMessage(m_hWnd, LVM_HITTEST, (WPARAM)-1, (LPARAM)&hti);
3945 *pFlags = hti.flags;
3949 int SubItemHitTestEx(LPLVHITTESTINFO lpHitTestInfo)
const 3951 ATLASSERT(::IsWindow(m_hWnd));
3952 return (
int)::SendMessage(m_hWnd, LVM_SUBITEMHITTEST, (WPARAM)-1, (LPARAM)lpHitTestInfo);
3954 #endif // (_WIN32_WINNT >= 0x0600) 3957 BOOL SelectItem(
int nIndex)
3959 ATLASSERT(::IsWindow(m_hWnd));
3962 if((GetStyle() & LVS_SINGLESEL) == 0)
3963 SetItemState(-1, 0, LVIS_SELECTED);
3965 BOOL bRet = SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
3967 bRet = EnsureVisible(nIndex, FALSE);
3979 template <
class TBase>
3993 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
3994 DWORD dwStyle = 0, DWORD dwExStyle = 0,
3997 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
4001 static LPCTSTR GetWndClassName()
4006 UINT GetCount()
const 4008 ATLASSERT(::IsWindow(m_hWnd));
4009 return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0L);
4012 UINT GetIndent()
const 4014 ATLASSERT(::IsWindow(m_hWnd));
4015 return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0L);
4018 void SetIndent(UINT nIndent)
4020 ATLASSERT(::IsWindow(m_hWnd));
4021 ::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0L);
4024 CImageList GetImageList(
int nImageListType = TVSIL_NORMAL)
const 4026 ATLASSERT(::IsWindow(m_hWnd));
4027 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (WPARAM)nImageListType, 0L));
4030 CImageList SetImageList(HIMAGELIST hImageList,
int nImageListType = TVSIL_NORMAL)
4032 ATLASSERT(::IsWindow(m_hWnd));
4033 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (WPARAM)nImageListType, (LPARAM)hImageList));
4036 BOOL GetItem(LPTVITEM pItem)
const 4038 ATLASSERT(::IsWindow(m_hWnd));
4039 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem);
4042 BOOL SetItem(LPTVITEM pItem)
4044 ATLASSERT(::IsWindow(m_hWnd));
4045 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem);
4048 BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem,
int nImage,
4049 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam)
4051 ATLASSERT(::IsWindow(m_hWnd));
4052 TVITEM item = { 0 };
4055 item.pszText = (LPTSTR) lpszItem;
4056 item.iImage = nImage;
4057 item.iSelectedImage = nSelectedImage;
4058 item.state = nState;
4059 item.stateMask = nStateMask;
4060 item.lParam = lParam;
4061 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)&item);
4064 BOOL GetItemText(HTREEITEM hItem, LPTSTR lpstrText,
int nLen)
const 4066 ATLASSERT(::IsWindow(m_hWnd));
4067 ATLASSERT(lpstrText != NULL);
4069 TVITEM item = { 0 };
4071 item.mask = TVIF_TEXT;
4072 item.pszText = lpstrText;
4073 item.cchTextMax = nLen;
4075 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4079 BOOL GetItemText(HTREEITEM hItem, BSTR& bstrText)
const 4082 ATLASSERT(::IsWindow(m_hWnd));
4083 ATLASSERT(bstrText == NULL);
4084 TVITEM item = { 0 };
4086 item.mask = TVIF_TEXT;
4088 LPTSTR lpstrText = NULL;
4090 for(
int nLen = 256; ; nLen *= 2)
4092 ATLTRY(lpstrText =
new TCHAR[nLen]);
4093 if(lpstrText == NULL)
4095 lpstrText[0] = NULL;
4096 item.pszText = lpstrText;
4097 item.cchTextMax = nLen;
4098 bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4099 if(!bRet || (lstrlen(item.pszText) < nLen - 1))
4101 delete [] lpstrText;
4105 if(lpstrText != NULL)
4108 bstrText = ::SysAllocString(T2OLE(lpstrText));
4109 delete [] lpstrText;
4112 return (bstrText != NULL) ? TRUE : FALSE;
4114 #endif // !_ATL_NO_COM 4116 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4117 BOOL GetItemText(HTREEITEM hItem, _CSTRING_NS::CString& strText)
const 4119 ATLASSERT(::IsWindow(m_hWnd));
4120 TVITEM item = { 0 };
4122 item.mask = TVIF_TEXT;
4126 for(
int nLen = 256; ; nLen *= 2)
4128 item.pszText = strText.GetBufferSetLength(nLen);
4129 if(item.pszText == NULL)
4134 item.cchTextMax = nLen;
4135 bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4136 if(!bRet || (lstrlen(item.pszText) < nLen - 1))
4139 strText.ReleaseBuffer();
4142 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4144 BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
4146 ATLASSERT(::IsWindow(m_hWnd));
4147 return SetItem(hItem, TVIF_TEXT, lpszItem, 0, 0, 0, 0, NULL);
4150 BOOL GetItemImage(HTREEITEM hItem,
int& nImage,
int& nSelectedImage)
const 4152 ATLASSERT(::IsWindow(m_hWnd));
4153 TVITEM item = { 0 };
4155 item.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE;
4156 BOOL bRes = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4159 nImage = item.iImage;
4160 nSelectedImage = item.iSelectedImage;
4165 BOOL SetItemImage(HTREEITEM hItem,
int nImage,
int nSelectedImage)
4167 ATLASSERT(::IsWindow(m_hWnd));
4168 return SetItem(hItem, TVIF_IMAGE|TVIF_SELECTEDIMAGE, NULL, nImage, nSelectedImage, 0, 0, NULL);
4171 UINT GetItemState(HTREEITEM hItem, UINT nStateMask)
const 4173 ATLASSERT(::IsWindow(m_hWnd));
4174 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4175 return (((UINT)::SendMessage(m_hWnd, TVM_GETITEMSTATE, (WPARAM)hItem, (LPARAM)nStateMask)) & nStateMask);
4176 #else // !((_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)) 4177 TVITEM item = { 0 };
4179 item.mask = TVIF_STATE;
4181 item.stateMask = nStateMask;
4182 ::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4183 return (item.state & nStateMask);
4184 #endif // !((_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)) 4187 BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
4189 ATLASSERT(::IsWindow(m_hWnd));
4190 return SetItem(hItem, TVIF_STATE, NULL, 0, 0, nState, nStateMask, NULL);
4193 DWORD_PTR GetItemData(HTREEITEM hItem)
const 4195 ATLASSERT(::IsWindow(m_hWnd));
4196 TVITEM item = { 0 };
4198 item.mask = TVIF_PARAM;
4199 BOOL bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4200 return (DWORD_PTR)(bRet ? item.lParam : NULL);
4203 BOOL SetItemData(HTREEITEM hItem, DWORD_PTR dwData)
4205 ATLASSERT(::IsWindow(m_hWnd));
4206 return SetItem(hItem, TVIF_PARAM, NULL, 0, 0, 0, 0, (LPARAM)dwData);
4209 CEdit GetEditControl()
const 4211 ATLASSERT(::IsWindow(m_hWnd));
4212 return CEdit((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0L));
4215 UINT GetVisibleCount()
const 4217 ATLASSERT(::IsWindow(m_hWnd));
4218 return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0L);
4221 BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly)
const 4223 ATLASSERT(::IsWindow(m_hWnd));
4224 *(HTREEITEM*)lpRect = hItem;
4225 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMRECT, (WPARAM)bTextOnly, (LPARAM)lpRect);
4228 BOOL ItemHasChildren(HTREEITEM hItem)
const 4230 ATLASSERT(::IsWindow(m_hWnd));
4231 TVITEM item = { 0 };
4233 item.mask = TVIF_CHILDREN;
4234 ::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4235 return item.cChildren;
4239 CToolTipCtrl GetToolTips()
const 4241 ATLASSERT(::IsWindow(m_hWnd));
4242 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TVM_GETTOOLTIPS, 0, 0L));
4245 CToolTipCtrl SetToolTips(HWND hWndTT)
4247 ATLASSERT(::IsWindow(m_hWnd));
4248 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TVM_SETTOOLTIPS, (WPARAM)hWndTT, 0L));
4250 #endif // !_WIN32_WCE 4252 int GetISearchString(LPTSTR lpstr)
const 4254 ATLASSERT(::IsWindow(m_hWnd));
4255 return (
int)::SendMessage(m_hWnd, TVM_GETISEARCHSTRING, 0, (LPARAM)lpstr);
4259 BOOL GetCheckState(HTREEITEM hItem)
const 4261 ATLASSERT(::IsWindow(m_hWnd));
4262 ATLASSERT((GetStyle() & TVS_CHECKBOXES) != 0);
4263 UINT uRet = GetItemState(hItem, TVIS_STATEIMAGEMASK);
4264 return (uRet >> 12) - 1;
4267 BOOL SetCheckState(HTREEITEM hItem, BOOL bCheck)
4269 int nCheck = bCheck ? 2 : 1;
4270 return SetItemState(hItem, INDEXTOSTATEIMAGEMASK(nCheck), TVIS_STATEIMAGEMASK);
4273 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4274 COLORREF GetBkColor()
const 4276 ATLASSERT(::IsWindow(m_hWnd));
4277 return (COLORREF)::SendMessage(m_hWnd, TVM_GETBKCOLOR, 0, 0L);
4280 COLORREF SetBkColor(COLORREF clr)
4282 ATLASSERT(::IsWindow(m_hWnd));
4283 return (COLORREF)::SendMessage(m_hWnd, TVM_SETBKCOLOR, 0, (LPARAM)clr);
4286 COLORREF GetInsertMarkColor()
const 4288 ATLASSERT(::IsWindow(m_hWnd));
4289 return (COLORREF)::SendMessage(m_hWnd, TVM_GETINSERTMARKCOLOR, 0, 0L);
4292 COLORREF SetInsertMarkColor(COLORREF clr)
4294 ATLASSERT(::IsWindow(m_hWnd));
4295 return (COLORREF)::SendMessage(m_hWnd, TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr);
4298 int GetItemHeight()
const 4300 ATLASSERT(::IsWindow(m_hWnd));
4301 return (
int)::SendMessage(m_hWnd, TVM_GETITEMHEIGHT, 0, 0L);
4304 int SetItemHeight(
int cyHeight)
4306 ATLASSERT(::IsWindow(m_hWnd));
4307 return (
int)::SendMessage(m_hWnd, TVM_SETITEMHEIGHT, cyHeight, 0L);
4310 int GetScrollTime()
const 4312 ATLASSERT(::IsWindow(m_hWnd));
4313 return (
int)::SendMessage(m_hWnd, TVM_GETSCROLLTIME, 0, 0L);
4316 int SetScrollTime(
int nScrollTime)
4318 ATLASSERT(::IsWindow(m_hWnd));
4319 return (
int)::SendMessage(m_hWnd, TVM_SETSCROLLTIME, nScrollTime, 0L);
4322 COLORREF GetTextColor()
const 4324 ATLASSERT(::IsWindow(m_hWnd));
4325 return (COLORREF)::SendMessage(m_hWnd, TVM_GETTEXTCOLOR, 0, 0L);
4328 COLORREF SetTextColor(COLORREF clr)
4330 ATLASSERT(::IsWindow(m_hWnd));
4331 return (COLORREF)::SendMessage(m_hWnd, TVM_SETTEXTCOLOR, 0, (LPARAM)clr);
4334 BOOL GetUnicodeFormat()
const 4336 ATLASSERT(::IsWindow(m_hWnd));
4337 return (BOOL)::SendMessage(m_hWnd, TVM_GETUNICODEFORMAT, 0, 0L);
4340 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
4342 ATLASSERT(::IsWindow(m_hWnd));
4343 return (BOOL)::SendMessage(m_hWnd, TVM_SETUNICODEFORMAT, bUnicode, 0L);
4345 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4347 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4348 COLORREF GetLineColor()
const 4350 ATLASSERT(::IsWindow(m_hWnd));
4351 return (COLORREF)::SendMessage(m_hWnd, TVM_GETLINECOLOR, 0, 0L);
4354 COLORREF SetLineColor(COLORREF clrNew )
4356 ATLASSERT(::IsWindow(m_hWnd));
4357 return (COLORREF)::SendMessage(m_hWnd, TVM_SETLINECOLOR, 0, (LPARAM)clrNew);
4359 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4361 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4362 BOOL GetItem(LPTVITEMEX pItem)
const 4364 ATLASSERT(::IsWindow(m_hWnd));
4365 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem);
4368 BOOL SetItem(LPTVITEMEX pItem)
4370 ATLASSERT(::IsWindow(m_hWnd));
4371 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem);
4373 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4375 DWORD GetExtendedStyle()
const 4377 #ifndef TVM_GETEXTENDEDSTYLE 4378 const UINT TVM_GETEXTENDEDSTYLE = (TV_FIRST + 45);
4380 ATLASSERT(::IsWindow(m_hWnd));
4381 return (DWORD)::SendMessage(m_hWnd, TVM_GETEXTENDEDSTYLE, 0, 0L);
4384 DWORD SetExtendedStyle(DWORD dwStyle, DWORD dwMask)
4386 #ifndef TVM_SETEXTENDEDSTYLE 4387 const UINT TVM_SETEXTENDEDSTYLE = (TV_FIRST + 44);
4389 ATLASSERT(::IsWindow(m_hWnd));
4390 return (DWORD)::SendMessage(m_hWnd, TVM_SETEXTENDEDSTYLE, dwMask, dwStyle);
4393 #if (_WIN32_WINNT >= 0x0600) 4394 BOOL SetAutoScrollInfo(UINT uPixPerSec, UINT uUpdateTime)
4396 ATLASSERT(::IsWindow(m_hWnd));
4397 return (BOOL)::SendMessage(m_hWnd, TVM_SETAUTOSCROLLINFO, (WPARAM)uPixPerSec, (LPARAM)uUpdateTime);
4400 DWORD GetSelectedCount()
const 4402 ATLASSERT(::IsWindow(m_hWnd));
4403 return (DWORD)::SendMessage(m_hWnd, TVM_GETSELECTEDCOUNT, 0, 0L);
4406 BOOL GetItemPartRect(HTREEITEM hItem, TVITEMPART partID, LPRECT lpRect)
const 4408 ATLASSERT(::IsWindow(m_hWnd));
4409 TVGETITEMPARTRECTINFO gipri = { hItem, lpRect, partID };
4410 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMPARTRECT, 0, (LPARAM)&gipri);
4412 #endif // (_WIN32_WINNT >= 0x0600) 4415 HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct)
4417 ATLASSERT(::IsWindow(m_hWnd));
4418 return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct);
4421 HTREEITEM InsertItem(LPCTSTR lpszItem,
int nImage,
4422 int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
4424 ATLASSERT(::IsWindow(m_hWnd));
4425 return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter);
4428 HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
4430 ATLASSERT(::IsWindow(m_hWnd));
4431 return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter);
4434 HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
4435 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
4436 HTREEITEM hParent, HTREEITEM hInsertAfter)
4438 ATLASSERT(::IsWindow(m_hWnd));
4439 TVINSERTSTRUCT tvis = { 0 };
4440 tvis.hParent = hParent;
4441 tvis.hInsertAfter = hInsertAfter;
4442 tvis.item.mask = nMask;
4443 tvis.item.pszText = (LPTSTR) lpszItem;
4444 tvis.item.iImage = nImage;
4445 tvis.item.iSelectedImage = nSelectedImage;
4446 tvis.item.state = nState;
4447 tvis.item.stateMask = nStateMask;
4448 tvis.item.lParam = lParam;
4449 return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);
4452 BOOL DeleteItem(HTREEITEM hItem)
4454 ATLASSERT(::IsWindow(m_hWnd));
4455 return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem);
4458 BOOL DeleteAllItems()
4460 ATLASSERT(::IsWindow(m_hWnd));
4461 return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT);
4464 BOOL Expand(HTREEITEM hItem, UINT nCode = TVE_EXPAND)
4466 ATLASSERT(::IsWindow(m_hWnd));
4467 return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem);
4470 HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode)
const 4472 ATLASSERT(::IsWindow(m_hWnd));
4473 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem);
4476 HTREEITEM GetChildItem(HTREEITEM hItem)
const 4478 ATLASSERT(::IsWindow(m_hWnd));
4479 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
4482 HTREEITEM GetNextSiblingItem(HTREEITEM hItem)
const 4484 ATLASSERT(::IsWindow(m_hWnd));
4485 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
4488 HTREEITEM GetPrevSiblingItem(HTREEITEM hItem)
const 4490 ATLASSERT(::IsWindow(m_hWnd));
4491 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem);
4494 HTREEITEM GetParentItem(HTREEITEM hItem)
const 4496 ATLASSERT(::IsWindow(m_hWnd));
4497 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
4500 HTREEITEM GetFirstVisibleItem()
const 4502 ATLASSERT(::IsWindow(m_hWnd));
4503 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0L);
4506 HTREEITEM GetNextVisibleItem(HTREEITEM hItem)
const 4508 ATLASSERT(::IsWindow(m_hWnd));
4509 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem);
4512 HTREEITEM GetPrevVisibleItem(HTREEITEM hItem)
const 4514 ATLASSERT(::IsWindow(m_hWnd));
4515 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem);
4518 HTREEITEM GetSelectedItem()
const 4520 ATLASSERT(::IsWindow(m_hWnd));
4521 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0L);
4524 HTREEITEM GetDropHilightItem()
const 4526 ATLASSERT(::IsWindow(m_hWnd));
4527 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0L);
4530 HTREEITEM GetRootItem()
const 4532 ATLASSERT(::IsWindow(m_hWnd));
4533 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0L);
4536 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4537 HTREEITEM GetLastVisibleItem()
const 4539 ATLASSERT(::IsWindow(m_hWnd));
4540 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0L);
4542 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4544 #if (_WIN32_IE >= 0x0600) 4545 HTREEITEM GetNextSelectedItem()
const 4547 #ifndef TVGN_NEXTSELECTED 4548 const WORD TVGN_NEXTSELECTED = 0x000B;
4550 ATLASSERT(::IsWindow(m_hWnd));
4551 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTSELECTED, 0L);
4553 #endif // (_WIN32_IE >= 0x0600) 4555 BOOL Select(HTREEITEM hItem, UINT nCode)
4557 ATLASSERT(::IsWindow(m_hWnd));
4558 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem);
4561 BOOL SelectItem(HTREEITEM hItem)
4563 ATLASSERT(::IsWindow(m_hWnd));
4564 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem);
4567 BOOL SelectDropTarget(HTREEITEM hItem)
4569 ATLASSERT(::IsWindow(m_hWnd));
4570 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem);
4573 BOOL SelectSetFirstVisible(HTREEITEM hItem)
4575 ATLASSERT(::IsWindow(m_hWnd));
4576 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, (LPARAM)hItem);
4579 CEdit EditLabel(HTREEITEM hItem)
4581 ATLASSERT(::IsWindow(m_hWnd));
4582 return CEdit((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem));
4585 BOOL EndEditLabelNow(BOOL bCancel)
4587 ATLASSERT(::IsWindow(m_hWnd));
4588 return (BOOL)::SendMessage(m_hWnd, TVM_ENDEDITLABELNOW, bCancel, 0L);
4591 HTREEITEM HitTest(TVHITTESTINFO* pHitTestInfo)
const 4593 ATLASSERT(::IsWindow(m_hWnd));
4594 return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo);
4597 HTREEITEM HitTest(POINT pt, UINT* pFlags)
const 4599 ATLASSERT(::IsWindow(m_hWnd));
4600 TVHITTESTINFO hti = { 0 };
4602 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)&hti);
4604 *pFlags = hti.flags;
4608 BOOL SortChildren(HTREEITEM hItem, BOOL bRecurse = FALSE)
4610 ATLASSERT(::IsWindow(m_hWnd));
4611 return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, (WPARAM)bRecurse, (LPARAM)hItem);
4614 BOOL EnsureVisible(HTREEITEM hItem)
4616 ATLASSERT(::IsWindow(m_hWnd));
4617 return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem);
4620 BOOL SortChildrenCB(LPTVSORTCB pSort, BOOL bRecurse = FALSE)
4622 ATLASSERT(::IsWindow(m_hWnd));
4623 return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, (WPARAM)bRecurse, (LPARAM)pSort);
4626 CImageList RemoveImageList(
int nImageList)
4628 ATLASSERT(::IsWindow(m_hWnd));
4629 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (WPARAM)nImageList, NULL));
4632 CImageList CreateDragImage(HTREEITEM hItem)
4634 ATLASSERT(::IsWindow(m_hWnd));
4635 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItem));
4638 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4639 BOOL SetInsertMark(HTREEITEM hTreeItem, BOOL bAfter)
4641 ATLASSERT(::IsWindow(m_hWnd));
4642 return (BOOL)::SendMessage(m_hWnd, TVM_SETINSERTMARK, bAfter, (LPARAM)hTreeItem);
4645 BOOL RemoveInsertMark()
4647 ATLASSERT(::IsWindow(m_hWnd));
4648 return (BOOL)::SendMessage(m_hWnd, TVM_SETINSERTMARK, 0, 0L);
4650 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4652 #if (_WIN32_WINNT >= 0x0501) 4653 HTREEITEM MapAccIDToHTREEITEM(UINT uID)
const 4655 ATLASSERT(::IsWindow(m_hWnd));
4656 return (HTREEITEM)::SendMessage(m_hWnd, TVM_MAPACCIDTOHTREEITEM, uID, 0L);
4659 UINT MapHTREEITEMToAccID(HTREEITEM hTreeItem)
const 4661 ATLASSERT(::IsWindow(m_hWnd));
4662 return (UINT)::SendMessage(m_hWnd, TVM_MAPHTREEITEMTOACCID, (WPARAM)hTreeItem, 0L);
4664 #endif // (_WIN32_WINNT >= 0x0501) 4666 #if (_WIN32_WINNT >= 0x0600) 4667 void ShowInfoTip(HTREEITEM hItem)
4669 ATLASSERT(::IsWindow(m_hWnd));
4670 ::SendMessage(m_hWnd, TVM_SHOWINFOTIP, 0, (LPARAM)hItem);
4672 #endif // (_WIN32_WINNT >= 0x0600) 4685 template <
class TBase>
4689 HTREEITEM m_hTreeItem;
4701 operator HTREEITEM() {
return m_hTreeItem; }
4705 m_hTreeItem = itemSrc.m_hTreeItem;
4706 m_pTreeView = itemSrc.m_pTreeView;
4713 BOOL operator !()
const {
return m_hTreeItem == NULL; }
4715 BOOL IsNull()
const {
return m_hTreeItem == NULL; }
4717 BOOL GetRect(LPRECT lpRect, BOOL bTextOnly)
const;
4718 BOOL GetText(LPTSTR lpstrText,
int nLen)
const;
4720 BOOL GetText(BSTR& bstrText)
const;
4721 #endif // !_ATL_NO_COM 4722 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4723 BOOL GetText(_CSTRING_NS::CString& strText)
const;
4724 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4725 BOOL SetText(LPCTSTR lpszItem);
4726 BOOL GetImage(
int& nImage,
int& nSelectedImage)
const;
4727 BOOL SetImage(
int nImage,
int nSelectedImage);
4728 UINT GetState(UINT nStateMask)
const;
4729 BOOL SetState(UINT nState, UINT nStateMask);
4730 DWORD_PTR GetData()
const;
4731 BOOL SetData(DWORD_PTR dwData);
4732 BOOL SetItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
4735 CTreeItemT<TBase> InsertAfter(LPCTSTR lpstrItem, HTREEITEM hItemAfter,
int nImageIndex)
4737 return _Insert(lpstrItem, nImageIndex, hItemAfter);
4742 return _Insert(lpstrItem, nImageIndex, TVI_FIRST);
4747 return _Insert(lpstrItem, nImageIndex, TVI_LAST);
4761 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4763 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4764 #if (_WIN32_IE >= 0x0600) 4766 #endif // (_WIN32_IE >= 0x0600) 4767 BOOL HasChildren()
const;
4769 BOOL Expand(UINT nCode = TVE_EXPAND);
4770 BOOL Select(UINT nCode);
4772 BOOL SelectDropTarget();
4773 BOOL SelectSetFirstVisible();
4775 HIMAGELIST CreateDragImage();
4776 BOOL SortChildren(BOOL bRecurse = FALSE);
4777 BOOL EnsureVisible();
4778 CTreeItemT<TBase> _Insert(LPCTSTR lpstrItem,
int nImageIndex, HTREEITEM hItemAfter);
4779 int GetImageIndex()
const;
4780 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4781 BOOL SetInsertMark(BOOL bAfter);
4782 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4783 #if (_WIN32_WINNT >= 0x0501) 4784 UINT MapHTREEITEMToAccID()
const;
4785 #endif // (_WIN32_WINNT >= 0x0501) 4786 #if (_WIN32_WINNT >= 0x0600) 4788 BOOL GetPartRect(TVITEMPART partID, LPRECT lpRect)
const;
4789 #endif // (_WIN32_WINNT >= 0x0600) 4795 template <
class TBase>
4812 ATLASSERT(::IsWindow(m_hWnd));
4813 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct);
4818 int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
4820 ATLASSERT(::IsWindow(m_hWnd));
4821 return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter);
4824 CTreeItemT<TBase> InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
4826 ATLASSERT(::IsWindow(m_hWnd));
4827 return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter);
4832 ATLASSERT(::IsWindow(m_hWnd));
4833 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem);
4839 ATLASSERT(::IsWindow(m_hWnd));
4840 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
4846 ATLASSERT(::IsWindow(m_hWnd));
4847 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
4853 ATLASSERT(::IsWindow(m_hWnd));
4854 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem);
4860 ATLASSERT(::IsWindow(m_hWnd));
4861 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
4867 ATLASSERT(::IsWindow(m_hWnd));
4868 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0L);
4874 ATLASSERT(::IsWindow(m_hWnd));
4875 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem);
4881 ATLASSERT(::IsWindow(m_hWnd));
4882 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem);
4888 ATLASSERT(::IsWindow(m_hWnd));
4889 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0L);
4895 ATLASSERT(::IsWindow(m_hWnd));
4896 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0L);
4902 ATLASSERT(::IsWindow(m_hWnd));
4903 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0L);
4907 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4910 ATLASSERT(::IsWindow(m_hWnd));
4911 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0L);
4914 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4916 #if (_WIN32_IE >= 0x0600) 4919 #ifndef TVGN_NEXTSELECTED 4920 const WORD TVGN_NEXTSELECTED = 0x000B;
4922 ATLASSERT(::IsWindow(m_hWnd));
4923 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTSELECTED, 0L);
4926 #endif // (_WIN32_IE >= 0x0600) 4930 ATLASSERT(::IsWindow(m_hWnd));
4931 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo);
4936 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
4937 HTREEITEM hParent, HTREEITEM hInsertAfter)
4939 ATLASSERT(::IsWindow(m_hWnd));
4940 TVINSERTSTRUCT tvis = { 0 };
4941 tvis.hParent = hParent;
4942 tvis.hInsertAfter = hInsertAfter;
4943 tvis.item.mask = nMask;
4944 tvis.item.pszText = (LPTSTR) lpszItem;
4945 tvis.item.iImage = nImage;
4946 tvis.item.iSelectedImage = nSelectedImage;
4947 tvis.item.state = nState;
4948 tvis.item.stateMask = nStateMask;
4949 tvis.item.lParam = lParam;
4950 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);
4956 ATLASSERT(::IsWindow(m_hWnd));
4957 TVHITTESTINFO hti = { 0 };
4959 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)&hti);
4961 *pFlags = hti.flags;
4965 #if (_WIN32_WINNT >= 0x0501) 4968 ATLASSERT(::IsWindow(m_hWnd));
4969 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_MAPACCIDTOHTREEITEM, uID, 0L);
4972 #endif // (_WIN32_WINNT >= 0x0501) 4979 template <
class TBase>
4982 ATLASSERT(m_pTreeView != NULL);
4983 return m_pTreeView->GetItemRect(m_hTreeItem,lpRect,bTextOnly);
4986 template <
class TBase>
4989 ATLASSERT(m_pTreeView != NULL);
4990 return m_pTreeView->GetNextItem(m_hTreeItem,nCode);
4993 template <
class TBase>
4996 ATLASSERT(m_pTreeView != NULL);
4997 return m_pTreeView->GetChildItem(m_hTreeItem);
5000 template <
class TBase>
5003 ATLASSERT(m_pTreeView != NULL);
5004 return m_pTreeView->GetNextSiblingItem(m_hTreeItem);
5007 template <
class TBase>
5010 ATLASSERT(m_pTreeView != NULL);
5011 return m_pTreeView->GetPrevSiblingItem(m_hTreeItem);
5014 template <
class TBase>
5017 ATLASSERT(m_pTreeView != NULL);
5018 return m_pTreeView->GetParentItem(m_hTreeItem);
5021 template <
class TBase>
5024 ATLASSERT(m_pTreeView != NULL);
5025 return m_pTreeView->GetFirstVisibleItem();
5028 template <
class TBase>
5031 ATLASSERT(m_pTreeView != NULL);
5032 return m_pTreeView->GetNextVisibleItem(m_hTreeItem);
5035 template <
class TBase>
5038 ATLASSERT(m_pTreeView != NULL);
5039 return m_pTreeView->GetPrevVisibleItem(m_hTreeItem);
5042 template <
class TBase>
5045 ATLASSERT(m_pTreeView != NULL);
5046 return m_pTreeView->GetSelectedItem();
5049 template <
class TBase>
5052 ATLASSERT(m_pTreeView != NULL);
5053 return m_pTreeView->GetDropHilightItem();
5056 template <
class TBase>
5059 ATLASSERT(m_pTreeView != NULL);
5060 return m_pTreeView->GetRootItem();
5063 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 5064 template <
class TBase>
5067 ATLASSERT(m_pTreeView != NULL);
5068 return m_pTreeView->GetLastVisibleItem();
5070 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 5072 #if (_WIN32_IE >= 0x0600) 5073 template <
class TBase>
5076 ATLASSERT(m_pTreeView != NULL);
5077 return m_pTreeView->GetNextSelectedItem();
5079 #endif // (_WIN32_IE >= 0x0600) 5081 template <
class TBase>
5084 ATLASSERT(m_pTreeView != NULL);
5085 return m_pTreeView->GetItemText(m_hTreeItem, lpstrText, nLen);
5090 template <
class TBase>
5093 ATLASSERT(m_pTreeView != NULL);
5094 return m_pTreeView->GetItemText(m_hTreeItem, bstrText);
5096 #endif // _OLEAUTO_H_ 5097 #endif // !_ATL_NO_COM 5099 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5100 template <
class TBase>
5103 ATLASSERT(m_pTreeView != NULL);
5104 return m_pTreeView->GetItemText(m_hTreeItem, strText);
5106 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5108 template <
class TBase>
5111 ATLASSERT(m_pTreeView != NULL);
5112 return m_pTreeView->GetItemImage(m_hTreeItem,nImage,nSelectedImage);
5115 template <
class TBase>
5118 ATLASSERT(m_pTreeView != NULL);
5119 return m_pTreeView->GetItemState(m_hTreeItem,nStateMask);
5122 template <
class TBase>
5125 ATLASSERT(m_pTreeView != NULL);
5126 return m_pTreeView->GetItemData(m_hTreeItem);
5129 template <
class TBase>
5131 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam)
5133 ATLASSERT(m_pTreeView != NULL);
5134 return m_pTreeView->SetItem(m_hTreeItem, nMask, lpszItem, nImage, nSelectedImage, nState, nStateMask, lParam);
5137 template <
class TBase>
5140 ATLASSERT(m_pTreeView != NULL);
5141 return m_pTreeView->SetItemText(m_hTreeItem,lpszItem);
5144 template <
class TBase>
5147 ATLASSERT(m_pTreeView != NULL);
5148 return m_pTreeView->SetItemImage(m_hTreeItem,nImage,nSelectedImage);
5151 template <
class TBase>
5154 ATLASSERT(m_pTreeView != NULL);
5155 return m_pTreeView->SetItemState(m_hTreeItem,nState,nStateMask);
5158 template <
class TBase>
5161 ATLASSERT(m_pTreeView != NULL);
5162 return m_pTreeView->SetItemData(m_hTreeItem,dwData);
5165 template <
class TBase>
5168 ATLASSERT(m_pTreeView != NULL);
5169 return m_pTreeView->ItemHasChildren(m_hTreeItem);
5172 template <
class TBase>
5175 ATLASSERT(m_pTreeView != NULL);
5176 return m_pTreeView->DeleteItem(m_hTreeItem);
5179 template <
class TBase>
5182 ATLASSERT(m_pTreeView != NULL);
5183 return m_pTreeView->Expand(m_hTreeItem,nCode);
5186 template <
class TBase>
5189 ATLASSERT(m_pTreeView != NULL);
5190 return m_pTreeView->Select(m_hTreeItem,nCode);
5193 template <
class TBase>
5196 ATLASSERT(m_pTreeView != NULL);
5197 return m_pTreeView->SelectItem(m_hTreeItem);
5200 template <
class TBase>
5203 ATLASSERT(m_pTreeView != NULL);
5204 return m_pTreeView->SelectDropTarget(m_hTreeItem);
5207 template <
class TBase>
5210 ATLASSERT(m_pTreeView != NULL);
5211 return m_pTreeView->SelectSetFirstVisible(m_hTreeItem);
5214 template <
class TBase>
5217 ATLASSERT(m_pTreeView != NULL);
5218 return m_pTreeView->EditLabel(m_hTreeItem);
5221 template <
class TBase>
5224 ATLASSERT(m_pTreeView != NULL);
5225 return m_pTreeView->CreateDragImage(m_hTreeItem);
5228 template <
class TBase>
5231 ATLASSERT(m_pTreeView != NULL);
5232 return m_pTreeView->SortChildren(m_hTreeItem, bRecurse);
5235 template <
class TBase>
5238 ATLASSERT(m_pTreeView != NULL);
5239 return m_pTreeView->EnsureVisible(m_hTreeItem);
5242 template <
class TBase>
5245 ATLASSERT(m_pTreeView != NULL);
5246 TVINSERTSTRUCT ins = { 0 };
5247 ins.hParent = m_hTreeItem;
5248 ins.hInsertAfter = hItemAfter;
5249 ins.item.mask = TVIF_TEXT;
5250 ins.item.pszText = (LPTSTR)lpstrItem;
5251 if(nImageIndex != -1)
5253 ins.item.mask |= TVIF_IMAGE | TVIF_SELECTEDIMAGE;
5254 ins.item.iImage = nImageIndex;
5255 ins.item.iSelectedImage = nImageIndex;
5260 template <
class TBase>
5263 ATLASSERT(m_pTreeView != NULL);
5264 TVITEM item = { 0 };
5265 item.mask = TVIF_HANDLE | TVIF_IMAGE;
5266 item.hItem = m_hTreeItem;
5267 m_pTreeView->GetItem(&item);
5271 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 5272 template <
class TBase>
5275 ATLASSERT(m_pTreeView != NULL);
5276 return m_pTreeView->SetInsertMark(m_hTreeItem, bAfter);
5278 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 5280 #if (_WIN32_WINNT >= 0x0501) 5281 template <
class TBase>
5284 ATLASSERT(m_pTreeView != NULL);
5285 return m_pTreeView->MapHTREEITEMToAccID(m_hTreeItem);
5287 #endif // (_WIN32_WINNT >= 0x0501) 5289 #if (_WIN32_WINNT >= 0x0600) 5290 template <
class TBase>
5293 ATLASSERT(m_pTreeView != NULL);
5294 m_pTreeView->ShowInfoTip(m_hTreeItem);
5297 template <
class TBase>
5300 ATLASSERT(m_pTreeView != NULL);
5301 return m_pTreeView->GetItemPartRect(m_hTreeItem, partID, lpRect);
5303 #endif // (_WIN32_WINNT >= 0x0600) 5309 template <
class TBase>
5323 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
5324 DWORD dwStyle = 0, DWORD dwExStyle = 0,
5327 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
5331 static LPCTSTR GetWndClassName()
5333 return TOOLBARCLASSNAME;
5336 BOOL IsButtonEnabled(
int nID)
const 5338 ATLASSERT(::IsWindow(m_hWnd));
5339 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0L);
5342 BOOL IsButtonChecked(
int nID)
const 5344 ATLASSERT(::IsWindow(m_hWnd));
5345 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0L);
5348 BOOL IsButtonPressed(
int nID)
const 5350 ATLASSERT(::IsWindow(m_hWnd));
5351 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0L);
5354 BOOL IsButtonHidden(
int nID)
const 5356 ATLASSERT(::IsWindow(m_hWnd));
5357 return(BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0L);
5360 BOOL IsButtonIndeterminate(
int nID)
const 5362 ATLASSERT(::IsWindow(m_hWnd));
5363 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0L);
5366 int GetState(
int nID)
const 5368 ATLASSERT(::IsWindow(m_hWnd));
5369 return (
int)::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L);
5372 BOOL SetState(
int nID, UINT nState)
5374 ATLASSERT(::IsWindow(m_hWnd));
5375 return (BOOL)::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0));
5378 BOOL GetButton(
int nIndex, LPTBBUTTON lpButton)
const 5380 ATLASSERT(::IsWindow(m_hWnd));
5381 return (BOOL)::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton);
5384 int GetButtonCount()
const 5386 ATLASSERT(::IsWindow(m_hWnd));
5387 return (
int)::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L);
5390 BOOL GetItemRect(
int nIndex, LPRECT lpRect)
const 5392 ATLASSERT(::IsWindow(m_hWnd));
5393 return (BOOL)::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect);
5396 void SetButtonStructSize(
int nSize =
sizeof(TBBUTTON))
5398 ATLASSERT(::IsWindow(m_hWnd));
5399 ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L);
5402 BOOL SetButtonSize(SIZE size)
5404 ATLASSERT(::IsWindow(m_hWnd));
5405 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy));
5408 BOOL SetButtonSize(
int cx,
int cy)
5410 ATLASSERT(::IsWindow(m_hWnd));
5411 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(cx, cy));
5414 BOOL SetBitmapSize(SIZE size)
5416 ATLASSERT(::IsWindow(m_hWnd));
5417 return (BOOL)::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy));
5420 BOOL SetBitmapSize(
int cx,
int cy)
5422 ATLASSERT(::IsWindow(m_hWnd));
5423 return (BOOL)::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(cx, cy));
5427 CToolTipCtrl GetToolTips()
const 5429 ATLASSERT(::IsWindow(m_hWnd));
5430 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L));
5433 void SetToolTips(HWND hWndToolTip)
5435 ATLASSERT(::IsWindow(m_hWnd));
5436 ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)hWndToolTip, 0L);
5438 #endif // !_WIN32_WCE 5440 void SetNotifyWnd(HWND hWnd)
5442 ATLASSERT(::IsWindow(m_hWnd));
5443 ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)hWnd, 0L);
5448 ATLASSERT(::IsWindow(m_hWnd));
5449 return (
int)::SendMessage(m_hWnd, TB_GETROWS, 0, 0L);
5452 void SetRows(
int nRows, BOOL bLarger, LPRECT lpRect)
5454 ATLASSERT(::IsWindow(m_hWnd));
5455 ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect);
5458 BOOL SetCmdID(
int nIndex, UINT nID)
5460 ATLASSERT(::IsWindow(m_hWnd));
5461 return (BOOL)::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID);
5464 DWORD GetBitmapFlags()
const 5466 ATLASSERT(::IsWindow(m_hWnd));
5467 return (DWORD)::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L);
5470 int GetBitmap(
int nID)
const 5472 ATLASSERT(::IsWindow(m_hWnd));
5473 return (
int)::SendMessage(m_hWnd, TB_GETBITMAP, nID, 0L);
5476 int GetButtonText(
int nID, LPTSTR lpstrText)
const 5478 ATLASSERT(::IsWindow(m_hWnd));
5479 return (
int)::SendMessage(m_hWnd, TB_GETBUTTONTEXT, nID, (LPARAM)lpstrText);
5483 CImageList GetImageList(
int nIndex = 0)
const 5485 ATLASSERT(::IsWindow(m_hWnd));
5486 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETIMAGELIST, nIndex, 0L));
5490 CImageList SetImageList(HIMAGELIST hImageList,
int nIndex = 0)
5492 ATLASSERT(::IsWindow(m_hWnd));
5493 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETIMAGELIST, nIndex, (LPARAM)hImageList));
5497 CImageList GetDisabledImageList(
int nIndex = 0)
const 5499 ATLASSERT(::IsWindow(m_hWnd));
5500 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETDISABLEDIMAGELIST, nIndex, 0L));
5504 CImageList SetDisabledImageList(HIMAGELIST hImageList,
int nIndex = 0)
5506 ATLASSERT(::IsWindow(m_hWnd));
5507 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETDISABLEDIMAGELIST, nIndex, (LPARAM)hImageList));
5512 CImageList GetHotImageList(
int nIndex = 0)
const 5514 ATLASSERT(::IsWindow(m_hWnd));
5515 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETHOTIMAGELIST, nIndex, 0L));
5519 CImageList SetHotImageList(HIMAGELIST hImageList,
int nIndex = 0)
5521 ATLASSERT(::IsWindow(m_hWnd));
5522 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETHOTIMAGELIST, nIndex, (LPARAM)hImageList));
5524 #endif // !_WIN32_WCE 5526 DWORD GetStyle()
const 5528 ATLASSERT(::IsWindow(m_hWnd));
5529 return (DWORD)::SendMessage(m_hWnd, TB_GETSTYLE, 0, 0L);
5532 void SetStyle(DWORD dwStyle)
5534 ATLASSERT(::IsWindow(m_hWnd));
5535 ::SendMessage(m_hWnd, TB_SETSTYLE, 0, dwStyle);
5538 DWORD GetButtonSize()
const 5540 ATLASSERT(::IsWindow(m_hWnd));
5541 return (DWORD)::SendMessage(m_hWnd, TB_GETBUTTONSIZE, 0, 0L);
5544 void GetButtonSize(SIZE& size)
const 5546 ATLASSERT(::IsWindow(m_hWnd));
5547 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_GETBUTTONSIZE, 0, 0L);
5548 size.cx = LOWORD(dwRet);
5549 size.cy = HIWORD(dwRet);
5552 BOOL GetRect(
int nID, LPRECT lpRect)
const 5554 ATLASSERT(::IsWindow(m_hWnd));
5555 return (BOOL)::SendMessage(m_hWnd, TB_GETRECT, nID, (LPARAM)lpRect);
5558 int GetTextRows()
const 5560 ATLASSERT(::IsWindow(m_hWnd));
5561 return (
int)::SendMessage(m_hWnd, TB_GETTEXTROWS, 0, 0L);
5564 BOOL SetButtonWidth(
int cxMin,
int cxMax)
5566 ATLASSERT(::IsWindow(m_hWnd));
5567 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONWIDTH, 0, MAKELPARAM(cxMin, cxMax));
5570 BOOL SetIndent(
int nIndent)
5572 ATLASSERT(::IsWindow(m_hWnd));
5573 return (BOOL)::SendMessage(m_hWnd, TB_SETINDENT, nIndent, 0L);
5576 BOOL SetMaxTextRows(
int nMaxTextRows)
5578 ATLASSERT(::IsWindow(m_hWnd));
5579 return (BOOL)::SendMessage(m_hWnd, TB_SETMAXTEXTROWS, nMaxTextRows, 0L);
5582 #if (_WIN32_IE >= 0x0400) 5584 BOOL GetAnchorHighlight()
const 5586 ATLASSERT(::IsWindow(m_hWnd));
5587 return (BOOL)::SendMessage(m_hWnd, TB_GETANCHORHIGHLIGHT, 0, 0L);
5590 BOOL SetAnchorHighlight(BOOL bEnable = TRUE)
5592 ATLASSERT(::IsWindow(m_hWnd));
5593 return (BOOL)::SendMessage(m_hWnd, TB_SETANCHORHIGHLIGHT, bEnable, 0L);
5595 #endif // !_WIN32_WCE 5597 int GetButtonInfo(
int nID, LPTBBUTTONINFO lptbbi)
const 5599 ATLASSERT(::IsWindow(m_hWnd));
5600 return (
int)::SendMessage(m_hWnd, TB_GETBUTTONINFO, nID, (LPARAM)lptbbi);
5603 BOOL SetButtonInfo(
int nID, LPTBBUTTONINFO lptbbi)
5605 ATLASSERT(::IsWindow(m_hWnd));
5606 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONINFO, nID, (LPARAM)lptbbi);
5609 BOOL SetButtonInfo(
int nID, DWORD dwMask, BYTE Style, BYTE State, LPCTSTR lpszItem,
5610 int iImage, WORD cx,
int iCommand, DWORD_PTR lParam)
5612 ATLASSERT(::IsWindow(m_hWnd));
5613 TBBUTTONINFO tbbi = { 0 };
5614 tbbi.cbSize =
sizeof(TBBUTTONINFO);
5615 tbbi.dwMask = dwMask;
5616 tbbi.idCommand = iCommand;
5617 tbbi.iImage = iImage;
5618 tbbi.fsState = State;
5619 tbbi.fsStyle = Style;
5621 tbbi.pszText = (LPTSTR) lpszItem;
5622 tbbi.lParam = lParam;
5623 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONINFO, nID, (LPARAM)&tbbi);
5627 int GetHotItem()
const 5629 ATLASSERT(::IsWindow(m_hWnd));
5630 return (
int)::SendMessage(m_hWnd, TB_GETHOTITEM, 0, 0L);
5633 int SetHotItem(
int nItem)
5635 ATLASSERT(::IsWindow(m_hWnd));
5636 return (
int)::SendMessage(m_hWnd, TB_SETHOTITEM, nItem, 0L);
5638 #endif // !_WIN32_WCE 5640 BOOL IsButtonHighlighted(
int nButtonID)
const 5642 ATLASSERT(::IsWindow(m_hWnd));
5643 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONHIGHLIGHTED, nButtonID, 0L);
5646 DWORD SetDrawTextFlags(DWORD dwMask, DWORD dwFlags)
5648 ATLASSERT(::IsWindow(m_hWnd));
5649 return (DWORD)::SendMessage(m_hWnd, TB_SETDRAWTEXTFLAGS, dwMask, dwFlags);
5653 BOOL GetColorScheme(LPCOLORSCHEME lpcs)
const 5655 ATLASSERT(::IsWindow(m_hWnd));
5656 return (BOOL)::SendMessage(m_hWnd, TB_GETCOLORSCHEME, 0, (LPARAM)lpcs);
5659 void SetColorScheme(LPCOLORSCHEME lpcs)
5661 ATLASSERT(::IsWindow(m_hWnd));
5662 ::SendMessage(m_hWnd, TB_SETCOLORSCHEME, 0, (LPARAM)lpcs);
5665 DWORD GetExtendedStyle()
const 5667 ATLASSERT(::IsWindow(m_hWnd));
5668 return (DWORD)::SendMessage(m_hWnd, TB_GETEXTENDEDSTYLE, 0, 0L);
5671 DWORD SetExtendedStyle(DWORD dwStyle)
5673 ATLASSERT(::IsWindow(m_hWnd));
5674 return (DWORD)::SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, dwStyle);
5677 void GetInsertMark(LPTBINSERTMARK lptbim)
const 5679 ATLASSERT(::IsWindow(m_hWnd));
5680 ::SendMessage(m_hWnd, TB_GETINSERTMARK, 0, (LPARAM)lptbim);
5683 void SetInsertMark(LPTBINSERTMARK lptbim)
5685 ATLASSERT(::IsWindow(m_hWnd));
5686 ::SendMessage(m_hWnd, TB_SETINSERTMARK, 0, (LPARAM)lptbim);
5689 COLORREF GetInsertMarkColor()
const 5691 ATLASSERT(::IsWindow(m_hWnd));
5692 return (COLORREF)::SendMessage(m_hWnd, TB_GETINSERTMARKCOLOR, 0, 0L);
5695 COLORREF SetInsertMarkColor(COLORREF clr)
5697 ATLASSERT(::IsWindow(m_hWnd));
5698 return (COLORREF)::SendMessage(m_hWnd, TB_SETINSERTMARKCOLOR, 0, (LPARAM)clr);
5701 BOOL GetMaxSize(LPSIZE lpSize)
const 5703 ATLASSERT(::IsWindow(m_hWnd));
5704 return (BOOL)::SendMessage(m_hWnd, TB_GETMAXSIZE, 0, (LPARAM)lpSize);
5707 void GetPadding(LPSIZE lpSizePadding)
const 5709 ATLASSERT(::IsWindow(m_hWnd));
5710 ATLASSERT(lpSizePadding != NULL);
5711 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_GETPADDING, 0, 0L);
5712 lpSizePadding->cx = GET_X_LPARAM(dwRet);
5713 lpSizePadding->cy = GET_Y_LPARAM(dwRet);
5716 void SetPadding(
int cx,
int cy, LPSIZE lpSizePadding = NULL)
5718 ATLASSERT(::IsWindow(m_hWnd));
5719 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_SETPADDING, 0, MAKELPARAM(cx, cy));
5720 if(lpSizePadding != NULL)
5722 lpSizePadding->cx = GET_X_LPARAM(dwRet);
5723 lpSizePadding->cy = GET_Y_LPARAM(dwRet);
5727 BOOL GetUnicodeFormat()
const 5729 ATLASSERT(::IsWindow(m_hWnd));
5730 return (BOOL)::SendMessage(m_hWnd, TB_GETUNICODEFORMAT, 0, 0L);
5733 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
5735 ATLASSERT(::IsWindow(m_hWnd));
5736 return (BOOL)::SendMessage(m_hWnd, TB_SETUNICODEFORMAT, bUnicode, 0L);
5738 #endif // !_WIN32_WCE 5739 #endif // (_WIN32_IE >= 0x0400) 5741 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 5742 int GetString(
int nString, LPTSTR lpstrString,
int cchMaxLen)
const 5744 ATLASSERT(::IsWindow(m_hWnd));
5745 return (
int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(cchMaxLen, nString), (LPARAM)lpstrString);
5748 int GetStringBSTR(
int nString, BSTR& bstrString)
const 5751 ATLASSERT(::IsWindow(m_hWnd));
5752 ATLASSERT(bstrString == NULL);
5753 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(0, nString), NULL));
5757 LPTSTR lpstrText = buff.Allocate(nLength + 1);
5758 if(lpstrText != NULL)
5760 nLength = (int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(nLength + 1, nString), (LPARAM)lpstrText);
5762 bstrString = ::SysAllocString(T2OLE(lpstrText));
5773 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5774 int GetString(
int nString, _CSTRING_NS::CString& str)
const 5776 ATLASSERT(::IsWindow(m_hWnd));
5777 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(0, nString), NULL));
5780 LPTSTR lpstr = str.GetBufferSetLength(nLength + 1);
5782 nLength = (int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(nLength + 1, nString), (LPARAM)lpstr);
5785 str.ReleaseBuffer();
5789 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5790 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 5792 #if (_WIN32_WINNT >= 0x0501) 5793 void GetMetrics(LPTBMETRICS lptbm)
const 5795 ATLASSERT(::IsWindow(m_hWnd));
5796 ::SendMessage(m_hWnd, TB_GETMETRICS, 0, (LPARAM)lptbm);
5799 void SetMetrics(LPTBMETRICS lptbm)
5801 ATLASSERT(::IsWindow(m_hWnd));
5802 ::SendMessage(m_hWnd, TB_SETMETRICS, 0, (LPARAM)lptbm);
5805 void SetWindowTheme(LPCWSTR lpstrTheme)
5807 ATLASSERT(::IsWindow(m_hWnd));
5808 ::SendMessage(m_hWnd, TB_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
5810 #endif // (_WIN32_WINNT >= 0x0501) 5812 #if (_WIN32_WINNT >= 0x0600) 5813 CImageList GetPressedImageList(
int nIndex = 0)
const 5815 ATLASSERT(::IsWindow(m_hWnd));
5816 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETPRESSEDIMAGELIST, nIndex, 0L));
5819 CImageList SetPressedImageList(HIMAGELIST hImageList,
int nIndex = 0)
5821 ATLASSERT(::IsWindow(m_hWnd));
5822 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETPRESSEDIMAGELIST, nIndex, (LPARAM)hImageList));
5825 void GetItemDropDownRect(
int nIndex, LPRECT lpRect)
const 5827 #ifndef TB_GETITEMDROPDOWNRECT 5828 const int TB_GETITEMDROPDOWNRECT = WM_USER + 103;
5830 ATLASSERT(::IsWindow(m_hWnd));
5831 BOOL bRet = (BOOL)::SendMessage(m_hWnd, TB_GETITEMDROPDOWNRECT, nIndex, (LPARAM)lpRect);
5833 ATLASSERT(bRet != FALSE);
5835 #endif // (_WIN32_WINNT >= 0x0600) 5838 BOOL EnableButton(
int nID, BOOL bEnable = TRUE)
5840 ATLASSERT(::IsWindow(m_hWnd));
5841 return (BOOL)::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0));
5844 BOOL CheckButton(
int nID, BOOL bCheck = TRUE)
5846 ATLASSERT(::IsWindow(m_hWnd));
5847 return (BOOL)::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0));
5850 BOOL PressButton(
int nID, BOOL bPress = TRUE)
5852 ATLASSERT(::IsWindow(m_hWnd));
5853 return (BOOL)::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0));
5856 BOOL HideButton(
int nID, BOOL bHide = TRUE)
5858 ATLASSERT(::IsWindow(m_hWnd));
5859 return (BOOL)::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0));
5862 BOOL Indeterminate(
int nID, BOOL bIndeterminate = TRUE)
5864 ATLASSERT(::IsWindow(m_hWnd));
5865 return (BOOL)::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0));
5868 int AddBitmap(
int nNumButtons, UINT nBitmapID)
5870 ATLASSERT(::IsWindow(m_hWnd));
5871 TBADDBITMAP tbab = { 0 };
5872 tbab.hInst = ModuleHelper::GetResourceInstance();
5873 ATLASSERT(tbab.hInst != NULL);
5874 tbab.nID = nBitmapID;
5875 return (
int)::SendMessage(m_hWnd, TB_ADDBITMAP, (WPARAM)nNumButtons, (LPARAM)&tbab);
5878 int AddBitmap(
int nNumButtons, HBITMAP hBitmap)
5880 ATLASSERT(::IsWindow(m_hWnd));
5881 TBADDBITMAP tbab = { 0 };
5883 tbab.nID = (UINT_PTR)hBitmap;
5884 return (
int)::SendMessage(m_hWnd, TB_ADDBITMAP, (WPARAM)nNumButtons, (LPARAM)&tbab);
5887 BOOL AddButtons(
int nNumButtons, LPTBBUTTON lpButtons)
5889 ATLASSERT(::IsWindow(m_hWnd));
5890 return (BOOL)::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons);
5893 BOOL InsertButton(
int nIndex, LPTBBUTTON lpButton)
5895 ATLASSERT(::IsWindow(m_hWnd));
5896 return (BOOL)::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton);
5899 BOOL InsertButton(
int nIndex,
int iCommand, BYTE Style, BYTE State,
int iBitmap,
5900 INT_PTR iString, DWORD_PTR lParam)
5902 ATLASSERT(::IsWindow(m_hWnd));
5903 TBBUTTON tbb = { 0 };
5904 tbb.fsStyle = Style;
5905 tbb.fsState = State;
5906 tbb.idCommand = iCommand;
5907 tbb.iBitmap = iBitmap;
5908 tbb.iString = iString;
5909 tbb.dwData = lParam;
5910 return (BOOL)::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)&tbb);
5913 BOOL InsertButton(
int nIndex,
int iCommand, BYTE Style, BYTE State,
int iBitmap,
5914 LPCTSTR lpszItem, DWORD_PTR lParam)
5916 return InsertButton(nIndex, iCommand, Style, State, iBitmap, (INT_PTR)lpszItem, lParam);
5919 BOOL AddButton(LPTBBUTTON lpButton)
5921 return InsertButton(-1, lpButton);
5924 BOOL AddButton(
int iCommand, BYTE Style, BYTE State,
int iBitmap, INT_PTR iString, DWORD_PTR lParam)
5926 return InsertButton(-1, iCommand, Style, State, iBitmap, iString, lParam);
5929 BOOL AddButton(
int iCommand, BYTE Style, BYTE State,
int iBitmap, LPCTSTR lpszItem, DWORD_PTR lParam)
5931 return InsertButton(-1, iCommand, Style, State, iBitmap, lpszItem, lParam);
5934 BOOL DeleteButton(
int nIndex)
5936 ATLASSERT(::IsWindow(m_hWnd));
5937 return (BOOL)::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0L);
5940 BOOL InsertSeparator(
int nIndex,
int cxWidth = 8)
5942 return InsertButton(nIndex, 0, BTNS_SEP, 0, cxWidth, (INT_PTR)0, 0);
5945 BOOL AddSeparator(
int cxWidth = 8)
5947 return AddButton(0, BTNS_SEP, 0, cxWidth, (INT_PTR)0, 0);
5950 int CommandToIndex(UINT nID)
const 5952 ATLASSERT(::IsWindow(m_hWnd));
5953 return (
int)::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L);
5957 void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
5959 ATLASSERT(::IsWindow(m_hWnd));
5960 TBSAVEPARAMS tbs = { 0 };
5962 tbs.pszSubKey = lpszSubKey;
5963 tbs.pszValueName = lpszValueName;
5964 ::SendMessage(m_hWnd, TB_SAVERESTORE, (WPARAM)TRUE, (LPARAM)&tbs);
5967 void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
5969 ATLASSERT(::IsWindow(m_hWnd));
5970 TBSAVEPARAMS tbs = { 0 };
5972 tbs.pszSubKey = lpszSubKey;
5973 tbs.pszValueName = lpszValueName;
5974 ::SendMessage(m_hWnd, TB_SAVERESTORE, (WPARAM)FALSE, (LPARAM)&tbs);
5979 ATLASSERT(::IsWindow(m_hWnd));
5980 ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L);
5982 #endif // !_WIN32_WCE 5984 int AddString(UINT nStringID)
5986 ATLASSERT(::IsWindow(m_hWnd));
5987 return (
int)::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)ModuleHelper::GetResourceInstance(), (LPARAM)nStringID);
5990 int AddStrings(LPCTSTR lpszStrings)
5992 ATLASSERT(::IsWindow(m_hWnd));
5993 return (
int)::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings);
5998 ATLASSERT(::IsWindow(m_hWnd));
5999 ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L);
6002 BOOL ChangeBitmap(
int nID,
int nBitmap)
6004 ATLASSERT(::IsWindow(m_hWnd));
6005 return (BOOL)::SendMessage(m_hWnd, TB_CHANGEBITMAP, nID, MAKELPARAM(nBitmap, 0));
6008 int LoadImages(
int nBitmapID)
6010 ATLASSERT(::IsWindow(m_hWnd));
6011 return (
int)::SendMessage(m_hWnd, TB_LOADIMAGES, nBitmapID, (LPARAM)ModuleHelper::GetResourceInstance());
6014 int LoadStdImages(
int nBitmapID)
6016 ATLASSERT(::IsWindow(m_hWnd));
6017 return (
int)::SendMessage(m_hWnd, TB_LOADIMAGES, nBitmapID, (LPARAM)HINST_COMMCTRL);
6020 BOOL ReplaceBitmap(LPTBREPLACEBITMAP ptbrb)
6022 ATLASSERT(::IsWindow(m_hWnd));
6023 return (BOOL)::SendMessage(m_hWnd, TB_REPLACEBITMAP, 0, (LPARAM)ptbrb);
6026 #if (_WIN32_IE >= 0x0400) 6027 int HitTest(LPPOINT lpPoint)
const 6029 ATLASSERT(::IsWindow(m_hWnd));
6030 return (
int)::SendMessage(m_hWnd, TB_HITTEST, 0, (LPARAM)lpPoint);
6034 BOOL InsertMarkHitTest(LPPOINT lpPoint, LPTBINSERTMARK lptbim)
const 6036 ATLASSERT(::IsWindow(m_hWnd));
6037 return (BOOL)::SendMessage(m_hWnd, TB_INSERTMARKHITTEST, (WPARAM)lpPoint, (LPARAM)lptbim);
6040 BOOL InsertMarkHitTest(
int x,
int y, LPTBINSERTMARK lptbim)
const 6042 ATLASSERT(::IsWindow(m_hWnd));
6043 POINT pt = { x, y };
6044 return (BOOL)::SendMessage(m_hWnd, TB_INSERTMARKHITTEST, (WPARAM)&pt, (LPARAM)lptbim);
6047 BOOL MapAccelerator(TCHAR chAccel,
int& nID)
const 6049 ATLASSERT(::IsWindow(m_hWnd));
6050 return (BOOL)::SendMessage(m_hWnd, TB_MAPACCELERATOR, (WPARAM)chAccel, (LPARAM)&nID);
6053 BOOL MarkButton(
int nID, BOOL bHighlight = TRUE)
6055 ATLASSERT(::IsWindow(m_hWnd));
6056 return (BOOL)::SendMessage(m_hWnd, TB_MARKBUTTON, nID, MAKELPARAM(bHighlight, 0));
6059 BOOL MoveButton(
int nOldPos,
int nNewPos)
6061 ATLASSERT(::IsWindow(m_hWnd));
6062 return (BOOL)::SendMessage(m_hWnd, TB_MOVEBUTTON, nOldPos, nNewPos);
6065 HRESULT GetObject(REFIID iid, LPVOID* ppvObject)
6067 ATLASSERT(::IsWindow(m_hWnd));
6068 return (HRESULT)::SendMessage(m_hWnd, TB_GETOBJECT, (WPARAM)&iid, (LPARAM)ppvObject);
6070 #endif // !_WIN32_WCE 6071 #endif // (_WIN32_IE >= 0x0400) 6080 template <
class TBase>
6094 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6095 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6098 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6102 static LPCTSTR GetWndClassName()
6104 return STATUSCLASSNAME;
6107 int GetParts(
int nParts,
int* pParts)
const 6109 ATLASSERT(::IsWindow(m_hWnd));
6110 return (
int)::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts);
6113 BOOL SetParts(
int nParts,
int* pWidths)
6115 ATLASSERT(::IsWindow(m_hWnd));
6116 return (BOOL)::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths);
6119 int GetTextLength(
int nPane,
int* pType = NULL)
const 6121 ATLASSERT(::IsWindow(m_hWnd));
6122 ATLASSERT(nPane < 256);
6123 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L);
6125 *pType = (int)(
short)HIWORD(dwRet);
6126 return (
int)(short)LOWORD(dwRet);
6129 int GetText(
int nPane, LPTSTR lpszText,
int* pType = NULL)
const 6131 ATLASSERT(::IsWindow(m_hWnd));
6132 ATLASSERT(nPane < 256);
6133 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, SB_GETTEXT, (WPARAM)nPane, (LPARAM)lpszText);
6135 *pType = (int)(
short)HIWORD(dwRet);
6136 return (
int)(short)LOWORD(dwRet);
6140 BOOL GetTextBSTR(
int nPane, BSTR& bstrText,
int* pType = NULL)
const 6143 ATLASSERT(::IsWindow(m_hWnd));
6144 ATLASSERT(nPane < 256);
6145 ATLASSERT(bstrText == NULL);
6146 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L));
6151 LPTSTR lpstrText = buff.Allocate(nLength + 1);
6152 if(lpstrText == NULL)
6155 if(!GetText(nPane, lpstrText, pType))
6158 bstrText = ::SysAllocString(T2OLE(lpstrText));
6159 return (bstrText != NULL) ? TRUE : FALSE;
6161 #endif // !_ATL_NO_COM 6163 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 6164 int GetText(
int nPane, _CSTRING_NS::CString& strText,
int* pType = NULL)
const 6166 ATLASSERT(::IsWindow(m_hWnd));
6167 ATLASSERT(nPane < 256);
6168 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L));
6172 LPTSTR lpstr = strText.GetBufferSetLength(nLength);
6175 return GetText(nPane, lpstr, pType);
6177 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 6179 BOOL SetText(
int nPane, LPCTSTR lpszText,
int nType = 0)
6181 ATLASSERT(::IsWindow(m_hWnd));
6182 ATLASSERT(nPane < 256);
6183 return (BOOL)::SendMessage(m_hWnd, SB_SETTEXT, (nPane | nType), (LPARAM)lpszText);
6186 BOOL GetRect(
int nPane, LPRECT lpRect)
const 6188 ATLASSERT(::IsWindow(m_hWnd));
6189 ATLASSERT(nPane < 256);
6190 return (BOOL)::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect);
6193 BOOL GetBorders(
int* pBorders)
const 6195 ATLASSERT(::IsWindow(m_hWnd));
6196 return (BOOL)::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders);
6199 BOOL GetBorders(
int& nHorz,
int& nVert,
int& nSpacing)
const 6201 ATLASSERT(::IsWindow(m_hWnd));
6202 int borders[3] = { 0, 0, 0 };
6203 BOOL bResult = (BOOL)::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)&borders);
6208 nSpacing = borders[2];
6213 void SetMinHeight(
int nMin)
6215 ATLASSERT(::IsWindow(m_hWnd));
6216 ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L);
6219 BOOL SetSimple(BOOL bSimple = TRUE)
6221 ATLASSERT(::IsWindow(m_hWnd));
6222 return (BOOL)::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L);
6225 BOOL IsSimple()
const 6227 ATLASSERT(::IsWindow(m_hWnd));
6228 return (BOOL)::SendMessage(m_hWnd, SB_ISSIMPLE, 0, 0L);
6231 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6232 BOOL GetUnicodeFormat()
const 6234 ATLASSERT(::IsWindow(m_hWnd));
6235 return (BOOL)::SendMessage(m_hWnd, SB_GETUNICODEFORMAT, 0, 0L);
6238 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6240 ATLASSERT(::IsWindow(m_hWnd));
6241 return (BOOL)::SendMessage(m_hWnd, SB_SETUNICODEFORMAT, bUnicode, 0L);
6244 void GetTipText(
int nPane, LPTSTR lpstrText,
int nSize)
const 6246 ATLASSERT(::IsWindow(m_hWnd));
6247 ATLASSERT(nPane < 256);
6248 ::SendMessage(m_hWnd, SB_GETTIPTEXT, MAKEWPARAM(nPane, nSize), (LPARAM)lpstrText);
6251 void SetTipText(
int nPane, LPCTSTR lpstrText)
6253 ATLASSERT(::IsWindow(m_hWnd));
6254 ATLASSERT(nPane < 256);
6255 ::SendMessage(m_hWnd, SB_SETTIPTEXT, nPane, (LPARAM)lpstrText);
6257 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6259 #if ((_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 0x0500)) 6260 COLORREF SetBkColor(COLORREF clrBk)
6262 ATLASSERT(::IsWindow(m_hWnd));
6263 return (COLORREF)::SendMessage(m_hWnd, SB_SETBKCOLOR, 0, (LPARAM)clrBk);
6266 HICON GetIcon(
int nPane)
const 6268 ATLASSERT(::IsWindow(m_hWnd));
6269 ATLASSERT(nPane < 256);
6270 return (HICON)::SendMessage(m_hWnd, SB_GETICON, nPane, 0L);
6273 BOOL SetIcon(
int nPane, HICON hIcon)
6275 ATLASSERT(::IsWindow(m_hWnd));
6276 ATLASSERT(nPane < 256);
6277 return (BOOL)::SendMessage(m_hWnd, SB_SETICON, nPane, (LPARAM)hIcon);
6279 #endif // ((_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 0x0500)) 6288 template <
class TBase>
6293 CTabCtrlT(HWND hWnd = NULL) : TBase(hWnd)
6302 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6303 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6306 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6310 static LPCTSTR GetWndClassName()
6312 return WC_TABCONTROL;
6315 CImageList GetImageList()
const 6317 ATLASSERT(::IsWindow(m_hWnd));
6318 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L));
6321 CImageList SetImageList(HIMAGELIST hImageList)
6323 ATLASSERT(::IsWindow(m_hWnd));
6324 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)hImageList));
6327 int GetItemCount()
const 6329 ATLASSERT(::IsWindow(m_hWnd));
6330 return (
int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L);
6333 BOOL GetItem(
int nItem, LPTCITEM pTabCtrlItem)
const 6335 ATLASSERT(::IsWindow(m_hWnd));
6336 return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem);
6339 BOOL SetItem(
int nItem, LPTCITEM pTabCtrlItem)
6341 ATLASSERT(::IsWindow(m_hWnd));
6342 return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem);
6345 int SetItem(
int nItem, UINT mask, LPCTSTR lpszItem, DWORD dwState, DWORD dwStateMask,
int iImage, LPARAM lParam)
6347 ATLASSERT(::IsWindow(m_hWnd));
6350 tci.pszText = (LPTSTR) lpszItem;
6351 tci.dwState = dwState;
6352 tci.dwStateMask = dwStateMask;
6353 tci.iImage = iImage;
6354 tci.lParam = lParam;
6355 return (
int)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)&tci);
6358 BOOL GetItemRect(
int nItem, LPRECT lpRect)
const 6360 ATLASSERT(::IsWindow(m_hWnd));
6361 return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect);
6364 int GetCurSel()
const 6366 ATLASSERT(::IsWindow(m_hWnd));
6367 return (
int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L);
6370 int SetCurSel(
int nItem)
6372 ATLASSERT(::IsWindow(m_hWnd));
6373 return (
int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L);
6376 SIZE SetItemSize(SIZE size)
6378 ATLASSERT(::IsWindow(m_hWnd));
6379 DWORD dwSize = (DWORD)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx, size.cy));
6380 SIZE sizeRet = { GET_X_LPARAM(dwSize), GET_Y_LPARAM(dwSize) };
6384 void SetItemSize(
int cx,
int cy)
6386 ATLASSERT(::IsWindow(m_hWnd));
6387 ::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(cx, cy));
6390 void SetPadding(SIZE size)
6392 ATLASSERT(::IsWindow(m_hWnd));
6393 ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy));
6396 int GetRowCount()
const 6398 ATLASSERT(::IsWindow(m_hWnd));
6399 return (
int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L);
6403 CToolTipCtrl GetToolTips()
const 6405 ATLASSERT(::IsWindow(m_hWnd));
6406 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L));
6410 CToolTipCtrl GetTooltips()
const {
return GetToolTips(); }
6412 void SetToolTips(HWND hWndToolTip)
6414 ATLASSERT(::IsWindow(m_hWnd));
6415 ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)hWndToolTip, 0L);
6419 void SetTooltips(HWND hWndToolTip) { SetToolTips(hWndToolTip); }
6421 #endif // !_WIN32_WCE 6423 int GetCurFocus()
const 6425 ATLASSERT(::IsWindow(m_hWnd));
6426 return (
int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L);
6429 void SetCurFocus(
int nItem)
6431 ATLASSERT(::IsWindow(m_hWnd));
6432 ::SendMessage(m_hWnd, TCM_SETCURFOCUS, nItem, 0L);
6435 BOOL SetItemExtra(
int cbExtra)
6437 ATLASSERT(::IsWindow(m_hWnd));
6438 ATLASSERT(GetItemCount() == 0);
6439 return (BOOL)::SendMessage(m_hWnd, TCM_SETITEMEXTRA, cbExtra, 0L);
6442 int SetMinTabWidth(
int nWidth = -1)
6444 ATLASSERT(::IsWindow(m_hWnd));
6445 return (
int)::SendMessage(m_hWnd, TCM_SETMINTABWIDTH, 0, nWidth);
6448 #if (_WIN32_IE >= 0x0400) 6449 DWORD GetExtendedStyle()
const 6451 ATLASSERT(::IsWindow(m_hWnd));
6452 return (DWORD)::SendMessage(m_hWnd, TCM_GETEXTENDEDSTYLE, 0, 0L);
6455 DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyle)
6457 ATLASSERT(::IsWindow(m_hWnd));
6458 return (DWORD)::SendMessage(m_hWnd, TCM_SETEXTENDEDSTYLE, dwExMask, dwExStyle);
6462 BOOL GetUnicodeFormat()
const 6464 ATLASSERT(::IsWindow(m_hWnd));
6465 return (BOOL)::SendMessage(m_hWnd, TCM_GETUNICODEFORMAT, 0, 0L);
6468 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6470 ATLASSERT(::IsWindow(m_hWnd));
6471 return (BOOL)::SendMessage(m_hWnd, TCM_SETUNICODEFORMAT, bUnicode, 0L);
6473 #endif // !_WIN32_WCE 6474 #endif // (_WIN32_IE >= 0x0400) 6477 int InsertItem(
int nItem, LPTCITEM pTabCtrlItem)
6479 ATLASSERT(::IsWindow(m_hWnd));
6480 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem);
6483 int InsertItem(
int nItem, UINT mask, LPCTSTR lpszItem,
int iImage, LPARAM lParam)
6485 ATLASSERT(::IsWindow(m_hWnd));
6488 tci.pszText = (LPTSTR) lpszItem;
6489 tci.iImage = iImage;
6490 tci.lParam = lParam;
6491 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)&tci);
6494 int InsertItem(
int nItem, LPCTSTR lpszItem)
6496 ATLASSERT(::IsWindow(m_hWnd));
6498 tci.mask = TCIF_TEXT;
6499 tci.pszText = (LPTSTR) lpszItem;
6500 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)&tci);
6503 int AddItem(LPTCITEM pTabCtrlItem)
6505 return InsertItem(GetItemCount(), pTabCtrlItem);
6508 int AddItem(UINT mask, LPCTSTR lpszItem,
int iImage, LPARAM lParam)
6510 return InsertItem(GetItemCount(), mask, lpszItem, iImage, lParam);
6513 int AddItem(LPCTSTR lpszItem)
6515 return InsertItem(GetItemCount(), lpszItem);
6518 BOOL DeleteItem(
int nItem)
6520 ATLASSERT(::IsWindow(m_hWnd));
6521 return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L);
6524 BOOL DeleteAllItems()
6526 ATLASSERT(::IsWindow(m_hWnd));
6527 return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L);
6530 void AdjustRect(BOOL bLarger, LPRECT lpRect)
6532 ATLASSERT(::IsWindow(m_hWnd));
6533 ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect);
6536 void RemoveImage(
int nImage)
6538 ATLASSERT(::IsWindow(m_hWnd));
6539 ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L);
6542 int HitTest(TC_HITTESTINFO* pHitTestInfo)
const 6544 ATLASSERT(::IsWindow(m_hWnd));
6545 return (
int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM)pHitTestInfo);
6548 void DeselectAll(BOOL bExcludeFocus = TRUE)
6550 ATLASSERT(::IsWindow(m_hWnd));
6551 ::SendMessage(m_hWnd, TCM_DESELECTALL, bExcludeFocus, 0L);
6554 #if (_WIN32_IE >= 0x0400) 6555 BOOL HighlightItem(
int nIndex, BOOL bHighlight = TRUE)
6557 ATLASSERT(::IsWindow(m_hWnd));
6558 return (BOOL)::SendMessage(m_hWnd, TCM_HIGHLIGHTITEM, nIndex, MAKELPARAM(bHighlight, 0));
6560 #endif // (_WIN32_IE >= 0x0400) 6569 template <
class TBase>
6583 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6584 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6587 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6591 static LPCTSTR GetWndClassName()
6593 return TRACKBAR_CLASS;
6596 int GetLineSize()
const 6598 ATLASSERT(::IsWindow(m_hWnd));
6599 return (
int)::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0L);
6602 int SetLineSize(
int nSize)
6604 ATLASSERT(::IsWindow(m_hWnd));
6605 return (
int)::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize);
6608 int GetPageSize()
const 6610 ATLASSERT(::IsWindow(m_hWnd));
6611 return (
int)::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0L);
6614 int SetPageSize(
int nSize)
6616 ATLASSERT(::IsWindow(m_hWnd));
6617 return (
int)::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize);
6620 int GetRangeMin()
const 6622 ATLASSERT(::IsWindow(m_hWnd));
6623 return (
int)::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0L);
6626 void SetRangeMin(
int nMin, BOOL bRedraw = FALSE)
6628 ATLASSERT(::IsWindow(m_hWnd));
6629 ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin);
6632 int GetRangeMax()
const 6634 ATLASSERT(::IsWindow(m_hWnd));
6635 return (
int)::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0L);
6638 void SetRangeMax(
int nMax, BOOL bRedraw = FALSE)
6640 ATLASSERT(::IsWindow(m_hWnd));
6641 ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax);
6644 void GetRange(
int& nMin,
int& nMax)
const 6646 nMin = GetRangeMin();
6647 nMax = GetRangeMax();
6650 void SetRange(
int nMin,
int nMax, BOOL bRedraw = TRUE)
6652 ATLASSERT(::IsWindow(m_hWnd));
6653 ::SendMessage(m_hWnd, TBM_SETRANGE, bRedraw, MAKELPARAM(nMin, nMax));
6656 int GetSelStart()
const 6658 ATLASSERT(::IsWindow(m_hWnd));
6659 return (
int)::SendMessage(m_hWnd, TBM_GETSELSTART, 0, 0L);
6662 void SetSelStart(
int nMin, BOOL bRedraw = FALSE)
6664 ATLASSERT(::IsWindow(m_hWnd));
6665 ::SendMessage(m_hWnd, TBM_SETSELSTART, bRedraw, (LPARAM)nMin);
6668 int GetSelEnd()
const 6670 ATLASSERT(::IsWindow(m_hWnd));
6671 return (
int)::SendMessage(m_hWnd, TBM_GETSELEND, 0, 0L);
6674 void SetSelEnd(
int nMax, BOOL bRedraw = FALSE)
6676 ATLASSERT(::IsWindow(m_hWnd));
6677 ::SendMessage(m_hWnd, TBM_SETSELEND, bRedraw, (LPARAM)nMax);
6680 void GetSelection(
int& nMin,
int& nMax)
const 6682 nMin = GetSelStart();
6686 void SetSelection(
int nMin,
int nMax, BOOL bRedraw = TRUE)
6688 SetSelStart(nMin, FALSE);
6689 SetSelEnd(nMax, bRedraw);
6692 void GetChannelRect(LPRECT lprc)
const 6694 ATLASSERT(::IsWindow(m_hWnd));
6695 ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc);
6698 void GetThumbRect(LPRECT lprc)
const 6700 ATLASSERT(::IsWindow(m_hWnd));
6701 ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc);
6706 ATLASSERT(::IsWindow(m_hWnd));
6707 return (
int)::SendMessage(m_hWnd, TBM_GETPOS, 0, 0L);
6710 void SetPos(
int nPos)
6712 ATLASSERT(::IsWindow(m_hWnd));
6713 ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos);
6716 UINT GetNumTics()
const 6718 ATLASSERT(::IsWindow(m_hWnd));
6719 return (UINT)::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0L);
6722 DWORD* GetTicArray()
const 6724 ATLASSERT(::IsWindow(m_hWnd));
6725 return (DWORD*)::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0L);
6728 int GetTic(
int nTic)
const 6730 ATLASSERT(::IsWindow(m_hWnd));
6731 return (
int)::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L);
6734 BOOL SetTic(
int nTic)
6736 ATLASSERT(::IsWindow(m_hWnd));
6737 return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic);
6740 int GetTicPos(
int nTic)
const 6742 ATLASSERT(::IsWindow(m_hWnd));
6743 return (
int)::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L);
6746 void SetTicFreq(
int nFreq)
6748 ATLASSERT(::IsWindow(m_hWnd));
6749 ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L);
6752 int GetThumbLength()
const 6754 ATLASSERT(::IsWindow(m_hWnd));
6755 return (
int)::SendMessage(m_hWnd, TBM_GETTHUMBLENGTH, 0, 0L);
6758 void SetThumbLength(
int nLength)
6760 ATLASSERT(::IsWindow(m_hWnd));
6761 ::SendMessage(m_hWnd, TBM_SETTHUMBLENGTH, nLength, 0L);
6764 void SetSel(
int nStart,
int nEnd, BOOL bRedraw = TRUE)
6766 ATLASSERT(::IsWindow(m_hWnd));
6767 ATLASSERT((GetStyle() & TBS_ENABLESELRANGE) != 0);
6768 ::SendMessage(m_hWnd, TBM_SETSEL, bRedraw, MAKELPARAM(nStart, nEnd));
6771 ATL::CWindow GetBuddy(BOOL bLeft = TRUE)
const 6773 ATLASSERT(::IsWindow(m_hWnd));
6774 return ATL::CWindow((HWND)::SendMessage(m_hWnd, TBM_GETBUDDY, bLeft, 0L));
6777 ATL::CWindow SetBuddy(HWND hWndBuddy, BOOL bLeft = TRUE)
6779 ATLASSERT(::IsWindow(m_hWnd));
6780 return ATL::CWindow((HWND)::SendMessage(m_hWnd, TBM_SETBUDDY, bLeft, (LPARAM)hWndBuddy));
6784 CToolTipCtrl GetToolTips()
const 6786 ATLASSERT(::IsWindow(m_hWnd));
6787 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TBM_GETTOOLTIPS, 0, 0L));
6790 void SetToolTips(HWND hWndTT)
6792 ATLASSERT(::IsWindow(m_hWnd));
6793 ::SendMessage(m_hWnd, TBM_SETTOOLTIPS, (WPARAM)hWndTT, 0L);
6796 int SetTipSide(
int nSide)
6798 ATLASSERT(::IsWindow(m_hWnd));
6799 return (
int)::SendMessage(m_hWnd, TBM_SETTIPSIDE, nSide, 0L);
6801 #endif // !_WIN32_WCE 6803 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6804 BOOL GetUnicodeFormat()
const 6806 ATLASSERT(::IsWindow(m_hWnd));
6807 return (BOOL)::SendMessage(m_hWnd, TBM_GETUNICODEFORMAT, 0, 0L);
6810 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6812 ATLASSERT(::IsWindow(m_hWnd));
6813 return (BOOL)::SendMessage(m_hWnd, TBM_SETUNICODEFORMAT, bUnicode, 0L);
6815 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6818 void ClearSel(BOOL bRedraw = FALSE)
6820 ATLASSERT(::IsWindow(m_hWnd));
6821 ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0L);
6826 ATLASSERT(::IsWindow(m_hWnd));
6827 ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L);
6830 void ClearTics(BOOL bRedraw = FALSE)
6832 ATLASSERT(::IsWindow(m_hWnd));
6833 ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0L);
6843 template <
class TBase>
6857 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6858 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6861 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6865 static LPCTSTR GetWndClassName()
6867 return UPDOWN_CLASS;
6870 UINT GetAccel(
int nAccel, UDACCEL* pAccel)
const 6872 ATLASSERT(::IsWindow(m_hWnd));
6873 return (UINT)LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel));
6876 BOOL SetAccel(
int nAccel, UDACCEL* pAccel)
6878 ATLASSERT(::IsWindow(m_hWnd));
6879 return (BOOL)LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel));
6882 UINT GetBase()
const 6884 ATLASSERT(::IsWindow(m_hWnd));
6885 return (UINT)LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0L));
6888 int SetBase(
int nBase)
6890 ATLASSERT(::IsWindow(m_hWnd));
6891 return (
int)::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L);
6894 ATL::CWindow GetBuddy()
const 6896 ATLASSERT(::IsWindow(m_hWnd));
6897 return ATL::CWindow((HWND)::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0L));
6900 ATL::CWindow SetBuddy(HWND hWndBuddy)
6902 ATLASSERT(::IsWindow(m_hWnd));
6903 return ATL::CWindow((HWND)::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)hWndBuddy, 0L));
6906 int GetPos(LPBOOL lpbError = NULL)
const 6908 ATLASSERT(::IsWindow(m_hWnd));
6909 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, UDM_GETPOS, 0, 0L);
6912 if(lpbError != NULL)
6913 *lpbError = (HIWORD(dwRet) != 0) ? TRUE : FALSE;
6914 return (
int)(short)LOWORD(dwRet);
6917 int SetPos(
int nPos)
6919 ATLASSERT(::IsWindow(m_hWnd));
6920 return (
int)(short)LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0)));
6923 DWORD GetRange()
const 6925 ATLASSERT(::IsWindow(m_hWnd));
6926 return (DWORD)::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0L);
6929 void GetRange(
int& nLower,
int& nUpper)
const 6931 ATLASSERT(::IsWindow(m_hWnd));
6932 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0L);
6933 nLower = (int)(
short)HIWORD(dwRet);
6934 nUpper = (int)(
short)LOWORD(dwRet);
6937 void SetRange(
int nLower,
int nUpper)
6939 ATLASSERT(::IsWindow(m_hWnd));
6940 ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower));
6943 #if (_WIN32_IE >= 0x0400) 6944 void SetRange32(
int nLower,
int nUpper)
6946 ATLASSERT(::IsWindow(m_hWnd));
6947 ::SendMessage(m_hWnd, UDM_SETRANGE32, nLower, nUpper);
6950 void GetRange32(
int& nLower,
int& nUpper)
const 6952 ATLASSERT(::IsWindow(m_hWnd));
6953 ::SendMessage(m_hWnd, UDM_GETRANGE32, (WPARAM)&nLower, (LPARAM)&nUpper);
6957 BOOL GetUnicodeFormat()
const 6959 ATLASSERT(::IsWindow(m_hWnd));
6960 return (BOOL)::SendMessage(m_hWnd, UDM_GETUNICODEFORMAT, 0, 0L);
6963 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6965 ATLASSERT(::IsWindow(m_hWnd));
6966 return (BOOL)::SendMessage(m_hWnd, UDM_SETUNICODEFORMAT, bUnicode, 0L);
6968 #endif // !_WIN32_WCE 6969 #endif // (_WIN32_IE >= 0x0400) 6971 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 6972 int GetPos32(LPBOOL lpbError = NULL)
const 6974 ATLASSERT(::IsWindow(m_hWnd));
6977 return (
int)::SendMessage(m_hWnd, UDM_GETPOS32, 0, (LPARAM)lpbError);
6980 int SetPos32(
int nPos)
6982 ATLASSERT(::IsWindow(m_hWnd));
6983 return (
int)::SendMessage(m_hWnd, UDM_SETPOS32, 0, (LPARAM)nPos);
6985 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 6994 template <
class TBase>
7008 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7009 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7012 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7016 static LPCTSTR GetWndClassName()
7018 return PROGRESS_CLASS;
7021 DWORD SetRange(
int nLower,
int nUpper)
7023 ATLASSERT(::IsWindow(m_hWnd));
7024 return (DWORD)::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper));
7027 int SetPos(
int nPos)
7029 ATLASSERT(::IsWindow(m_hWnd));
7030 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L));
7033 int OffsetPos(
int nPos)
7035 ATLASSERT(::IsWindow(m_hWnd));
7036 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L));
7039 int SetStep(
int nStep)
7041 ATLASSERT(::IsWindow(m_hWnd));
7042 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L));
7047 ATLASSERT(::IsWindow(m_hWnd));
7048 return (UINT)::SendMessage(m_hWnd, PBM_GETPOS, 0, 0L);
7051 void GetRange(PPBRANGE pPBRange)
const 7053 ATLASSERT(::IsWindow(m_hWnd));
7054 ATLASSERT(pPBRange != NULL);
7055 ::SendMessage(m_hWnd, PBM_GETRANGE, TRUE, (LPARAM)pPBRange);
7058 void GetRange(
int& nLower,
int& nUpper)
const 7060 ATLASSERT(::IsWindow(m_hWnd));
7061 PBRANGE range = { 0 };
7062 ::SendMessage(m_hWnd, PBM_GETRANGE, TRUE, (LPARAM)&range);
7063 nLower = range.iLow;
7064 nUpper = range.iHigh;
7067 int GetRangeLimit(BOOL bLowLimit)
const 7069 ATLASSERT(::IsWindow(m_hWnd));
7070 return (
int)::SendMessage(m_hWnd, PBM_GETRANGE, bLowLimit, (LPARAM)NULL);
7073 DWORD SetRange32(
int nMin,
int nMax)
7075 ATLASSERT(::IsWindow(m_hWnd));
7076 return (DWORD)::SendMessage(m_hWnd, PBM_SETRANGE32, nMin, nMax);
7079 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 7080 COLORREF SetBarColor(COLORREF clr)
7082 ATLASSERT(::IsWindow(m_hWnd));
7083 return (COLORREF)::SendMessage(m_hWnd, PBM_SETBARCOLOR, 0, (LPARAM)clr);
7086 COLORREF SetBkColor(COLORREF clr)
7088 ATLASSERT(::IsWindow(m_hWnd));
7089 return (COLORREF)::SendMessage(m_hWnd, PBM_SETBKCOLOR, 0, (LPARAM)clr);
7091 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 7093 #if (_WIN32_WINNT >= 0x0501) && defined(PBM_SETMARQUEE) 7094 BOOL SetMarquee(BOOL bMarquee, UINT uUpdateTime = 0U)
7096 ATLASSERT(::IsWindow(m_hWnd));
7097 return (BOOL)::SendMessage(m_hWnd, PBM_SETMARQUEE, (WPARAM)bMarquee, (LPARAM)uUpdateTime);
7099 #endif // (_WIN32_WINNT >= 0x0501) && defined(PBM_SETMARQUEE) 7101 #if (_WIN32_WINNT >= 0x0600) 7104 ATLASSERT(::IsWindow(m_hWnd));
7105 return (
int)::SendMessage(m_hWnd, PBM_GETSTEP, 0, 0L);
7108 COLORREF GetBkColor()
const 7110 ATLASSERT(::IsWindow(m_hWnd));
7111 return (COLORREF)::SendMessage(m_hWnd, PBM_GETBKCOLOR, 0, 0L);
7114 COLORREF GetBarColor()
const 7116 ATLASSERT(::IsWindow(m_hWnd));
7117 return (COLORREF)::SendMessage(m_hWnd, PBM_GETBARCOLOR, 0, 0L);
7120 int GetState()
const 7122 ATLASSERT(::IsWindow(m_hWnd));
7123 return (
int)::SendMessage(m_hWnd, PBM_GETSTATE, 0, 0L);
7126 int SetState(
int nState)
7128 ATLASSERT(::IsWindow(m_hWnd));
7129 return (
int)::SendMessage(m_hWnd, PBM_SETSTATE, nState, 0L);
7131 #endif // (_WIN32_WINNT >= 0x0600) 7136 ATLASSERT(::IsWindow(m_hWnd));
7137 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L));
7149 template <
class TBase>
7163 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7164 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7167 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7171 static LPCTSTR GetWndClassName()
7173 return HOTKEY_CLASS;
7176 DWORD GetHotKey()
const 7178 ATLASSERT(::IsWindow(m_hWnd));
7179 return (DWORD)::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L);
7182 void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers)
const 7184 ATLASSERT(::IsWindow(m_hWnd));
7185 DWORD dw = (DWORD)::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L);
7186 wVirtualKeyCode = LOBYTE(LOWORD(dw));
7187 wModifiers = HIBYTE(LOWORD(dw));
7190 void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
7192 ATLASSERT(::IsWindow(m_hWnd));
7193 ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0L);
7196 void SetRules(WORD wInvalidComb, WORD wModifiers)
7198 ATLASSERT(::IsWindow(m_hWnd));
7199 ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0));
7205 #endif // !_WIN32_WCE 7213 template <
class TBase>
7227 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7228 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7231 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7235 static LPCTSTR GetWndClassName()
7237 return ANIMATE_CLASS;
7243 ATLASSERT(::IsWindow(m_hWnd));
7244 return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)FileName.m_lpstr);
7247 BOOL Play(UINT nFrom, UINT nTo, UINT nRep)
7249 ATLASSERT(::IsWindow(m_hWnd));
7250 return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo));
7255 ATLASSERT(::IsWindow(m_hWnd));
7256 return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L);
7261 ATLASSERT(::IsWindow(m_hWnd));
7262 return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L);
7267 ATLASSERT(::IsWindow(m_hWnd));
7268 return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo));
7272 BOOL IsPlaying()
const 7274 #ifndef ACM_ISPLAYING 7275 const UINT ACM_ISPLAYING = (WM_USER+104);
7277 ATLASSERT(::IsWindow(m_hWnd));
7278 return (BOOL)::SendMessage(m_hWnd, ACM_ISPLAYING, 0, 0L);
7284 #endif // !_WIN32_WCE 7292 #if defined(_UNICODE) && (_RICHEDIT_VER == 0x0100) 7293 #undef RICHEDIT_CLASS 7294 #define RICHEDIT_CLASS L"RICHEDIT" 7297 #if !defined(_UNICODE) && (_RICHEDIT_VER >= 0x0500) 7298 #undef MSFTEDIT_CLASS 7299 #define MSFTEDIT_CLASS "RICHEDIT50W" 7302 template <
class TBase>
7316 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7317 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7320 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7324 static LPCTSTR GetWndClassName()
7326 #if (_RICHEDIT_VER >= 0x0500) 7327 return MSFTEDIT_CLASS;
7329 return RICHEDIT_CLASS;
7333 static LPCTSTR GetLibraryName()
7335 #if (_RICHEDIT_VER >= 0x0500) 7336 return _T(
"MSFTEDIT.DLL");
7337 #elif (_RICHEDIT_VER >= 0x0200) 7338 return _T(
"RICHED20.DLL");
7340 return _T(
"RICHED32.DLL");
7344 int GetLineCount()
const 7346 ATLASSERT(::IsWindow(m_hWnd));
7347 return (
int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0L);
7350 BOOL GetModify()
const 7352 ATLASSERT(::IsWindow(m_hWnd));
7353 return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0L);
7356 void SetModify(BOOL bModified = TRUE)
7358 ATLASSERT(::IsWindow(m_hWnd));
7359 ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0L);
7362 void GetRect(LPRECT lpRect)
const 7364 ATLASSERT(::IsWindow(m_hWnd));
7365 ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect);
7368 DWORD GetOptions()
const 7370 ATLASSERT(::IsWindow(m_hWnd));
7371 return (DWORD)::SendMessage(m_hWnd, EM_GETOPTIONS, 0, 0L);
7374 DWORD SetOptions(WORD wOperation, DWORD dwOptions)
7376 ATLASSERT(::IsWindow(m_hWnd));
7377 return (DWORD)::SendMessage(m_hWnd, EM_SETOPTIONS, wOperation, dwOptions);
7381 int GetLine(
int nIndex, LPTSTR lpszBuffer)
const 7383 ATLASSERT(::IsWindow(m_hWnd));
7384 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
7387 int GetLine(
int nIndex, LPTSTR lpszBuffer,
int nMaxLength)
const 7389 ATLASSERT(::IsWindow(m_hWnd));
7390 *(LPWORD)lpszBuffer = (WORD)nMaxLength;
7391 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
7394 BOOL CanUndo()
const 7396 ATLASSERT(::IsWindow(m_hWnd));
7397 return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0L);
7400 BOOL CanPaste(UINT nFormat = 0)
const 7402 ATLASSERT(::IsWindow(m_hWnd));
7403 return (BOOL)::SendMessage(m_hWnd, EM_CANPASTE, nFormat, 0L);
7406 void GetSel(LONG& nStartChar, LONG& nEndChar)
const 7408 ATLASSERT(::IsWindow(m_hWnd));
7409 CHARRANGE cr = { 0, 0 };
7410 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7411 nStartChar = cr.cpMin;
7412 nEndChar = cr.cpMax;
7415 void GetSel(CHARRANGE &cr)
const 7417 ATLASSERT(::IsWindow(m_hWnd));
7418 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7421 int SetSel(LONG nStartChar, LONG nEndChar)
7423 ATLASSERT(::IsWindow(m_hWnd));
7424 CHARRANGE cr = { nStartChar, nEndChar };
7425 return (
int)::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
7428 int SetSel(CHARRANGE &cr)
7430 ATLASSERT(::IsWindow(m_hWnd));
7431 return (
int)::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
7436 return SetSel(0, -1);
7441 return SetSel(-1, 0);
7444 DWORD GetDefaultCharFormat(CHARFORMAT& cf)
const 7446 ATLASSERT(::IsWindow(m_hWnd));
7447 cf.cbSize =
sizeof(CHARFORMAT);
7448 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 0, (LPARAM)&cf);
7451 DWORD GetSelectionCharFormat(CHARFORMAT& cf)
const 7453 ATLASSERT(::IsWindow(m_hWnd));
7454 cf.cbSize =
sizeof(CHARFORMAT);
7455 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 1, (LPARAM)&cf);
7458 DWORD GetEventMask()
const 7460 ATLASSERT(::IsWindow(m_hWnd));
7461 return (DWORD)::SendMessage(m_hWnd, EM_GETEVENTMASK, 0, 0L);
7464 LONG GetLimitText()
const 7466 ATLASSERT(::IsWindow(m_hWnd));
7467 return (LONG)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L);
7470 DWORD GetParaFormat(PARAFORMAT& pf)
const 7472 ATLASSERT(::IsWindow(m_hWnd));
7473 pf.cbSize =
sizeof(PARAFORMAT);
7474 return (DWORD)::SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, (LPARAM)&pf);
7477 #if (_RICHEDIT_VER >= 0x0200) 7478 LONG GetSelText(LPTSTR lpstrBuff)
const 7480 ATLASSERT(::IsWindow(m_hWnd));
7481 return (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrBuff);
7483 #else // !(_RICHEDIT_VER >= 0x0200) 7485 LONG GetSelText(LPSTR lpstrBuff)
const 7487 ATLASSERT(::IsWindow(m_hWnd));
7488 return (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrBuff);
7490 #endif // !(_RICHEDIT_VER >= 0x0200) 7493 BOOL GetSelTextBSTR(BSTR& bstrText)
const 7496 ATLASSERT(::IsWindow(m_hWnd));
7497 ATLASSERT(bstrText == NULL);
7499 CHARRANGE cr = { 0, 0 };
7500 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7502 #if (_RICHEDIT_VER >= 0x0200) 7504 LPTSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7505 if(lpstrText == NULL)
7507 if(::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText) == 0)
7510 bstrText = ::SysAllocString(T2W(lpstrText));
7511 #else // !(_RICHEDIT_VER >= 0x0200) 7513 LPSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7514 if(lpstrText == NULL)
7516 if(::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText) == 0)
7519 bstrText = ::SysAllocString(A2W(lpstrText));
7520 #endif // !(_RICHEDIT_VER >= 0x0200) 7522 return (bstrText != NULL) ? TRUE : FALSE;
7524 #endif // !_ATL_NO_COM 7526 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 7527 LONG GetSelText(_CSTRING_NS::CString& strText)
const 7529 ATLASSERT(::IsWindow(m_hWnd));
7531 CHARRANGE cr = { 0, 0 };
7532 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7534 #if (_RICHEDIT_VER >= 0x0200) 7536 LPTSTR lpstrText = strText.GetBufferSetLength(cr.cpMax - cr.cpMin);
7537 if(lpstrText != NULL)
7539 lLen = (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText);
7540 strText.ReleaseBuffer();
7542 #else // !(_RICHEDIT_VER >= 0x0200) 7544 LPSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7545 if(lpstrText == NULL)
7547 LONG lLen = (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText);
7552 strText = A2T(lpstrText);
7553 #endif // !(_RICHEDIT_VER >= 0x0200) 7557 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 7559 WORD GetSelectionType()
const 7561 ATLASSERT(::IsWindow(m_hWnd));
7562 return (WORD)::SendMessage(m_hWnd, EM_SELECTIONTYPE, 0, 0L);
7565 COLORREF SetBackgroundColor(COLORREF cr)
7567 ATLASSERT(::IsWindow(m_hWnd));
7568 return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, 0, cr);
7571 COLORREF SetBackgroundColor()
7573 ATLASSERT(::IsWindow(m_hWnd));
7574 return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, 1, 0);
7577 BOOL SetCharFormat(CHARFORMAT& cf, WORD wFlags)
7579 ATLASSERT(::IsWindow(m_hWnd));
7580 cf.cbSize =
sizeof(CHARFORMAT);
7581 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, (WPARAM)wFlags, (LPARAM)&cf);
7584 BOOL SetDefaultCharFormat(CHARFORMAT& cf)
7586 ATLASSERT(::IsWindow(m_hWnd));
7587 cf.cbSize =
sizeof(CHARFORMAT);
7588 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, 0, (LPARAM)&cf);
7591 BOOL SetSelectionCharFormat(CHARFORMAT& cf)
7593 ATLASSERT(::IsWindow(m_hWnd));
7594 cf.cbSize =
sizeof(CHARFORMAT);
7595 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
7598 BOOL SetWordCharFormat(CHARFORMAT& cf)
7600 ATLASSERT(::IsWindow(m_hWnd));
7601 cf.cbSize =
sizeof(CHARFORMAT);
7602 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cf);
7605 DWORD SetEventMask(DWORD dwEventMask)
7607 ATLASSERT(::IsWindow(m_hWnd));
7608 return (DWORD)::SendMessage(m_hWnd, EM_SETEVENTMASK, 0, dwEventMask);
7611 BOOL SetParaFormat(PARAFORMAT& pf)
7613 ATLASSERT(::IsWindow(m_hWnd));
7614 pf.cbSize =
sizeof(PARAFORMAT);
7615 return (BOOL)::SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
7618 BOOL SetTargetDevice(HDC hDC,
int cxLineWidth)
7620 ATLASSERT(::IsWindow(m_hWnd));
7621 return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)hDC, cxLineWidth);
7624 int GetTextLength()
const 7626 ATLASSERT(::IsWindow(m_hWnd));
7627 return (
int)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, 0, 0L);
7630 BOOL SetReadOnly(BOOL bReadOnly = TRUE)
7632 ATLASSERT(::IsWindow(m_hWnd));
7633 return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L);
7636 int GetFirstVisibleLine()
const 7638 ATLASSERT(::IsWindow(m_hWnd));
7639 return (
int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L);
7642 int GetTextRange(TEXTRANGE* pTextRange)
const 7644 ATLASSERT(::IsWindow(m_hWnd));
7645 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)pTextRange);
7648 #if (_RICHEDIT_VER < 0x0200) 7649 EDITWORDBREAKPROCEX GetWordBreakProcEx()
const 7651 ATLASSERT(::IsWindow(m_hWnd));
7652 return (EDITWORDBREAKPROCEX)::SendMessage(m_hWnd, EM_GETWORDBREAKPROCEX, 0, 0L);
7655 EDITWORDBREAKPROCEX SetWordBreakProcEx(EDITWORDBREAKPROCEX pfnEditWordBreakProcEx)
7657 ATLASSERT(::IsWindow(m_hWnd));
7658 return (EDITWORDBREAKPROCEX)::SendMessage(m_hWnd, EM_SETWORDBREAKPROCEX, 0, (LPARAM)pfnEditWordBreakProcEx);
7660 #endif // (_RICHEDIT_VER < 0x0200) 7662 #if (_RICHEDIT_VER >= 0x0200) 7663 int GetTextRange(LONG nStartChar, LONG nEndChar, LPTSTR lpstrText)
const 7665 ATLASSERT(::IsWindow(m_hWnd));
7666 TEXTRANGE tr = { 0 };
7667 tr.chrg.cpMin = nStartChar;
7668 tr.chrg.cpMax = nEndChar;
7669 tr.lpstrText = lpstrText;
7670 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
7672 #else // !(_RICHEDIT_VER >= 0x0200) 7673 int GetTextRange(LONG nStartChar, LONG nEndChar, LPSTR lpstrText)
const 7675 ATLASSERT(::IsWindow(m_hWnd));
7676 TEXTRANGE tr = { 0 };
7677 tr.chrg.cpMin = nStartChar;
7678 tr.chrg.cpMax = nEndChar;
7679 tr.lpstrText = lpstrText;
7680 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
7682 #endif // !(_RICHEDIT_VER >= 0x0200) 7684 #if (_RICHEDIT_VER >= 0x0200) 7685 DWORD GetDefaultCharFormat(CHARFORMAT2& cf)
const 7687 ATLASSERT(::IsWindow(m_hWnd));
7688 cf.cbSize =
sizeof(CHARFORMAT2);
7689 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 0, (LPARAM)&cf);
7692 BOOL SetCharFormat(CHARFORMAT2& cf, WORD wFlags)
7694 ATLASSERT(::IsWindow(m_hWnd));
7695 cf.cbSize =
sizeof(CHARFORMAT2);
7696 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, (WPARAM)wFlags, (LPARAM)&cf);
7699 BOOL SetDefaultCharFormat(CHARFORMAT2& cf)
7701 ATLASSERT(::IsWindow(m_hWnd));
7702 cf.cbSize =
sizeof(CHARFORMAT2);
7703 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, 0, (LPARAM)&cf);
7706 DWORD GetSelectionCharFormat(CHARFORMAT2& cf)
const 7708 ATLASSERT(::IsWindow(m_hWnd));
7709 cf.cbSize =
sizeof(CHARFORMAT2);
7710 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 1, (LPARAM)&cf);
7713 BOOL SetSelectionCharFormat(CHARFORMAT2& cf)
7715 ATLASSERT(::IsWindow(m_hWnd));
7716 cf.cbSize =
sizeof(CHARFORMAT2);
7717 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
7720 BOOL SetWordCharFormat(CHARFORMAT2& cf)
7722 ATLASSERT(::IsWindow(m_hWnd));
7723 cf.cbSize =
sizeof(CHARFORMAT2);
7724 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cf);
7727 DWORD GetParaFormat(PARAFORMAT2& pf)
const 7729 ATLASSERT(::IsWindow(m_hWnd));
7730 pf.cbSize =
sizeof(PARAFORMAT2);
7731 return (DWORD)::SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, (LPARAM)&pf);
7734 BOOL SetParaFormat(PARAFORMAT2& pf)
7736 ATLASSERT(::IsWindow(m_hWnd));
7737 pf.cbSize =
sizeof(PARAFORMAT2);
7738 return (BOOL)::SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
7741 TEXTMODE GetTextMode()
const 7743 ATLASSERT(::IsWindow(m_hWnd));
7744 return (TEXTMODE)::SendMessage(m_hWnd, EM_GETTEXTMODE, 0, 0L);
7747 BOOL SetTextMode(TEXTMODE enumTextMode)
7749 ATLASSERT(::IsWindow(m_hWnd));
7750 return !(BOOL)::SendMessage(m_hWnd, EM_SETTEXTMODE, enumTextMode, 0L);
7753 UNDONAMEID GetUndoName()
const 7755 ATLASSERT(::IsWindow(m_hWnd));
7756 return (UNDONAMEID)::SendMessage(m_hWnd, EM_GETUNDONAME, 0, 0L);
7759 UNDONAMEID GetRedoName()
const 7761 ATLASSERT(::IsWindow(m_hWnd));
7762 return (UNDONAMEID)::SendMessage(m_hWnd, EM_GETREDONAME, 0, 0L);
7765 BOOL CanRedo()
const 7767 ATLASSERT(::IsWindow(m_hWnd));
7768 return (BOOL)::SendMessage(m_hWnd, EM_CANREDO, 0, 0L);
7771 BOOL GetAutoURLDetect()
const 7773 ATLASSERT(::IsWindow(m_hWnd));
7774 return (BOOL)::SendMessage(m_hWnd, EM_GETAUTOURLDETECT, 0, 0L);
7777 BOOL SetAutoURLDetect(BOOL bAutoDetect = TRUE)
7779 ATLASSERT(::IsWindow(m_hWnd));
7780 return !(BOOL)::SendMessage(m_hWnd, EM_AUTOURLDETECT, bAutoDetect, 0L);
7784 BOOL EnableAutoURLDetect(BOOL bEnable = TRUE) {
return SetAutoURLDetect(bEnable); }
7786 UINT SetUndoLimit(UINT uUndoLimit)
7788 ATLASSERT(::IsWindow(m_hWnd));
7789 return (UINT)::SendMessage(m_hWnd, EM_SETUNDOLIMIT, uUndoLimit, 0L);
7792 void SetPalette(HPALETTE hPalette)
7794 ATLASSERT(::IsWindow(m_hWnd));
7795 ::SendMessage(m_hWnd, EM_SETPALETTE, (WPARAM)hPalette, 0L);
7798 int GetTextEx(GETTEXTEX* pGetTextEx, LPTSTR lpstrText)
const 7800 ATLASSERT(::IsWindow(m_hWnd));
7801 return (
int)::SendMessage(m_hWnd, EM_GETTEXTEX, (WPARAM)pGetTextEx, (LPARAM)lpstrText);
7804 int GetTextEx(LPTSTR lpstrText,
int nTextLen, DWORD dwFlags = GT_DEFAULT, UINT uCodePage = CP_ACP, LPCSTR lpDefaultChar = NULL, LPBOOL lpUsedDefChar = NULL)
const 7806 ATLASSERT(::IsWindow(m_hWnd));
7807 GETTEXTEX gte = { 0 };
7808 gte.cb = nTextLen *
sizeof(TCHAR);
7809 gte.codepage = uCodePage;
7810 gte.flags = dwFlags;
7811 gte.lpDefaultChar = lpDefaultChar;
7812 gte.lpUsedDefChar = lpUsedDefChar;
7813 return (
int)::SendMessage(m_hWnd, EM_GETTEXTEX, (WPARAM)>e, (LPARAM)lpstrText);
7816 int GetTextLengthEx(GETTEXTLENGTHEX* pGetTextLengthEx)
const 7818 ATLASSERT(::IsWindow(m_hWnd));
7819 return (
int)::SendMessage(m_hWnd, EM_GETTEXTLENGTHEX, (WPARAM)pGetTextLengthEx, 0L);
7822 int GetTextLengthEx(DWORD dwFlags = GTL_DEFAULT, UINT uCodePage = CP_ACP)
const 7824 ATLASSERT(::IsWindow(m_hWnd));
7825 GETTEXTLENGTHEX gtle = { 0 };
7826 gtle.codepage = uCodePage;
7827 gtle.flags = dwFlags;
7828 return (
int)::SendMessage(m_hWnd, EM_GETTEXTLENGTHEX, (WPARAM)>le, 0L);
7831 EDITWORDBREAKPROC GetWordBreakProc()
const 7833 ATLASSERT(::IsWindow(m_hWnd));
7834 return (EDITWORDBREAKPROC)::SendMessage(m_hWnd, EM_GETWORDBREAKPROC, 0, 0L);
7837 void SetWordBreakProc(EDITWORDBREAKPROC ewbprc)
7839 ATLASSERT(::IsWindow(m_hWnd));
7840 ::SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, (LPARAM)ewbprc);
7842 #endif // (_RICHEDIT_VER >= 0x0200) 7844 #if (_RICHEDIT_VER >= 0x0300) 7845 int SetTextEx(SETTEXTEX* pSetTextEx, LPCTSTR lpstrText)
7847 ATLASSERT(::IsWindow(m_hWnd));
7848 return (
int)::SendMessage(m_hWnd, EM_SETTEXTEX, (WPARAM)pSetTextEx, (LPARAM)lpstrText);
7851 int SetTextEx(LPCTSTR lpstrText, DWORD dwFlags = ST_DEFAULT, UINT uCodePage = CP_ACP)
7853 ATLASSERT(::IsWindow(m_hWnd));
7854 SETTEXTEX ste = { 0 };
7855 ste.flags = dwFlags;
7856 ste.codepage = uCodePage;
7857 return (
int)::SendMessage(m_hWnd, EM_SETTEXTEX, (WPARAM)&ste, (LPARAM)lpstrText);
7860 int GetEditStyle()
const 7862 ATLASSERT(::IsWindow(m_hWnd));
7863 return (
int)::SendMessage(m_hWnd, EM_GETEDITSTYLE, 0, 0L);
7866 int SetEditStyle(
int nStyle,
int nMask = -1)
7868 ATLASSERT(::IsWindow(m_hWnd));
7871 return (
int)::SendMessage(m_hWnd, EM_SETEDITSTYLE, nStyle, nMask);
7874 BOOL SetFontSize(
int nFontSizeDelta)
7876 ATLASSERT(::IsWindow(m_hWnd));
7877 ATLASSERT(nFontSizeDelta >= -1637 && nFontSizeDelta <= 1638);
7878 return (BOOL)::SendMessage(m_hWnd, EM_SETFONTSIZE, nFontSizeDelta, 0L);
7881 void GetScrollPos(LPPOINT lpPoint)
const 7883 ATLASSERT(::IsWindow(m_hWnd));
7884 ATLASSERT(lpPoint != NULL);
7885 ::SendMessage(m_hWnd, EM_GETSCROLLPOS, 0, (LPARAM)lpPoint);
7888 void SetScrollPos(LPPOINT lpPoint)
7890 ATLASSERT(::IsWindow(m_hWnd));
7891 ATLASSERT(lpPoint != NULL);
7892 ::SendMessage(m_hWnd, EM_SETSCROLLPOS, 0, (LPARAM)lpPoint);
7895 BOOL GetZoom(
int& nNum,
int& nDen)
const 7897 ATLASSERT(::IsWindow(m_hWnd));
7898 return (BOOL)::SendMessage(m_hWnd, EM_GETZOOM, (WPARAM)&nNum, (LPARAM)&nDen);
7901 BOOL SetZoom(
int nNum,
int nDen)
7903 ATLASSERT(::IsWindow(m_hWnd));
7904 ATLASSERT(nNum >= 0 && nNum <= 64);
7905 ATLASSERT(nDen >= 0 && nDen <= 64);
7906 return (BOOL)::SendMessage(m_hWnd, EM_SETZOOM, nNum, nDen);
7911 ATLASSERT(::IsWindow(m_hWnd));
7912 return (BOOL)::SendMessage(m_hWnd, EM_SETZOOM, 0, 0L);
7915 void SetMargins(UINT nLeft, UINT nRight, WORD wFlags = EC_LEFTMARGIN | EC_RIGHTMARGIN)
7917 ATLASSERT(::IsWindow(m_hWnd));
7918 ::SendMessage(m_hWnd, EM_SETMARGINS, wFlags, MAKELONG(nLeft, nRight));
7920 #endif // (_RICHEDIT_VER >= 0x0300) 7923 void LimitText(LONG nChars = 0)
7925 ATLASSERT(::IsWindow(m_hWnd));
7926 ::SendMessage(m_hWnd, EM_EXLIMITTEXT, 0, nChars);
7929 int LineFromChar(LONG nIndex)
const 7931 ATLASSERT(::IsWindow(m_hWnd));
7932 return (
int)::SendMessage(m_hWnd, EM_EXLINEFROMCHAR, 0, nIndex);
7935 POINT PosFromChar(LONG nChar)
const 7937 ATLASSERT(::IsWindow(m_hWnd));
7938 POINT point = { 0, 0 };
7939 ::SendMessage(m_hWnd, EM_POSFROMCHAR, (WPARAM)&point, nChar);
7943 int CharFromPos(POINT pt)
const 7945 ATLASSERT(::IsWindow(m_hWnd));
7946 POINTL ptl = { pt.x, pt.y };
7947 return (
int)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, (LPARAM)&ptl);
7950 void EmptyUndoBuffer()
7952 ATLASSERT(::IsWindow(m_hWnd));
7953 ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0L);
7956 int LineIndex(
int nLine = -1)
const 7958 ATLASSERT(::IsWindow(m_hWnd));
7959 return (
int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0L);
7962 int LineLength(
int nLine = -1)
const 7964 ATLASSERT(::IsWindow(m_hWnd));
7965 return (
int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0L);
7968 BOOL LineScroll(
int nLines)
7970 ATLASSERT(::IsWindow(m_hWnd));
7971 return (BOOL)::SendMessage(m_hWnd, EM_LINESCROLL, 0, nLines);
7974 void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE)
7976 ATLASSERT(::IsWindow(m_hWnd));
7977 ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText);
7980 void SetRect(LPCRECT lpRect)
7982 ATLASSERT(::IsWindow(m_hWnd));
7983 ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect);
7986 BOOL DisplayBand(LPRECT pDisplayRect)
7988 ATLASSERT(::IsWindow(m_hWnd));
7989 return (BOOL)::SendMessage(m_hWnd, EM_DISPLAYBAND, 0, (LPARAM)pDisplayRect);
7992 LONG FindText(DWORD dwFlags, FINDTEXT& ft)
const 7994 ATLASSERT(::IsWindow(m_hWnd));
7995 #if (_RICHEDIT_VER >= 0x0200) && defined(_UNICODE) 7996 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTW, dwFlags, (LPARAM)&ft);
7998 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXT, dwFlags, (LPARAM)&ft);
8002 LONG FindText(DWORD dwFlags, FINDTEXTEX& ft)
const 8004 ATLASSERT(::IsWindow(m_hWnd));
8005 #if (_RICHEDIT_VER >= 0x0200) && defined(_UNICODE) 8006 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTEXW, dwFlags, (LPARAM)&ft);
8008 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTEX, dwFlags, (LPARAM)&ft);
8012 LONG FormatRange(FORMATRANGE& fr, BOOL bDisplay = TRUE)
8014 ATLASSERT(::IsWindow(m_hWnd));
8015 return (LONG)::SendMessage(m_hWnd, EM_FORMATRANGE, bDisplay, (LPARAM)&fr);
8018 LONG FormatRange(FORMATRANGE* pFormatRange, BOOL bDisplay = TRUE)
8020 ATLASSERT(::IsWindow(m_hWnd));
8021 return (LONG)::SendMessage(m_hWnd, EM_FORMATRANGE, bDisplay, (LPARAM)pFormatRange);
8024 void HideSelection(BOOL bHide = TRUE, BOOL bChangeStyle = FALSE)
8026 ATLASSERT(::IsWindow(m_hWnd));
8027 ::SendMessage(m_hWnd, EM_HIDESELECTION, bHide, bChangeStyle);
8030 void PasteSpecial(UINT uClipFormat, DWORD dwAspect = 0, HMETAFILE hMF = 0)
8032 ATLASSERT(::IsWindow(m_hWnd));
8033 REPASTESPECIAL reps = { dwAspect, (DWORD_PTR)hMF };
8034 ::SendMessage(m_hWnd, EM_PASTESPECIAL, uClipFormat, (LPARAM)&reps);
8037 void RequestResize()
8039 ATLASSERT(::IsWindow(m_hWnd));
8040 ::SendMessage(m_hWnd, EM_REQUESTRESIZE, 0, 0L);
8043 LONG StreamIn(UINT uFormat, EDITSTREAM& es)
8045 ATLASSERT(::IsWindow(m_hWnd));
8046 return (LONG)::SendMessage(m_hWnd, EM_STREAMIN, uFormat, (LPARAM)&es);
8049 LONG StreamOut(UINT uFormat, EDITSTREAM& es)
8051 ATLASSERT(::IsWindow(m_hWnd));
8052 return (LONG)::SendMessage(m_hWnd, EM_STREAMOUT, uFormat, (LPARAM)&es);
8055 DWORD FindWordBreak(
int nCode, LONG nStartChar)
8057 ATLASSERT(::IsWindow(m_hWnd));
8058 return (DWORD)::SendMessage(m_hWnd, EM_FINDWORDBREAK, nCode, nStartChar);
8064 ATLASSERT(::IsWindow(m_hWnd));
8065 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
8068 int InsertText(
long nInsertAfterChar, LPCTSTR lpstrText, BOOL bCanUndo = FALSE)
8070 int nRet = SetSel(nInsertAfterChar, nInsertAfterChar);
8071 ReplaceSel(lpstrText, bCanUndo);
8075 int AppendText(LPCTSTR lpstrText, BOOL bCanUndo = FALSE)
8077 return InsertText(GetWindowTextLength(), lpstrText, bCanUndo);
8083 ATLASSERT(::IsWindow(m_hWnd));
8084 return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0L);
8089 ATLASSERT(::IsWindow(m_hWnd));
8090 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
8095 ATLASSERT(::IsWindow(m_hWnd));
8096 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
8101 ATLASSERT(::IsWindow(m_hWnd));
8102 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
8107 ATLASSERT(::IsWindow(m_hWnd));
8108 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
8112 IRichEditOle* GetOleInterface()
const 8114 ATLASSERT(::IsWindow(m_hWnd));
8115 IRichEditOle *pRichEditOle = NULL;
8116 ::SendMessage(m_hWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pRichEditOle);
8117 return pRichEditOle;
8120 BOOL SetOleCallback(IRichEditOleCallback* pCallback)
8122 ATLASSERT(::IsWindow(m_hWnd));
8123 return (BOOL)::SendMessage(m_hWnd, EM_SETOLECALLBACK, 0, (LPARAM)pCallback);
8126 #if (_RICHEDIT_VER >= 0x0200) 8129 ATLASSERT(::IsWindow(m_hWnd));
8130 return (BOOL)::SendMessage(m_hWnd, EM_REDO, 0, 0L);
8133 void StopGroupTyping()
8135 ATLASSERT(::IsWindow(m_hWnd));
8136 ::SendMessage(m_hWnd, EM_STOPGROUPTYPING, 0, 0L);
8139 void ShowScrollBar(
int nBarType, BOOL bVisible = TRUE)
8141 ATLASSERT(::IsWindow(m_hWnd));
8142 ::SendMessage(m_hWnd, EM_SHOWSCROLLBAR, nBarType, bVisible);
8144 #endif // (_RICHEDIT_VER >= 0x0200) 8146 #if (_RICHEDIT_VER >= 0x0300) 8147 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
8149 ATLASSERT(::IsWindow(m_hWnd));
8150 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
8155 ATLASSERT(::IsWindow(m_hWnd));
8156 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0L);
8159 BOOL SetTabStops(
const int& cxEachStop)
8161 ATLASSERT(::IsWindow(m_hWnd));
8162 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
8164 #endif // (_RICHEDIT_VER >= 0x0300) 8166 #if (_RICHEDIT_VER >= 0x0800) 8167 AutoCorrectProc GetAutoCorrectProc()
const 8169 ATLASSERT(::IsWindow(m_hWnd));
8170 return (AutoCorrectProc)::SendMessage(m_hWnd, EM_GETAUTOCORRECTPROC, 0, 0L);
8173 BOOL SetAutoCorrectProc(AutoCorrectProc pfn)
8175 ATLASSERT(::IsWindow(m_hWnd));
8176 return (BOOL)::SendMessage(m_hWnd, EM_SETAUTOCORRECTPROC, (WPARAM)pfn, 0L);
8179 BOOL CallAutoCorrectProc(WCHAR ch)
8181 ATLASSERT(::IsWindow(m_hWnd));
8182 return (BOOL)::SendMessage(m_hWnd, EM_CALLAUTOCORRECTPROC, (WPARAM)ch, 0L);
8185 DWORD GetEditStyleEx()
const 8187 ATLASSERT(::IsWindow(m_hWnd));
8188 return (DWORD)::SendMessage(m_hWnd, EM_GETEDITSTYLEEX, 0, 0L);
8191 DWORD SetEditStyleEx(DWORD dwStyleEx, DWORD dwMask)
8193 ATLASSERT(::IsWindow(m_hWnd));
8194 return (DWORD)::SendMessage(m_hWnd, EM_SETEDITSTYLEEX, dwStyleEx, dwMask);
8197 DWORD GetStoryType(
int nStoryIndex)
const 8199 ATLASSERT(::IsWindow(m_hWnd));
8200 return (DWORD)::SendMessage(m_hWnd, EM_GETSTORYTYPE, nStoryIndex, 0L);
8203 DWORD SetStoryType(
int nStoryIndex, DWORD dwStoryType)
8205 ATLASSERT(::IsWindow(m_hWnd));
8206 return (DWORD)::SendMessage(m_hWnd, EM_SETSTORYTYPE, nStoryIndex, dwStoryType);
8209 DWORD GetEllipsisMode()
const 8211 ATLASSERT(::IsWindow(m_hWnd));
8214 BOOL bRet = (BOOL)::SendMessage(m_hWnd, EM_GETELLIPSISMODE, 0, (LPARAM)&dwMode);
8216 ATLASSERT(bRet != FALSE);
8221 BOOL SetEllipsisMode(DWORD dwEllipsisMode)
8223 ATLASSERT(::IsWindow(m_hWnd));
8224 return (BOOL)::SendMessage(m_hWnd, EM_SETELLIPSISMODE, 0, dwEllipsisMode);
8227 BOOL GetEllipsisState()
const 8229 ATLASSERT(::IsWindow(m_hWnd));
8230 return (BOOL)::SendMessage(m_hWnd, EM_GETELLIPSISSTATE, 0, 0L);
8233 BOOL GetTouchOptions(
int nTouchOptions)
const 8235 ATLASSERT(::IsWindow(m_hWnd));
8236 return (BOOL)::SendMessage(m_hWnd, EM_GETTOUCHOPTIONS, nTouchOptions, 0L);
8239 void SetTouchOptions(
int nTouchOptions, BOOL bEnable)
8241 ATLASSERT(::IsWindow(m_hWnd));
8242 ::SendMessage(m_hWnd, EM_SETTOUCHOPTIONS, nTouchOptions, bEnable);
8245 HRESULT InsertTable(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
8247 ATLASSERT(::IsWindow(m_hWnd));
8248 return (HRESULT)::SendMessage(m_hWnd, EM_INSERTTABLE, (WPARAM)pRowParams, (LPARAM)pCellParams);
8251 HRESULT GetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
const 8253 ATLASSERT(::IsWindow(m_hWnd));
8254 return (HRESULT)::SendMessage(m_hWnd, EM_GETTABLEPARMS, (WPARAM)pRowParams, (LPARAM)pCellParams);
8257 HRESULT SetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
8259 ATLASSERT(::IsWindow(m_hWnd));
8260 return (HRESULT)::SendMessage(m_hWnd, EM_SETTABLEPARMS, (WPARAM)pRowParams, (LPARAM)pCellParams);
8263 HRESULT InsertImage(RICHEDIT_IMAGE_PARAMETERS* pParams)
8265 ATLASSERT(::IsWindow(m_hWnd));
8266 return (HRESULT)::SendMessage(m_hWnd, EM_INSERTIMAGE, 0, (LPARAM)pParams);
8269 BOOL SetUiaName(LPCTSTR lpstrName)
8271 ATLASSERT(::IsWindow(m_hWnd));
8272 return (BOOL)::SendMessage(m_hWnd, EM_SETUIANAME, 0, (LPARAM)lpstrName);
8274 #endif // (_RICHEDIT_VER >= 0x0800) 8279 #endif // !_WIN32_WCE 8313 #if (_RICHEDIT_VER >= 0x0200) 8314 COMMAND_ID_HANDLER(ID_EDIT_REDO, OnEditRedo)
8315 #endif // (_RICHEDIT_VER >= 0x0200) 8318 #if (_RICHEDIT_VER >= 0x0200) 8319 LRESULT OnEditRedo(WORD , WORD , HWND , BOOL& )
8321 T* pT =
static_cast<T*
>(
this);
8325 #endif // (_RICHEDIT_VER >= 0x0200) 8329 {
return HasSelection(); }
8331 BOOL CanCopy()
const 8332 {
return HasSelection(); }
8334 BOOL CanClear()
const 8335 {
return HasSelection(); }
8338 BOOL HasSelection()
const 8340 const T* pT =
static_cast<const T*
>(
this);
8341 return (pT->GetSelectionType() != SEL_EMPTY);
8345 #endif // _WIN32_WCE 8353 template <
class TBase>
8367 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8368 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8371 HWND hWnd = TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8380 ATLASSERT(::IsWindow(m_hWnd));
8381 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
8382 return ::MakeDragList(m_hWnd);
8385 int LBItemFromPt(POINT pt, BOOL bAutoScroll = TRUE)
8387 ATLASSERT(::IsWindow(m_hWnd));
8388 return ::LBItemFromPt(m_hWnd, pt, bAutoScroll);
8391 void DrawInsert(
int nItem)
8393 ATLASSERT(::IsWindow(m_hWnd));
8394 ::DrawInsert(GetParent(), m_hWnd, nItem);
8397 static UINT GetDragListMessage()
8399 static UINT uDragListMessage = 0;
8400 if(uDragListMessage == 0)
8403 if(FAILED(lock.Lock()))
8405 ATLTRACE2(atlTraceUI, 0, _T(
"ERROR : Unable to lock critical section in CDragListBox::GetDragListMessage.\n"));
8410 if(uDragListMessage == 0)
8411 uDragListMessage = ::RegisterWindowMessage(DRAGLISTMSGSTRING);
8415 ATLASSERT(uDragListMessage != 0);
8416 return uDragListMessage;
8427 MESSAGE_HANDLER(CDragListBox::GetDragListMessage(), OnDragListNotify)
8430 LRESULT OnDragListNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
8433 ATLASSERT(uMsg == CDragListBox::GetDragListMessage());
8434 T* pT =
static_cast<T*
>(
this);
8435 LPDRAGLISTINFO lpDragListInfo = (LPDRAGLISTINFO)lParam;
8437 switch(lpDragListInfo->uNotification)
8440 lRet = (LPARAM)pT->OnBeginDrag((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8443 pT->OnCancelDrag((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8446 lRet = (LPARAM)pT->OnDragging((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8449 pT->OnDropped((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8452 ATLTRACE2(atlTraceUI, 0, _T(
"Unknown DragListBox notification\n"));
8460 BOOL OnBeginDrag(
int , HWND , POINT )
8465 void OnCancelDrag(
int , HWND , POINT )
8470 int OnDragging(
int , HWND , POINT )
8475 void OnDropped(
int , HWND , POINT )
8481 #endif // _WIN32_WCE 8487 template <
class TBase>
8501 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8502 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8505 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8509 static LPCTSTR GetWndClassName()
8511 return REBARCLASSNAME;
8514 UINT GetBandCount()
const 8516 ATLASSERT(::IsWindow(m_hWnd));
8517 return (UINT)::SendMessage(m_hWnd, RB_GETBANDCOUNT, 0, 0L);
8520 BOOL GetBandInfo(
int nBand, LPREBARBANDINFO lprbbi)
const 8522 ATLASSERT(::IsWindow(m_hWnd));
8523 return (BOOL)::SendMessage(m_hWnd, RB_GETBANDINFO, nBand, (LPARAM)lprbbi);
8526 BOOL SetBandInfo(
int nBand, LPREBARBANDINFO lprbbi)
8528 ATLASSERT(::IsWindow(m_hWnd));
8529 return (BOOL)::SendMessage(m_hWnd, RB_SETBANDINFO, nBand, (LPARAM)lprbbi);
8532 BOOL GetBarInfo(LPREBARINFO lprbi)
const 8534 ATLASSERT(::IsWindow(m_hWnd));
8535 return (BOOL)::SendMessage(m_hWnd, RB_GETBARINFO, 0, (LPARAM)lprbi);
8538 BOOL SetBarInfo(LPREBARINFO lprbi)
8540 ATLASSERT(::IsWindow(m_hWnd));
8541 return (BOOL)::SendMessage(m_hWnd, RB_SETBARINFO, 0, (LPARAM)lprbi);
8544 CImageList GetImageList()
const 8546 ATLASSERT(::IsWindow(m_hWnd));
8547 REBARINFO rbi = { 0 };
8548 rbi.cbSize =
sizeof(REBARINFO);
8549 rbi.fMask = RBIM_IMAGELIST;
8550 BOOL bRet = (BOOL)::SendMessage(m_hWnd, RB_GETBARINFO, 0, (LPARAM)&rbi);
8551 return CImageList((bRet != FALSE) ? rbi.himl : NULL);
8554 BOOL SetImageList(HIMAGELIST hImageList)
8556 ATLASSERT(::IsWindow(m_hWnd));
8557 REBARINFO rbi = { 0 };
8558 rbi.cbSize =
sizeof(REBARINFO);
8559 rbi.fMask = RBIM_IMAGELIST;
8560 rbi.himl = hImageList;
8561 return (BOOL)::SendMessage(m_hWnd, RB_SETBARINFO, 0, (LPARAM)&rbi);
8564 UINT GetRowCount()
const 8566 ATLASSERT(::IsWindow(m_hWnd));
8567 return (UINT)::SendMessage(m_hWnd, RB_GETROWCOUNT, 0, 0L);
8570 UINT GetRowHeight(
int nBand)
const 8572 ATLASSERT(::IsWindow(m_hWnd));
8573 return (UINT)::SendMessage(m_hWnd, RB_GETROWHEIGHT, nBand, 0L);
8576 #if (_WIN32_IE >= 0x0400) 8577 COLORREF GetTextColor()
const 8579 ATLASSERT(::IsWindow(m_hWnd));
8580 return (COLORREF)::SendMessage(m_hWnd, RB_GETTEXTCOLOR, 0, 0L);
8583 COLORREF SetTextColor(COLORREF clr)
8585 ATLASSERT(::IsWindow(m_hWnd));
8586 return (COLORREF)::SendMessage(m_hWnd, RB_SETTEXTCOLOR, 0, (LPARAM)clr);
8589 COLORREF GetBkColor()
const 8591 ATLASSERT(::IsWindow(m_hWnd));
8592 return (COLORREF)::SendMessage(m_hWnd, RB_GETBKCOLOR, 0, 0L);
8595 COLORREF SetBkColor(COLORREF clr)
8597 ATLASSERT(::IsWindow(m_hWnd));
8598 return (COLORREF)::SendMessage(m_hWnd, RB_SETBKCOLOR, 0, (LPARAM)clr);
8601 UINT GetBarHeight()
const 8603 ATLASSERT(::IsWindow(m_hWnd));
8604 return (UINT)::SendMessage(m_hWnd, RB_GETBARHEIGHT, 0, 0L);
8607 BOOL GetRect(
int nBand, LPRECT lpRect)
const 8609 ATLASSERT(::IsWindow(m_hWnd));
8610 return (BOOL)::SendMessage(m_hWnd, RB_GETRECT, nBand, (LPARAM)lpRect);
8614 CToolTipCtrl GetToolTips()
const 8616 ATLASSERT(::IsWindow(m_hWnd));
8617 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, RB_GETTOOLTIPS, 0, 0L));
8620 void SetToolTips(HWND hwndToolTip)
8622 ATLASSERT(::IsWindow(m_hWnd));
8623 ::SendMessage(m_hWnd, RB_SETTOOLTIPS, (WPARAM)hwndToolTip, 0L);
8625 #endif // !_WIN32_WCE 8627 void GetBandBorders(
int nBand, LPRECT lpRect)
const 8629 ATLASSERT(::IsWindow(m_hWnd));
8630 ATLASSERT(lpRect != NULL);
8631 ::SendMessage(m_hWnd, RB_GETBANDBORDERS, nBand, (LPARAM)lpRect);
8635 BOOL GetColorScheme(LPCOLORSCHEME lpColorScheme)
const 8637 ATLASSERT(::IsWindow(m_hWnd));
8638 ATLASSERT(lpColorScheme != NULL);
8639 return (BOOL)::SendMessage(m_hWnd, RB_GETCOLORSCHEME, 0, (LPARAM)lpColorScheme);
8642 void SetColorScheme(LPCOLORSCHEME lpColorScheme)
8644 ATLASSERT(::IsWindow(m_hWnd));
8645 ATLASSERT(lpColorScheme != NULL);
8646 ::SendMessage(m_hWnd, RB_SETCOLORSCHEME, 0, (LPARAM)lpColorScheme);
8649 HPALETTE GetPalette()
const 8651 ATLASSERT(::IsWindow(m_hWnd));
8652 return (HPALETTE)::SendMessage(m_hWnd, RB_GETPALETTE, 0, 0L);
8655 HPALETTE SetPalette(HPALETTE hPalette)
8657 ATLASSERT(::IsWindow(m_hWnd));
8658 return (HPALETTE)::SendMessage(m_hWnd, RB_SETPALETTE, 0, (LPARAM)hPalette);
8661 BOOL GetUnicodeFormat()
const 8663 ATLASSERT(::IsWindow(m_hWnd));
8664 return (BOOL)::SendMessage(m_hWnd, RB_GETUNICODEFORMAT, 0, 0L);
8667 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
8669 ATLASSERT(::IsWindow(m_hWnd));
8670 return (BOOL)::SendMessage(m_hWnd, RB_SETUNICODEFORMAT, bUnicode, 0L);
8672 #endif // !_WIN32_WCE 8673 #endif // (_WIN32_IE >= 0x0400) 8675 #if (_WIN32_WINNT >= 0x0501) 8678 typedef struct _MARGINS* PMARGINS;
8679 #endif // !_UXTHEME_H_ 8680 void GetBandMargins(PMARGINS pMargins)
const 8682 ATLASSERT(::IsWindow(m_hWnd));
8683 ::SendMessage(m_hWnd, RB_GETBANDMARGINS, 0, (LPARAM)pMargins);
8686 void SetWindowTheme(LPCWSTR lpstrTheme)
8688 ATLASSERT(::IsWindow(m_hWnd));
8689 ::SendMessage(m_hWnd, RB_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
8691 #endif // (_WIN32_WINNT >= 0x0501) 8693 #if (_WIN32_IE >= 0x0600) 8694 DWORD GetExtendedStyle()
const 8696 #ifndef RB_GETEXTENDEDSTYLE 8697 const UINT RB_GETEXTENDEDSTYLE = WM_USER + 42;
8699 ATLASSERT(::IsWindow(m_hWnd));
8700 return (DWORD)::SendMessage(m_hWnd, RB_GETEXTENDEDSTYLE, 0, 0L);
8703 DWORD SetExtendedStyle(DWORD dwStyle, DWORD dwMask)
8705 #ifndef RB_SETEXTENDEDSTYLE 8706 const UINT RB_SETEXTENDEDSTYLE = WM_USER + 41;
8708 ATLASSERT(::IsWindow(m_hWnd));
8709 return (DWORD)::SendMessage(m_hWnd, RB_SETEXTENDEDSTYLE, dwMask, dwStyle);
8711 #endif // (_WIN32_IE >= 0x0600) 8714 BOOL InsertBand(
int nBand, LPREBARBANDINFO lprbbi)
8716 ATLASSERT(::IsWindow(m_hWnd));
8717 return (BOOL)::SendMessage(m_hWnd, RB_INSERTBAND, nBand, (LPARAM)lprbbi);
8720 BOOL AddBand(LPREBARBANDINFO lprbbi)
8722 return InsertBand(-1, lprbbi);
8725 BOOL DeleteBand(
int nBand)
8727 ATLASSERT(::IsWindow(m_hWnd));
8728 return (BOOL)::SendMessage(m_hWnd, RB_DELETEBAND, nBand, 0L);
8731 ATL::CWindow SetNotifyWnd(HWND hWnd)
8733 ATLASSERT(::IsWindow(m_hWnd));
8734 return ATL::CWindow((HWND)::SendMessage(m_hWnd, RB_SETPARENT, (WPARAM)hWnd, 0L));
8737 #if (_WIN32_IE >= 0x0400) 8738 void BeginDrag(
int nBand, DWORD dwPos)
8740 ATLASSERT(::IsWindow(m_hWnd));
8741 ::SendMessage(m_hWnd, RB_BEGINDRAG, nBand, dwPos);
8744 void BeginDrag(
int nBand,
int xPos,
int yPos)
8746 ATLASSERT(::IsWindow(m_hWnd));
8747 ::SendMessage(m_hWnd, RB_BEGINDRAG, nBand, MAKELPARAM(xPos, yPos));
8752 ATLASSERT(::IsWindow(m_hWnd));
8753 ::SendMessage(m_hWnd, RB_ENDDRAG, 0, 0L);
8756 void DragMove(DWORD dwPos)
8758 ATLASSERT(::IsWindow(m_hWnd));
8759 ::SendMessage(m_hWnd, RB_DRAGMOVE, 0, dwPos);
8762 void DragMove(
int xPos,
int yPos)
8764 ATLASSERT(::IsWindow(m_hWnd));
8765 ::SendMessage(m_hWnd, RB_DRAGMOVE, 0, MAKELPARAM(xPos, yPos));
8769 void GetDropTarget(IDropTarget** ppDropTarget)
const 8771 ATLASSERT(::IsWindow(m_hWnd));
8772 ::SendMessage(m_hWnd, RB_GETDROPTARGET, 0, (LPARAM)ppDropTarget);
8774 #endif // !_WIN32_WCE 8776 void MaximizeBand(
int nBand, BOOL bIdeal = FALSE)
8778 ATLASSERT(::IsWindow(m_hWnd));
8779 ::SendMessage(m_hWnd, RB_MAXIMIZEBAND, nBand, bIdeal);
8782 void MinimizeBand(
int nBand)
8784 ATLASSERT(::IsWindow(m_hWnd));
8785 ::SendMessage(m_hWnd, RB_MINIMIZEBAND, nBand, 0L);
8788 BOOL SizeToRect(LPRECT lpRect)
8790 ATLASSERT(::IsWindow(m_hWnd));
8791 return (BOOL)::SendMessage(m_hWnd, RB_SIZETORECT, 0, (LPARAM)lpRect);
8794 int IdToIndex(UINT uBandID)
const 8796 ATLASSERT(::IsWindow(m_hWnd));
8797 return (
int)::SendMessage(m_hWnd, RB_IDTOINDEX, uBandID, 0L);
8800 int HitTest(LPRBHITTESTINFO lprbht)
const 8802 ATLASSERT(::IsWindow(m_hWnd));
8803 return (
int)::SendMessage(m_hWnd, RB_HITTEST, 0, (LPARAM)lprbht);
8806 BOOL ShowBand(
int nBand, BOOL bShow)
8808 ATLASSERT(::IsWindow(m_hWnd));
8809 return (BOOL)::SendMessage(m_hWnd, RB_SHOWBAND, nBand, bShow);
8813 BOOL MoveBand(
int nBand,
int nNewPos)
8815 ATLASSERT(::IsWindow(m_hWnd));
8816 ATLASSERT(nNewPos >= 0 && nNewPos <= ((
int)GetBandCount() - 1));
8817 return (BOOL)::SendMessage(m_hWnd, RB_MOVEBAND, nBand, nNewPos);
8819 #endif // !_WIN32_WCE 8820 #endif // (_WIN32_IE >= 0x0400) 8822 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 8823 void PushChevron(
int nBand, LPARAM lAppValue)
8825 ATLASSERT(::IsWindow(m_hWnd));
8826 ::SendMessage(m_hWnd, RB_PUSHCHEVRON, nBand, lAppValue);
8828 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 8831 #if (_WIN32_IE >= 0x0400) 8832 void LockBands(
bool bLock)
8834 int nBandCount = GetBandCount();
8835 for(
int i =0; i < nBandCount; i++)
8837 REBARBANDINFO rbbi = { RunTimeHelper::SizeOf_REBARBANDINFO() };
8838 rbbi.fMask = RBBIM_STYLE;
8839 BOOL bRet = GetBandInfo(i, &rbbi);
8842 if((rbbi.fStyle & RBBS_GRIPPERALWAYS) == 0)
8844 rbbi.fStyle |= RBBS_GRIPPERALWAYS;
8845 bRet = SetBandInfo(i, &rbbi);
8847 rbbi.fStyle &= ~RBBS_GRIPPERALWAYS;
8851 rbbi.fStyle |= RBBS_NOGRIPPER;
8853 rbbi.fStyle &= ~RBBS_NOGRIPPER;
8855 bRet = SetBandInfo(i, &rbbi);
8859 #endif // (_WIN32_IE >= 0x0400) 8861 #if (_WIN32_WINNT >= 0x0600) 8862 BOOL SetBandWidth(
int nBand,
int cxWidth)
8864 ATLASSERT(::IsWindow(m_hWnd));
8865 return (BOOL)::SendMessage(m_hWnd, RB_SETBANDWIDTH, nBand, cxWidth);
8867 #endif // (_WIN32_WINNT >= 0x0600) 8878 template <
class TBase>
8892 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8893 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8896 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8900 static LPCTSTR GetWndClassName()
8902 return WC_COMBOBOXEX;
8905 CImageList GetImageList()
const 8907 ATLASSERT(::IsWindow(m_hWnd));
8908 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, CBEM_GETIMAGELIST, 0, 0L));
8911 CImageList SetImageList(HIMAGELIST hImageList)
8913 ATLASSERT(::IsWindow(m_hWnd));
8914 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, CBEM_SETIMAGELIST, 0, (LPARAM)hImageList));
8917 #if (_WIN32_IE >= 0x0400) 8918 DWORD GetExtendedStyle()
const 8920 ATLASSERT(::IsWindow(m_hWnd));
8921 return (DWORD)::SendMessage(m_hWnd, CBEM_GETEXTENDEDSTYLE, 0, 0L);
8924 DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyle)
8926 ATLASSERT(::IsWindow(m_hWnd));
8927 return (DWORD)::SendMessage(m_hWnd, CBEM_SETEXTENDEDSTYLE, dwExMask, dwExStyle);
8930 BOOL GetUnicodeFormat()
const 8932 ATLASSERT(::IsWindow(m_hWnd));
8933 return (BOOL)::SendMessage(m_hWnd, CBEM_GETUNICODEFORMAT, 0, 0L);
8936 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
8938 ATLASSERT(::IsWindow(m_hWnd));
8939 return (BOOL)::SendMessage(m_hWnd, CBEM_SETUNICODEFORMAT, bUnicode, 0L);
8941 #endif // (_WIN32_IE >= 0x0400) 8943 #if (_WIN32_WINNT >= 0x0501) 8944 void SetWindowTheme(LPCWSTR lpstrTheme)
8946 ATLASSERT(::IsWindow(m_hWnd));
8947 ::SendMessage(m_hWnd, CBEM_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
8949 #endif // (_WIN32_WINNT >= 0x0501) 8952 int InsertItem(
const COMBOBOXEXITEM* lpcCBItem)
8954 ATLASSERT(::IsWindow(m_hWnd));
8955 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)lpcCBItem);
8958 int InsertItem(UINT nMask,
int nIndex, LPCTSTR lpszItem,
int nImage,
int nSelImage,
8959 int iIndent,
int iOverlay, LPARAM lParam)
8961 ATLASSERT(::IsWindow(m_hWnd));
8962 COMBOBOXEXITEM cbex = { 0 };
8964 cbex.iItem = nIndex;
8965 cbex.pszText = (LPTSTR) lpszItem;
8966 cbex.iImage = nImage;
8967 cbex.iSelectedImage = nSelImage;
8968 cbex.iIndent = iIndent;
8969 cbex.iOverlay = iOverlay;
8970 cbex.lParam = lParam;
8971 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)&cbex);
8974 int InsertItem(
int nIndex, LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent, LPARAM lParam = 0)
8976 ATLASSERT(::IsWindow(m_hWnd));
8977 COMBOBOXEXITEM cbex = { 0 };
8978 cbex.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT | CBEIF_LPARAM;
8979 cbex.iItem = nIndex;
8980 cbex.pszText = (LPTSTR) lpszItem;
8981 cbex.iImage = nImage;
8982 cbex.iSelectedImage = nSelImage;
8983 cbex.iIndent = iIndent;
8984 cbex.lParam = lParam;
8985 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)&cbex);
8988 int AddItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent,
int iOverlay, LPARAM lParam)
8990 return InsertItem(nMask, -1, lpszItem, nImage, nSelImage, iIndent, iOverlay, lParam);
8993 int AddItem(LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent, LPARAM lParam = 0)
8995 return InsertItem(-1, lpszItem, nImage, nSelImage, iIndent, lParam);
8998 int DeleteItem(
int nIndex)
9000 ATLASSERT(::IsWindow(m_hWnd));
9001 return (
int)::SendMessage(m_hWnd, CBEM_DELETEITEM, nIndex, 0L);
9004 BOOL GetItem(PCOMBOBOXEXITEM pCBItem)
const 9006 ATLASSERT(::IsWindow(m_hWnd));
9007 return (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)pCBItem);
9010 BOOL SetItem(
const COMBOBOXEXITEM* lpcCBItem)
9012 ATLASSERT(::IsWindow(m_hWnd));
9013 return (BOOL)::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM)lpcCBItem);
9016 int SetItem(
int nIndex, UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelImage,
9017 int iIndent,
int iOverlay, LPARAM lParam)
9019 ATLASSERT(::IsWindow(m_hWnd));
9020 COMBOBOXEXITEM cbex = { 0 };
9022 cbex.iItem = nIndex;
9023 cbex.pszText = (LPTSTR) lpszItem;
9024 cbex.iImage = nImage;
9025 cbex.iSelectedImage = nSelImage;
9026 cbex.iIndent = iIndent;
9027 cbex.iOverlay = iOverlay;
9028 cbex.lParam = lParam;
9029 return (
int)::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM)&cbex);
9032 BOOL GetItemText(
int nIndex, LPTSTR lpszItem,
int nLen)
const 9034 ATLASSERT(::IsWindow(m_hWnd));
9035 ATLASSERT(lpszItem != NULL);
9037 COMBOBOXEXITEM cbex = { 0 };
9038 cbex.mask = CBEIF_TEXT;
9039 cbex.iItem = nIndex;
9040 cbex.pszText = lpszItem;
9041 cbex.cchTextMax = nLen;
9043 return (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
9047 BOOL GetItemText(
int nIndex, BSTR& bstrText)
const 9050 ATLASSERT(::IsWindow(m_hWnd));
9051 ATLASSERT(bstrText == NULL);
9053 COMBOBOXEXITEM cbex = { 0 };
9054 cbex.mask = CBEIF_TEXT;
9055 cbex.iItem = nIndex;
9057 LPTSTR lpstrText = NULL;
9059 for(
int nLen = 256; ; nLen *= 2)
9061 ATLTRY(lpstrText =
new TCHAR[nLen]);
9062 if(lpstrText == NULL)
9064 lpstrText[0] = NULL;
9065 cbex.pszText = lpstrText;
9066 cbex.cchTextMax = nLen;
9067 bRet = (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
9068 if(!bRet || (lstrlen(cbex.pszText) < nLen - 1))
9070 delete [] lpstrText;
9074 if(lpstrText != NULL)
9077 bstrText = ::SysAllocString(T2OLE(lpstrText));
9078 delete [] lpstrText;
9081 return (bstrText != NULL) ? TRUE : FALSE;
9083 #endif // !_ATL_NO_COM 9085 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 9086 BOOL GetItemText(
int nIndex, _CSTRING_NS::CString& strText)
const 9088 ATLASSERT(::IsWindow(m_hWnd));
9090 COMBOBOXEXITEM cbex = { 0 };
9091 cbex.mask = CBEIF_TEXT;
9092 cbex.iItem = nIndex;
9096 for(
int nLen = 256; ; nLen *= 2)
9098 cbex.pszText = strText.GetBufferSetLength(nLen);
9099 if(cbex.pszText == NULL)
9104 cbex.cchTextMax = nLen;
9105 bRet = (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
9106 if(!bRet || (lstrlen(cbex.pszText) < nLen - 1))
9109 strText.ReleaseBuffer();
9112 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 9114 BOOL SetItemText(
int nIndex, LPCTSTR lpszItem)
9116 ATLASSERT(::IsWindow(m_hWnd));
9117 return SetItem(nIndex, CBEIF_TEXT, lpszItem, 0, 0, 0, 0, 0);
9120 CComboBox GetComboCtrl()
const 9122 ATLASSERT(::IsWindow(m_hWnd));
9123 return CComboBox((HWND)::SendMessage(m_hWnd, CBEM_GETCOMBOCONTROL, 0, 0L));
9126 CEdit GetEditCtrl()
const 9128 ATLASSERT(::IsWindow(m_hWnd));
9129 return CEdit((HWND)::SendMessage(m_hWnd, CBEM_GETEDITCONTROL, 0, 0L));
9132 BOOL HasEditChanged()
const 9134 ATLASSERT(::IsWindow(m_hWnd));
9135 return (BOOL)::SendMessage(m_hWnd, CBEM_HASEDITCHANGED, 0, 0L);
9139 int AddString(LPCTSTR )
9145 int InsertString(
int , LPCTSTR )
9151 int Dir(UINT , LPCTSTR )
9157 int FindString(
int , LPCTSTR )
const 9166 #endif // !_WIN32_WCE 9172 template <
class TBase>
9186 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9187 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9190 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9194 static LPCTSTR GetWndClassName()
9196 return MONTHCAL_CLASS;
9199 COLORREF GetColor(
int nColorType)
const 9201 ATLASSERT(::IsWindow(m_hWnd));
9202 return (COLORREF)::SendMessage(m_hWnd, MCM_GETCOLOR, nColorType, 0L);
9205 COLORREF SetColor(
int nColorType, COLORREF clr)
9207 ATLASSERT(::IsWindow(m_hWnd));
9208 return (COLORREF)::SendMessage(m_hWnd, MCM_SETCOLOR, nColorType, clr);
9211 BOOL GetCurSel(LPSYSTEMTIME lpSysTime)
const 9213 ATLASSERT(::IsWindow(m_hWnd));
9214 return (BOOL)::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM)lpSysTime);
9217 BOOL SetCurSel(LPSYSTEMTIME lpSysTime)
9219 ATLASSERT(::IsWindow(m_hWnd));
9220 return (BOOL)::SendMessage(m_hWnd, MCM_SETCURSEL, 0, (LPARAM)lpSysTime);
9223 int GetFirstDayOfWeek(BOOL* pbLocaleVal = NULL)
const 9225 ATLASSERT(::IsWindow(m_hWnd));
9226 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, MCM_GETFIRSTDAYOFWEEK, 0, 0L);
9227 if(pbLocaleVal != NULL)
9228 *pbLocaleVal = (BOOL)HIWORD(dwRet);
9229 return (
int)(short)LOWORD(dwRet);
9232 int SetFirstDayOfWeek(
int nDay, BOOL* pbLocaleVal = NULL)
9234 ATLASSERT(::IsWindow(m_hWnd));
9235 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, MCM_SETFIRSTDAYOFWEEK, 0, nDay);
9236 if(pbLocaleVal != NULL)
9237 *pbLocaleVal = (BOOL)HIWORD(dwRet);
9238 return (
int)(short)LOWORD(dwRet);
9241 int GetMaxSelCount()
const 9243 ATLASSERT(::IsWindow(m_hWnd));
9244 return (
int)::SendMessage(m_hWnd, MCM_GETMAXSELCOUNT, 0, 0L);
9247 BOOL SetMaxSelCount(
int nMax)
9249 ATLASSERT(::IsWindow(m_hWnd));
9250 return (BOOL)::SendMessage(m_hWnd, MCM_SETMAXSELCOUNT, nMax, 0L);
9253 int GetMonthDelta()
const 9255 ATLASSERT(::IsWindow(m_hWnd));
9256 return (
int)::SendMessage(m_hWnd, MCM_GETMONTHDELTA, 0, 0L);
9259 int SetMonthDelta(
int nDelta)
9261 ATLASSERT(::IsWindow(m_hWnd));
9262 return (
int)::SendMessage(m_hWnd, MCM_SETMONTHDELTA, nDelta, 0L);
9265 DWORD GetRange(LPSYSTEMTIME lprgSysTimeArray)
const 9267 ATLASSERT(::IsWindow(m_hWnd));
9268 return (DWORD)::SendMessage(m_hWnd, MCM_GETRANGE, 0, (LPARAM)lprgSysTimeArray);
9271 BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lprgSysTimeArray)
9273 ATLASSERT(::IsWindow(m_hWnd));
9274 return (BOOL)::SendMessage(m_hWnd, MCM_SETRANGE, dwFlags, (LPARAM)lprgSysTimeArray);
9277 BOOL GetSelRange(LPSYSTEMTIME lprgSysTimeArray)
const 9279 ATLASSERT(::IsWindow(m_hWnd));
9280 return (BOOL)::SendMessage(m_hWnd, MCM_GETSELRANGE, 0, (LPARAM)lprgSysTimeArray);
9283 BOOL SetSelRange(LPSYSTEMTIME lprgSysTimeArray)
9285 ATLASSERT(::IsWindow(m_hWnd));
9286 return (BOOL)::SendMessage(m_hWnd, MCM_SETSELRANGE, 0, (LPARAM)lprgSysTimeArray);
9289 BOOL GetToday(LPSYSTEMTIME lpSysTime)
const 9291 ATLASSERT(::IsWindow(m_hWnd));
9292 return (BOOL)::SendMessage(m_hWnd, MCM_GETTODAY, 0, (LPARAM)lpSysTime);
9295 void SetToday(LPSYSTEMTIME lpSysTime)
9297 ATLASSERT(::IsWindow(m_hWnd));
9298 ::SendMessage(m_hWnd, MCM_SETTODAY, 0, (LPARAM)lpSysTime);
9301 BOOL GetMinReqRect(LPRECT lpRectInfo)
const 9303 ATLASSERT(::IsWindow(m_hWnd));
9304 return (BOOL)::SendMessage(m_hWnd, MCM_GETMINREQRECT, 0, (LPARAM)lpRectInfo);
9307 int GetMaxTodayWidth()
const 9309 ATLASSERT(::IsWindow(m_hWnd));
9310 return (
int)::SendMessage(m_hWnd, MCM_GETMAXTODAYWIDTH, 0, 0L);
9313 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9314 BOOL GetUnicodeFormat()
const 9316 ATLASSERT(::IsWindow(m_hWnd));
9317 return (BOOL)::SendMessage(m_hWnd, MCM_GETUNICODEFORMAT, 0, 0L);
9320 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
9322 ATLASSERT(::IsWindow(m_hWnd));
9323 return (BOOL)::SendMessage(m_hWnd, MCM_SETUNICODEFORMAT, bUnicode, 0L);
9325 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9327 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9328 DWORD GetCurrentView()
const 9330 ATLASSERT(::IsWindow(m_hWnd));
9331 return (DWORD)::SendMessage(m_hWnd, MCM_GETCURRENTVIEW, 0, 0L);
9334 BOOL SetCurrentView(DWORD dwView)
9336 ATLASSERT(::IsWindow(m_hWnd));
9337 return (BOOL)::SendMessage(m_hWnd, MCM_SETCURRENTVIEW, 0, dwView);
9340 DWORD GetCalendarCount()
const 9342 ATLASSERT(::IsWindow(m_hWnd));
9343 return (DWORD)::SendMessage(m_hWnd, MCM_GETCALENDARCOUNT, 0, 0L);
9346 BOOL GetCalendarGridInfo(PMCGRIDINFO pGridInfo)
const 9348 ATLASSERT(::IsWindow(m_hWnd));
9349 return (BOOL)::SendMessage(m_hWnd, MCM_GETCALENDARGRIDINFO, 0, (LPARAM)pGridInfo);
9352 CALID GetCALID()
const 9354 ATLASSERT(::IsWindow(m_hWnd));
9355 return (CALID)::SendMessage(m_hWnd, MCM_GETCALID, 0, 0L);
9358 void SetCALID(CALID calid)
9360 ATLASSERT(::IsWindow(m_hWnd));
9361 ::SendMessage(m_hWnd, MCM_SETCALID, (LPARAM)calid, 0L);
9364 int GetCalendarBorder()
const 9366 ATLASSERT(::IsWindow(m_hWnd));
9367 return (
int)::SendMessage(m_hWnd, MCM_GETCALENDARBORDER, 0, 0L);
9370 void SetCalendarBorder(
int cxyBorder, BOOL bSet = TRUE)
9372 ATLASSERT(::IsWindow(m_hWnd));
9373 ::SendMessage(m_hWnd, MCM_SETCALENDARBORDER, (WPARAM)bSet, (LPARAM)cxyBorder);
9375 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9378 int GetMonthRange(DWORD dwFlags, LPSYSTEMTIME lprgSysTimeArray)
const 9380 ATLASSERT(::IsWindow(m_hWnd));
9381 return (
int)::SendMessage(m_hWnd, MCM_GETMONTHRANGE, dwFlags, (LPARAM)lprgSysTimeArray);
9384 BOOL SetDayState(
int nMonths, LPMONTHDAYSTATE lpDayStateArray)
9386 ATLASSERT(::IsWindow(m_hWnd));
9387 return (BOOL)::SendMessage(m_hWnd, MCM_SETDAYSTATE, nMonths, (LPARAM)lpDayStateArray);
9390 DWORD HitTest(PMCHITTESTINFO pMCHitTest)
const 9392 ATLASSERT(::IsWindow(m_hWnd));
9393 return (DWORD)::SendMessage(m_hWnd, MCM_HITTEST, 0, (LPARAM)pMCHitTest);
9396 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9397 void SizeRectToMin(LPRECT lpRect)
9399 ATLASSERT(::IsWindow(m_hWnd));
9400 ::SendMessage(m_hWnd, MCM_SIZERECTTOMIN, 0, (LPARAM)lpRect);
9402 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9411 template <
class TBase>
9425 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9426 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9429 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9433 static LPCTSTR GetWndClassName()
9435 return DATETIMEPICK_CLASS;
9438 BOOL SetFormat(LPCTSTR lpszFormat)
9440 ATLASSERT(::IsWindow(m_hWnd));
9441 return (BOOL)::SendMessage(m_hWnd, DTM_SETFORMAT, 0, (LPARAM)lpszFormat);
9444 COLORREF GetMonthCalColor(
int nColorType)
const 9446 ATLASSERT(::IsWindow(m_hWnd));
9447 return (COLORREF)::SendMessage(m_hWnd, DTM_GETMCCOLOR, nColorType, 0L);
9450 COLORREF SetMonthCalColor(
int nColorType, COLORREF clr)
9452 ATLASSERT(::IsWindow(m_hWnd));
9453 return (COLORREF)::SendMessage(m_hWnd, DTM_SETMCCOLOR, nColorType, clr);
9456 DWORD GetRange(LPSYSTEMTIME lpSysTimeArray)
const 9458 ATLASSERT(::IsWindow(m_hWnd));
9459 return (DWORD)::SendMessage(m_hWnd, DTM_GETRANGE, 0, (LPARAM)lpSysTimeArray);
9462 BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lpSysTimeArray)
9464 ATLASSERT(::IsWindow(m_hWnd));
9465 return (BOOL)::SendMessage(m_hWnd, DTM_SETRANGE, dwFlags, (LPARAM)lpSysTimeArray);
9468 DWORD GetSystemTime(LPSYSTEMTIME lpSysTime)
const 9470 ATLASSERT(::IsWindow(m_hWnd));
9471 return (DWORD)::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)lpSysTime);
9474 BOOL SetSystemTime(DWORD dwFlags, LPSYSTEMTIME lpSysTime)
9476 ATLASSERT(::IsWindow(m_hWnd));
9477 return (BOOL)::SendMessage(m_hWnd, DTM_SETSYSTEMTIME, dwFlags, (LPARAM)lpSysTime);
9480 CMonthCalendarCtrl GetMonthCal()
const 9482 ATLASSERT(::IsWindow(m_hWnd));
9483 return CMonthCalendarCtrl((HWND)::SendMessage(m_hWnd, DTM_GETMONTHCAL, 0, 0L));
9486 #if (_WIN32_IE >= 0x0400) 9489 ATLASSERT(::IsWindow(m_hWnd));
9490 return CFontHandle((HFONT)::SendMessage(m_hWnd, DTM_GETMCFONT, 0, 0L));
9493 void SetMonthCalFont(HFONT hFont, BOOL bRedraw = TRUE)
9495 ATLASSERT(::IsWindow(m_hWnd));
9496 ::SendMessage(m_hWnd, DTM_SETMCFONT, (WPARAM)hFont, MAKELPARAM(bRedraw, 0));
9498 #endif // (_WIN32_IE >= 0x0400) 9500 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9501 DWORD GetMonthCalStyle()
const 9503 ATLASSERT(::IsWindow(m_hWnd));
9504 return (DWORD)::SendMessage(m_hWnd, DTM_GETMCSTYLE, 0, 0L);
9507 DWORD SetMonthCalStyle(DWORD dwStyle)
9509 ATLASSERT(::IsWindow(m_hWnd));
9510 return (DWORD)::SendMessage(m_hWnd, DTM_SETMCSTYLE, 0, (LPARAM)dwStyle);
9513 void GetDateTimePickerInfo(LPDATETIMEPICKERINFO lpPickerInfo)
const 9515 ATLASSERT(::IsWindow(m_hWnd));
9516 ::SendMessage(m_hWnd, DTM_GETDATETIMEPICKERINFO, 0, (LPARAM)lpPickerInfo);
9519 BOOL GetIdealSize(LPSIZE lpSize)
const 9521 ATLASSERT(::IsWindow(m_hWnd));
9522 return (BOOL)::SendMessage(m_hWnd, DTM_GETIDEALSIZE, 0, (LPARAM)lpSize);
9525 void CloseMonthCal()
9527 ATLASSERT(::IsWindow(m_hWnd));
9528 ::SendMessage(m_hWnd, DTM_CLOSEMONTHCAL, 0, 0L);
9530 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9539 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9542 class CFlatScrollBarImpl
9546 BOOL FlatSB_Initialize()
9548 T* pT =
static_cast<T*
>(
this);
9549 ATLASSERT(::IsWindow(pT->m_hWnd));
9550 return ::InitializeFlatSB(pT->m_hWnd);
9553 HRESULT FlatSB_Uninitialize()
9555 T* pT =
static_cast<T*
>(
this);
9556 ATLASSERT(::IsWindow(pT->m_hWnd));
9557 return ::UninitializeFlatSB(pT->m_hWnd);
9561 BOOL FlatSB_GetScrollProp(UINT uIndex, LPINT lpnValue)
const 9563 const T* pT =
static_cast<const T*
>(
this);
9564 ATLASSERT(::IsWindow(pT->m_hWnd));
9565 return ::FlatSB_GetScrollProp(pT->m_hWnd, uIndex, lpnValue);
9568 BOOL FlatSB_SetScrollProp(UINT uIndex,
int nValue, BOOL bRedraw = TRUE)
9570 T* pT =
static_cast<T*
>(
this);
9571 ATLASSERT(::IsWindow(pT->m_hWnd));
9572 return ::FlatSB_SetScrollProp(pT->m_hWnd, uIndex, nValue, bRedraw);
9576 int FlatSB_GetScrollPos(
int nBar)
const 9578 const T* pT =
static_cast<const T*
>(
this);
9579 ATLASSERT(::IsWindow(pT->m_hWnd));
9580 return ::FlatSB_GetScrollPos(pT->m_hWnd, nBar);
9583 int FlatSB_SetScrollPos(
int nBar,
int nPos, BOOL bRedraw = TRUE)
9585 T* pT =
static_cast<T*
>(
this);
9586 ATLASSERT(::IsWindow(pT->m_hWnd));
9587 return ::FlatSB_SetScrollPos(pT->m_hWnd, nBar, nPos, bRedraw);
9590 BOOL FlatSB_GetScrollRange(
int nBar, LPINT lpMinPos, LPINT lpMaxPos)
const 9592 const T* pT =
static_cast<const T*
>(
this);
9593 ATLASSERT(::IsWindow(pT->m_hWnd));
9594 return ::FlatSB_GetScrollRange(pT->m_hWnd, nBar, lpMinPos, lpMaxPos);
9597 BOOL FlatSB_SetScrollRange(
int nBar,
int nMinPos,
int nMaxPos, BOOL bRedraw = TRUE)
9599 T* pT =
static_cast<T*
>(
this);
9600 ATLASSERT(::IsWindow(pT->m_hWnd));
9601 return ::FlatSB_SetScrollRange(pT->m_hWnd, nBar, nMinPos, nMaxPos, bRedraw);
9604 BOOL FlatSB_GetScrollInfo(
int nBar, LPSCROLLINFO lpScrollInfo)
const 9606 const T* pT =
static_cast<const T*
>(
this);
9607 ATLASSERT(::IsWindow(pT->m_hWnd));
9608 return ::FlatSB_GetScrollInfo(pT->m_hWnd, nBar, lpScrollInfo);
9611 int FlatSB_SetScrollInfo(
int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
9613 T* pT =
static_cast<T*
>(
this);
9614 ATLASSERT(::IsWindow(pT->m_hWnd));
9615 return ::FlatSB_SetScrollInfo(pT->m_hWnd, nBar, lpScrollInfo, bRedraw);
9619 BOOL FlatSB_ShowScrollBar(UINT nBar, BOOL bShow = TRUE)
9621 T* pT =
static_cast<T*
>(
this);
9622 ATLASSERT(::IsWindow(pT->m_hWnd));
9623 return ::FlatSB_ShowScrollBar(pT->m_hWnd, nBar, bShow);
9626 BOOL FlatSB_EnableScrollBar(UINT uSBFlags, UINT uArrowFlags = ESB_ENABLE_BOTH)
9628 T* pT =
static_cast<T*
>(
this);
9629 ATLASSERT(::IsWindow(pT->m_hWnd));
9630 return ::FlatSB_EnableScrollBar(pT->m_hWnd, uSBFlags, uArrowFlags);
9634 template <
class TBase>
9635 class CFlatScrollBarT :
public TBase,
public CFlatScrollBarImpl<CFlatScrollBarT< TBase > >
9638 CFlatScrollBarT(HWND hWnd = NULL) : TBase(hWnd)
9641 CFlatScrollBarT< TBase >& operator =(HWND hWnd)
9648 typedef CFlatScrollBarT<ATL::CWindow> CFlatScrollBar;
9650 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9656 #if (_WIN32_IE >= 0x0400) 9658 template <
class TBase>
9659 class CIPAddressCtrlT :
public TBase
9663 CIPAddressCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9666 CIPAddressCtrlT< TBase >& operator =(HWND hWnd)
9672 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9673 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9676 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9680 static LPCTSTR GetWndClassName()
9682 return WC_IPADDRESS;
9685 BOOL IsBlank()
const 9687 ATLASSERT(::IsWindow(m_hWnd));
9688 return (BOOL)::SendMessage(m_hWnd, IPM_ISBLANK, 0, 0L);
9691 int GetAddress(LPDWORD lpdwAddress)
const 9693 ATLASSERT(::IsWindow(m_hWnd));
9694 return (
int)::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM)lpdwAddress);
9697 void SetAddress(DWORD dwAddress)
9699 ATLASSERT(::IsWindow(m_hWnd));
9700 ::SendMessage(m_hWnd, IPM_SETADDRESS, 0, dwAddress);
9705 ATLASSERT(::IsWindow(m_hWnd));
9706 ::SendMessage(m_hWnd, IPM_CLEARADDRESS, 0, 0L);
9709 void SetRange(
int nField, WORD wRange)
9711 ATLASSERT(::IsWindow(m_hWnd));
9712 ::SendMessage(m_hWnd, IPM_SETRANGE, nField, wRange);
9715 void SetRange(
int nField, BYTE nMin, BYTE nMax)
9717 ATLASSERT(::IsWindow(m_hWnd));
9718 ::SendMessage(m_hWnd, IPM_SETRANGE, nField, MAKEIPRANGE(nMin, nMax));
9721 void SetFocus(
int nField)
9723 ATLASSERT(::IsWindow(m_hWnd));
9724 ::SendMessage(m_hWnd, IPM_SETFOCUS, nField, 0L);
9728 typedef CIPAddressCtrlT<ATL::CWindow> CIPAddressCtrl;
9730 #endif // (_WIN32_IE >= 0x0400) 9736 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9738 template <
class TBase>
9739 class CPagerCtrlT :
public TBase
9743 CPagerCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9746 CPagerCtrlT< TBase >& operator =(HWND hWnd)
9752 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9753 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9756 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9760 static LPCTSTR GetWndClassName()
9762 return WC_PAGESCROLLER;
9765 int GetButtonSize()
const 9767 ATLASSERT(::IsWindow(m_hWnd));
9768 return (
int)::SendMessage(m_hWnd, PGM_GETBUTTONSIZE, 0, 0L);
9771 int SetButtonSize(
int nButtonSize)
9773 ATLASSERT(::IsWindow(m_hWnd));
9774 return (
int)::SendMessage(m_hWnd, PGM_SETBUTTONSIZE, 0, nButtonSize);
9777 DWORD GetButtonState(
int nButton)
const 9779 ATLASSERT(::IsWindow(m_hWnd));
9780 ATLASSERT(nButton == PGB_TOPORLEFT || nButton == PGB_BOTTOMORRIGHT);
9781 return (DWORD)::SendMessage(m_hWnd, PGM_GETBUTTONSTATE, 0, nButton);
9784 COLORREF GetBkColor()
const 9786 ATLASSERT(::IsWindow(m_hWnd));
9787 return (COLORREF)::SendMessage(m_hWnd, PGM_GETBKCOLOR, 0, 0L);
9790 COLORREF SetBkColor(COLORREF clrBk)
9792 ATLASSERT(::IsWindow(m_hWnd));
9793 return (COLORREF)::SendMessage(m_hWnd, PGM_SETBKCOLOR, 0, (LPARAM)clrBk);
9796 int GetBorder()
const 9798 ATLASSERT(::IsWindow(m_hWnd));
9799 return (
int)::SendMessage(m_hWnd, PGM_GETBORDER, 0, 0L);
9802 int SetBorder(
int nBorderSize)
9804 ATLASSERT(::IsWindow(m_hWnd));
9805 return (
int)::SendMessage(m_hWnd, PGM_SETBORDER, 0, nBorderSize);
9810 ATLASSERT(::IsWindow(m_hWnd));
9811 return (
int)::SendMessage(m_hWnd, PGM_GETPOS, 0, 0L);
9814 int SetPos(
int nPos)
9816 ATLASSERT(::IsWindow(m_hWnd));
9817 return (
int)::SendMessage(m_hWnd, PGM_SETPOS, 0, nPos);
9821 void SetChild(HWND hWndChild)
9823 ATLASSERT(::IsWindow(m_hWnd));
9824 ::SendMessage(m_hWnd, PGM_SETCHILD, 0, (LPARAM)hWndChild);
9827 void ForwardMouse(BOOL bForward = TRUE)
9829 ATLASSERT(::IsWindow(m_hWnd));
9830 ::SendMessage(m_hWnd, PGM_FORWARDMOUSE, bForward, 0L);
9835 ATLASSERT(::IsWindow(m_hWnd));
9836 ::SendMessage(m_hWnd, PGM_RECALCSIZE, 0, 0L);
9839 void GetDropTarget(IDropTarget** ppDropTarget)
9841 ATLASSERT(::IsWindow(m_hWnd));
9842 ATLASSERT(ppDropTarget != NULL);
9843 ::SendMessage(m_hWnd, PGM_GETDROPTARGET, 0, (LPARAM)ppDropTarget);
9847 typedef CPagerCtrlT<ATL::CWindow> CPagerCtrl;
9849 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9855 #if (_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE) 9857 template <
class TBase>
9858 class CLinkCtrlT :
public TBase
9862 CLinkCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9865 CLinkCtrlT< TBase >& operator =(HWND hWnd)
9871 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9872 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9875 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9879 static LPCTSTR GetWndClassName()
9888 int GetIdealHeight(
int cxMaxWidth = 0)
const 9890 ATLASSERT(::IsWindow(m_hWnd));
9891 return (
int)::SendMessage(m_hWnd, LM_GETIDEALHEIGHT, cxMaxWidth, 0L);
9894 BOOL GetItem(PLITEM pLItem)
const 9896 ATLASSERT(::IsWindow(m_hWnd));
9897 return (BOOL)::SendMessage(m_hWnd, LM_GETITEM, 0, (LPARAM)pLItem);
9900 BOOL SetItem(PLITEM pLItem)
9902 ATLASSERT(::IsWindow(m_hWnd));
9903 return (BOOL)::SendMessage(m_hWnd, LM_SETITEM, 0, (LPARAM)pLItem);
9907 int GetIdealSize(SIZE& size,
int cxMaxWidth = 0)
const 9909 #ifndef LM_GETIDEALSIZE 9910 const UINT LM_GETIDEALSIZE = LM_GETIDEALHEIGHT;
9912 ATLASSERT(::IsWindow(m_hWnd));
9913 return (
int)::SendMessage(m_hWnd, LM_GETIDEALSIZE, cxMaxWidth, (LPARAM)&size);
9917 BOOL HitTest(PLHITTESTINFO pLHitTestInfo)
const 9919 ATLASSERT(::IsWindow(m_hWnd));
9920 return (BOOL)::SendMessage(m_hWnd, LM_HITTEST, 0, (LPARAM)pLHitTestInfo);
9924 typedef CLinkCtrlT<ATL::CWindow> CLinkCtrl;
9926 #endif // (_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE) 9936 #if (_ATL_VER < 0x0700) 9939 BOOL IsMsgHandled()
const 9941 return m_bHandledCD;
9944 void SetMsgHandled(BOOL bHandled)
9946 m_bHandledCD = bHandled;
9948 #endif // !(_ATL_VER < 0x0700) 9952 NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW, OnCustomDraw)
9954 REFLECTED_NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW, OnCustomDraw)
9958 LRESULT OnCustomDraw(
int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
9960 T* pT =
static_cast<T*
>(
this);
9961 pT->SetMsgHandled(TRUE);
9962 LPNMCUSTOMDRAW lpNMCustomDraw = (LPNMCUSTOMDRAW)pnmh;
9964 switch(lpNMCustomDraw->dwDrawStage)
9967 dwRet = pT->OnPrePaint(idCtrl, lpNMCustomDraw);
9969 case CDDS_POSTPAINT:
9970 dwRet = pT->OnPostPaint(idCtrl, lpNMCustomDraw);
9973 dwRet = pT->OnPreErase(idCtrl, lpNMCustomDraw);
9975 case CDDS_POSTERASE:
9976 dwRet = pT->OnPostErase(idCtrl, lpNMCustomDraw);
9978 case CDDS_ITEMPREPAINT:
9979 dwRet = pT->OnItemPrePaint(idCtrl, lpNMCustomDraw);
9981 case CDDS_ITEMPOSTPAINT:
9982 dwRet = pT->OnItemPostPaint(idCtrl, lpNMCustomDraw);
9984 case CDDS_ITEMPREERASE:
9985 dwRet = pT->OnItemPreErase(idCtrl, lpNMCustomDraw);
9987 case CDDS_ITEMPOSTERASE:
9988 dwRet = pT->OnItemPostErase(idCtrl, lpNMCustomDraw);
9990 #if (_WIN32_IE >= 0x0400) 9991 case (CDDS_ITEMPREPAINT | CDDS_SUBITEM):
9992 dwRet = pT->OnSubItemPrePaint(idCtrl, lpNMCustomDraw);
9994 #endif // (_WIN32_IE >= 0x0400) 9996 pT->SetMsgHandled(FALSE);
9999 bHandled = pT->IsMsgHandled();
10004 DWORD OnPrePaint(
int , LPNMCUSTOMDRAW )
10006 return CDRF_DODEFAULT;
10009 DWORD OnPostPaint(
int , LPNMCUSTOMDRAW )
10011 return CDRF_DODEFAULT;
10014 DWORD OnPreErase(
int , LPNMCUSTOMDRAW )
10016 return CDRF_DODEFAULT;
10019 DWORD OnPostErase(
int , LPNMCUSTOMDRAW )
10021 return CDRF_DODEFAULT;
10024 DWORD OnItemPrePaint(
int , LPNMCUSTOMDRAW )
10026 return CDRF_DODEFAULT;
10029 DWORD OnItemPostPaint(
int , LPNMCUSTOMDRAW )
10031 return CDRF_DODEFAULT;
10034 DWORD OnItemPreErase(
int , LPNMCUSTOMDRAW )
10036 return CDRF_DODEFAULT;
10039 DWORD OnItemPostErase(
int , LPNMCUSTOMDRAW )
10041 return CDRF_DODEFAULT;
10044 #if (_WIN32_IE >= 0x0400) 10045 DWORD OnSubItemPrePaint(
int , LPNMCUSTOMDRAW )
10047 return CDRF_DODEFAULT;
10049 #endif // (_WIN32_IE >= 0x0400) 10060 template <
class TBase>
10061 class CCECommandBarCtrlT :
public TBase
10065 CCECommandBarCtrlT(HWND hWnd = NULL) : TBase(hWnd) { }
10067 CCECommandBarCtrlT< TBase >& operator=(HWND hWnd)
10074 BOOL IsVisible()
const 10076 return IsWindowVisible();
10079 int GetHeight()
const 10081 ATLASSERT(::IsWindow(m_hWnd));
10082 return ::CommandBar_Height(m_hWnd);
10085 HMENU GetMenu(WORD wButton)
const 10087 ATLASSERT(::IsWindow(m_hWnd));
10088 return ::CommandBar_GetMenu(m_hWnd, wButton);
10092 HWND Create(HWND hWndParent,
int nCmdBarID)
10094 m_hWnd = ::CommandBar_Create(ModuleHelper::GetModuleInstance(), hWndParent, nCmdBarID);
10095 ATLASSERT(::IsWindow(m_hWnd));
10104 BOOL Show(BOOL bShow = TRUE)
10106 ATLASSERT(::IsWindow(m_hWnd));
10107 return ::CommandBar_Show(m_hWnd, bShow);
10110 BOOL DrawMenuBar(WORD wButton)
10112 ATLASSERT(::IsWindow(m_hWnd));
10113 return ::CommandBar_DrawMenuBar(m_hWnd, wButton);
10116 BOOL AddAdornments(DWORD dwFlags = 0)
10118 ATLASSERT(::IsWindow(m_hWnd));
10119 return ::CommandBar_AddAdornments(m_hWnd, dwFlags, 0);
10122 int AddBitmap(
int nBitmapID,
int nNumImages)
10124 ATLASSERT(::IsWindow(m_hWnd));
10125 return ::CommandBar_AddBitmap(m_hWnd, ModuleHelper::GetResourceInstance(), nBitmapID, nNumImages, 16, 16);
10128 BOOL AddButtons(UINT uNumButtons, LPTBBUTTON lpButtons)
10130 ATLASSERT(::IsWindow(m_hWnd));
10131 return CommandBar_AddButtons(m_hWnd, uNumButtons, lpButtons);
10134 BOOL AddToolTips(UINT uNumToolTips, LPTSTR lpToolTips)
10136 ATLASSERT(::IsWindow(m_hWnd));
10137 return CommandBar_AddToolTips(m_hWnd, uNumToolTips, lpToolTips);
10140 BOOL InsertButton(
int nButton, LPTBBUTTON lpButton)
10142 ATLASSERT(::IsWindow(m_hWnd));
10143 return CommandBar_InsertButton(m_hWnd, nButton, lpButton);
10146 HWND InsertComboBox(
int nWidth, UINT dwStyle, WORD wComboBoxID, WORD wButton)
10148 ATLASSERT(::IsWindow(m_hWnd));
10149 return ::CommandBar_InsertComboBox(m_hWnd, ModuleHelper::GetModuleInstance(), nWidth, dwStyle, wComboBoxID, wButton);
10152 BOOL InsertMenubar(WORD wMenuID, WORD wButton)
10154 ATLASSERT(::IsWindow(m_hWnd));
10155 return ::CommandBar_InsertMenubar(m_hWnd, ModuleHelper::GetResourceInstance(), wMenuID, wButton);
10160 ATLASSERT(::IsWindow(m_hWnd));
10161 return ::CommandBar_InsertMenubarEx(m_hWnd, ModuleHelper::GetResourceInstance(), (LPTSTR)menu.m_lpstr, wButton);
10164 BOOL IsCommandBarMessage(LPMSG lpMsg)
10166 ATLASSERT(::IsWindow(m_hWnd));
10167 return ::IsCommandBarMessage(m_hWnd, lpMsg);
10171 #if defined(_AYGSHELL_H_) || defined(__AYGSHELL_H__) // PPC MenuBar 10172 typedef CCECommandBarCtrlT<CToolBarCtrl> CMenuBarCtrl;
10174 typedef CCECommandBarCtrlT<CToolBarCtrl> CCECommandBarCtrl;
10175 #endif // defined(_AYGSHELL_H_) || defined(__AYGSHELL_H__) 10180 template <
class TBase>
10181 class CCECommandBandsCtrlT :
public TBase
10185 CCECommandBandsCtrlT(HWND hWnd = NULL) : TBase(hWnd) { }
10187 CCECommandBandsCtrlT< TBase >& operator=(HWND hWnd)
10194 BOOL IsVisible()
const 10196 return IsWindowVisible();
10199 #if (_WIN32_IE >= 0x0400) 10200 UINT GetHeight()
const 10202 ATLASSERT(::IsWindow(m_hWnd));
10203 return CommandBands_Height(m_hWnd);
10205 #endif // (_WIN32_IE >= 0x0400) 10207 HWND GetCommandBar(UINT uBand)
const 10209 ATLASSERT(::IsWindow(m_hWnd));
10210 return ::CommandBands_GetCommandBar(m_hWnd, uBand);
10213 BOOL GetRestoreInformation(UINT uBand, LPCOMMANDBANDSRESTOREINFO pcbr)
const 10215 ATLASSERT(::IsWindow(m_hWnd));
10216 return ::CommandBands_GetRestoreInformation(m_hWnd, uBand, pcbr);
10220 HWND Create(HWND hWndParent, UINT wID, DWORD dwStyles, HIMAGELIST hImageList = NULL)
10222 m_hWnd = ::CommandBands_Create(ModuleHelper::GetModuleInstance(), hWndParent, wID, dwStyles, hImageList);
10223 ATLASSERT(::IsWindow(m_hWnd));
10227 BOOL AddAdornments(DWORD dwFlags = 0, LPREBARBANDINFO prbbi = NULL)
10229 ATLASSERT(::IsWindow(m_hWnd));
10230 return ::CommandBands_AddAdornments(m_hWnd, ModuleHelper::GetModuleInstance(), dwFlags, prbbi);
10233 BOOL AddBands(UINT uBandCount, LPREBARBANDINFO prbbi)
10235 ATLASSERT(::IsWindow(m_hWnd));
10236 return ::CommandBands_AddBands(m_hWnd, ModuleHelper::GetModuleInstance(), uBandCount, prbbi);
10239 BOOL Show(BOOL bShow = TRUE)
10241 ATLASSERT(::IsWindow(m_hWnd));
10242 return ::CommandBands_Show(m_hWnd, bShow);
10246 typedef CCECommandBandsCtrlT<ATL::CWindow> CCECommandBandsCtrl;
10248 #endif // _WIN32_WCE 10252 #endif // __ATLCTRLS_H__
Definition: atlctrls.h:1158
Definition: atlwinx.h:452
Definition: atlctrls.h:106
Definition: atlctrls.h:6844
Definition: atlctrls.h:395
Definition: atlctrls.h:784
Definition: atlctrls.h:4682
Definition: atlapp.h:1368
Definition: nestegg.c:186
Definition: atlctrls.h:3980
Definition: atlctrls.h:8488
Definition: atlctrls.h:6289
Definition: atlctrls.h:7303
Definition: atlctrls.h:8423
Definition: atlctrls.h:8879
Definition: atlctrls.h:9933
Definition: atlctrls.h:4686
Definition: atlctrls.h:6081
Definition: atlctrls.h:2811
Definition: atlctrls.h:6995
Definition: atlctrls.h:7214
Definition: atlapp.h:1455
Definition: atlctrls.h:6570
Definition: atlctrls.h:9412
Definition: atlwinx.h:432
Definition: atlctrls.h:7150
Definition: atlctrls.h:8354
Definition: atlctrls.h:1855
Definition: atlctrls.h:1632
Definition: atlctrls.h:9173
Definition: atlctrls.h:8301