12 #ifndef __ATLCTRLS_H__ 13 #define __ATLCTRLS_H__ 18 #error atlctrls.h requires atlapp.h to be included first 22 #error atlctrls.h requires atlwin.h to be included first 28 #elif defined(WIN32_PLATFORM_WFSP) && !defined(_WINUSERM_H_) 36 #endif // _INC_WINDOWSX 108 template <
class TBase>
113 CStaticT(HWND hWnd = NULL) : TBase(hWnd)
122 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
123 DWORD dwStyle = 0, DWORD dwExStyle = 0,
126 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
130 static LPCTSTR GetWndClassName()
136 HICON GetIcon()
const 138 ATLASSERT(::IsWindow(m_hWnd));
139 return (HICON)::SendMessage(m_hWnd, STM_GETICON, 0, 0L);
142 HICON SetIcon(HICON hIcon)
144 ATLASSERT(::IsWindow(m_hWnd));
145 return (HICON)::SendMessage(m_hWnd, STM_SETICON, (WPARAM)hIcon, 0L);
148 HENHMETAFILE GetEnhMetaFile()
const 150 ATLASSERT(::IsWindow(m_hWnd));
151 return (HENHMETAFILE)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ENHMETAFILE, 0L);
154 HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile)
156 ATLASSERT(::IsWindow(m_hWnd));
157 return (HENHMETAFILE)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ENHMETAFILE, (LPARAM)hMetaFile);
160 HICON GetIcon()
const 162 ATLASSERT(::IsWindow(m_hWnd));
163 return (HICON)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_ICON, 0L);
166 HICON SetIcon(HICON hIcon)
168 ATLASSERT(::IsWindow(m_hWnd));
169 return (HICON)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
175 ATLASSERT(::IsWindow(m_hWnd));
176 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_BITMAP, 0L));
181 ATLASSERT(::IsWindow(m_hWnd));
182 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap));
185 HCURSOR GetCursor()
const 187 ATLASSERT(::IsWindow(m_hWnd));
188 return (HCURSOR)::SendMessage(m_hWnd, STM_GETIMAGE, IMAGE_CURSOR, 0L);
191 HCURSOR SetCursor(HCURSOR hCursor)
193 ATLASSERT(::IsWindow(m_hWnd));
194 return (HCURSOR)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_CURSOR, (LPARAM)hCursor);
204 template <
class TBase>
209 CButtonT(HWND hWnd = NULL) : TBase(hWnd)
218 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
219 DWORD dwStyle = 0, DWORD dwExStyle = 0,
222 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
226 static LPCTSTR GetWndClassName()
231 UINT GetState()
const 233 ATLASSERT(::IsWindow(m_hWnd));
234 return (UINT)::SendMessage(m_hWnd, BM_GETSTATE, 0, 0L);
237 void SetState(BOOL bHighlight)
239 ATLASSERT(::IsWindow(m_hWnd));
240 ::SendMessage(m_hWnd, BM_SETSTATE, bHighlight, 0L);
245 ATLASSERT(::IsWindow(m_hWnd));
246 return (
int)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0L);
249 void SetCheck(
int nCheck)
251 ATLASSERT(::IsWindow(m_hWnd));
252 ::SendMessage(m_hWnd, BM_SETCHECK, nCheck, 0L);
255 UINT GetButtonStyle()
const 257 ATLASSERT(::IsWindow(m_hWnd));
258 return (UINT)::GetWindowLong(m_hWnd, GWL_STYLE) & 0xFFFF;
261 void SetButtonStyle(UINT nStyle, BOOL bRedraw = TRUE)
263 ATLASSERT(::IsWindow(m_hWnd));
264 ::SendMessage(m_hWnd, BM_SETSTYLE, nStyle, (LPARAM)bRedraw);
268 HICON GetIcon()
const 270 ATLASSERT(::IsWindow(m_hWnd));
271 return (HICON)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_ICON, 0L);
274 HICON SetIcon(HICON hIcon)
276 ATLASSERT(::IsWindow(m_hWnd));
277 return (HICON)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
282 ATLASSERT(::IsWindow(m_hWnd));
283 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, BM_GETIMAGE, IMAGE_BITMAP, 0L));
288 ATLASSERT(::IsWindow(m_hWnd));
289 return CBitmapHandle((HBITMAP)::SendMessage(m_hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap));
291 #endif // !_WIN32_WCE 293 #if (_WIN32_WINNT >= 0x0501) 294 BOOL GetIdealSize(LPSIZE lpSize)
const 296 ATLASSERT(::IsWindow(m_hWnd));
297 return (BOOL)::SendMessage(m_hWnd, BCM_GETIDEALSIZE, 0, (LPARAM)lpSize);
300 BOOL GetImageList(PBUTTON_IMAGELIST pButtonImagelist)
const 302 ATLASSERT(::IsWindow(m_hWnd));
303 return (BOOL)::SendMessage(m_hWnd, BCM_GETIMAGELIST, 0, (LPARAM)pButtonImagelist);
306 BOOL SetImageList(PBUTTON_IMAGELIST pButtonImagelist)
308 ATLASSERT(::IsWindow(m_hWnd));
309 return (BOOL)::SendMessage(m_hWnd, BCM_SETIMAGELIST, 0, (LPARAM)pButtonImagelist);
312 BOOL GetTextMargin(LPRECT lpRect)
const 314 ATLASSERT(::IsWindow(m_hWnd));
315 return (BOOL)::SendMessage(m_hWnd, BCM_GETTEXTMARGIN, 0, (LPARAM)lpRect);
318 BOOL SetTextMargin(LPRECT lpRect)
320 ATLASSERT(::IsWindow(m_hWnd));
321 return (BOOL)::SendMessage(m_hWnd, BCM_SETTEXTMARGIN, 0, (LPARAM)lpRect);
323 #endif // (_WIN32_WINNT >= 0x0501) 325 #if (WINVER >= 0x0600) 326 void SetDontClick(BOOL bDontClick)
328 ATLASSERT(::IsWindow(m_hWnd));
329 ::SendMessage(m_hWnd, BM_SETDONTCLICK, (WPARAM)bDontClick, 0L);
331 #endif // (WINVER >= 0x0600) 333 #if (_WIN32_WINNT >= 0x0600) 334 BOOL SetDropDownState(BOOL bDropDown)
336 ATLASSERT(::IsWindow(m_hWnd));
337 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
338 return (BOOL)::SendMessage(m_hWnd, BCM_SETDROPDOWNSTATE, (WPARAM)bDropDown, 0L);
341 BOOL GetSplitInfo(PBUTTON_SPLITINFO pSplitInfo)
const 343 ATLASSERT(::IsWindow(m_hWnd));
344 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
345 return (BOOL)::SendMessage(m_hWnd, BCM_GETSPLITINFO, 0, (LPARAM)pSplitInfo);
348 BOOL SetSplitInfo(PBUTTON_SPLITINFO pSplitInfo)
350 ATLASSERT(::IsWindow(m_hWnd));
351 ATLASSERT((GetStyle() & (BS_SPLITBUTTON | BS_DEFSPLITBUTTON)) != 0);
352 return (BOOL)::SendMessage(m_hWnd, BCM_SETSPLITINFO, 0, (LPARAM)pSplitInfo);
355 int GetNoteLength()
const 357 ATLASSERT(::IsWindow(m_hWnd));
358 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
359 return (
int)::SendMessage(m_hWnd, BCM_GETNOTELENGTH, 0, 0L);
362 BOOL GetNote(LPWSTR lpstrNoteText,
int cchNoteText)
const 364 ATLASSERT(::IsWindow(m_hWnd));
365 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
366 return (BOOL)::SendMessage(m_hWnd, BCM_GETNOTE, cchNoteText, (LPARAM)lpstrNoteText);
369 BOOL SetNote(LPCWSTR lpstrNoteText)
371 ATLASSERT(::IsWindow(m_hWnd));
372 ATLASSERT((GetStyle() & (BS_COMMANDLINK | BS_DEFCOMMANDLINK)) != 0);
373 return (BOOL)::SendMessage(m_hWnd, BCM_SETNOTE, 0, (LPARAM)lpstrNoteText);
376 LRESULT SetElevationRequiredState(BOOL bSet)
378 ATLASSERT(::IsWindow(m_hWnd));
379 return ::SendMessage(m_hWnd, BCM_SETSHIELD, 0, (LPARAM)bSet);
381 #endif // (_WIN32_WINNT >= 0x0600) 386 ATLASSERT(::IsWindow(m_hWnd));
387 ::SendMessage(m_hWnd, BM_CLICK, 0, 0L);
397 template <
class TBase>
402 CListBoxT(HWND hWnd = NULL) : TBase(hWnd)
411 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
412 DWORD dwStyle = 0, DWORD dwExStyle = 0,
415 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
419 static LPCTSTR GetWndClassName()
421 return _T(
"LISTBOX");
427 ATLASSERT(::IsWindow(m_hWnd));
428 return (
int)::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0L);
432 int SetCount(
int cItems)
434 ATLASSERT(::IsWindow(m_hWnd));
435 ATLASSERT(((GetStyle() & LBS_NODATA) != 0) && ((GetStyle() & LBS_HASSTRINGS) == 0));
436 return (
int)::SendMessage(m_hWnd, LB_SETCOUNT, cItems, 0L);
438 #endif // !_WIN32_WCE 440 int GetHorizontalExtent()
const 442 ATLASSERT(::IsWindow(m_hWnd));
443 return (
int)::SendMessage(m_hWnd, LB_GETHORIZONTALEXTENT, 0, 0L);
446 void SetHorizontalExtent(
int cxExtent)
448 ATLASSERT(::IsWindow(m_hWnd));
449 ::SendMessage(m_hWnd, LB_SETHORIZONTALEXTENT, cxExtent, 0L);
452 int GetTopIndex()
const 454 ATLASSERT(::IsWindow(m_hWnd));
455 return (
int)::SendMessage(m_hWnd, LB_GETTOPINDEX, 0, 0L);
458 int SetTopIndex(
int nIndex)
460 ATLASSERT(::IsWindow(m_hWnd));
461 return (
int)::SendMessage(m_hWnd, LB_SETTOPINDEX, nIndex, 0L);
464 LCID GetLocale()
const 466 ATLASSERT(::IsWindow(m_hWnd));
467 return (LCID)::SendMessage(m_hWnd, LB_GETLOCALE, 0, 0L);
470 LCID SetLocale(LCID nNewLocale)
472 ATLASSERT(::IsWindow(m_hWnd));
473 return (LCID)::SendMessage(m_hWnd, LB_SETLOCALE, (WPARAM)nNewLocale, 0L);
476 #if (WINVER >= 0x0500) && !defined(_WIN32_WCE) 477 DWORD GetListBoxInfo()
const 479 ATLASSERT(::IsWindow(m_hWnd));
480 #if (_WIN32_WINNT >= 0x0501) 481 return (DWORD)::SendMessage(m_hWnd, LB_GETLISTBOXINFO, 0, 0L);
482 #else // !(_WIN32_WINNT >= 0x0501) 483 return ::GetListBoxInfo(m_hWnd);
484 #endif // !(_WIN32_WINNT >= 0x0501) 486 #endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) 489 int GetCurSel()
const 491 ATLASSERT(::IsWindow(m_hWnd));
492 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
493 return (
int)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0L);
496 int SetCurSel(
int nSelect)
498 ATLASSERT(::IsWindow(m_hWnd));
499 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
500 return (
int)::SendMessage(m_hWnd, LB_SETCURSEL, nSelect, 0L);
504 int GetSel(
int nIndex)
const 506 ATLASSERT(::IsWindow(m_hWnd));
507 return (
int)::SendMessage(m_hWnd, LB_GETSEL, nIndex, 0L);
510 int SetSel(
int nIndex, BOOL bSelect = TRUE)
512 ATLASSERT(::IsWindow(m_hWnd));
513 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
514 return (
int)::SendMessage(m_hWnd, LB_SETSEL, bSelect, nIndex);
517 int GetSelCount()
const 519 ATLASSERT(::IsWindow(m_hWnd));
520 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
521 return (
int)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0L);
524 int GetSelItems(
int nMaxItems, LPINT rgIndex)
const 526 ATLASSERT(::IsWindow(m_hWnd));
527 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
528 return (
int)::SendMessage(m_hWnd, LB_GETSELITEMS, nMaxItems, (LPARAM)rgIndex);
531 int GetAnchorIndex()
const 533 ATLASSERT(::IsWindow(m_hWnd));
534 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
535 return (
int)::SendMessage(m_hWnd, LB_GETANCHORINDEX, 0, 0L);
538 void SetAnchorIndex(
int nIndex)
540 ATLASSERT(::IsWindow(m_hWnd));
541 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
542 ::SendMessage(m_hWnd, LB_SETANCHORINDEX, nIndex, 0L);
545 int GetCaretIndex()
const 547 ATLASSERT(::IsWindow(m_hWnd));
548 return (
int)::SendMessage(m_hWnd, LB_GETCARETINDEX, 0, 0);
551 int SetCaretIndex(
int nIndex, BOOL bScroll = TRUE)
553 ATLASSERT(::IsWindow(m_hWnd));
554 return (
int)::SendMessage(m_hWnd, LB_SETCARETINDEX, nIndex, MAKELONG(bScroll, 0));
558 DWORD_PTR GetItemData(
int nIndex)
const 560 ATLASSERT(::IsWindow(m_hWnd));
561 return (DWORD_PTR)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0L);
564 int SetItemData(
int nIndex, DWORD_PTR dwItemData)
566 ATLASSERT(::IsWindow(m_hWnd));
567 return (
int)::SendMessage(m_hWnd, LB_SETITEMDATA, nIndex, (LPARAM)dwItemData);
570 void* GetItemDataPtr(
int nIndex)
const 572 ATLASSERT(::IsWindow(m_hWnd));
573 return (
void*)::SendMessage(m_hWnd, LB_GETITEMDATA, nIndex, 0L);
576 int SetItemDataPtr(
int nIndex,
void* pData)
578 ATLASSERT(::IsWindow(m_hWnd));
579 return SetItemData(nIndex, (DWORD_PTR)pData);
582 int GetItemRect(
int nIndex, LPRECT lpRect)
const 584 ATLASSERT(::IsWindow(m_hWnd));
585 return (
int)::SendMessage(m_hWnd, LB_GETITEMRECT, nIndex, (LPARAM)lpRect);
588 int GetText(
int nIndex, LPTSTR lpszBuffer)
const 590 ATLASSERT(::IsWindow(m_hWnd));
591 return (
int)::SendMessage(m_hWnd, LB_GETTEXT, nIndex, (LPARAM)lpszBuffer);
596 BOOL GetTextBSTR(
int nIndex, BSTR& bstrText)
const 599 ATLASSERT(::IsWindow(m_hWnd));
600 ATLASSERT(bstrText == NULL);
602 int nLen = GetTextLen(nIndex);
607 LPTSTR lpstrText = buff.Allocate(nLen + 1);
608 if(lpstrText == NULL)
611 if(GetText(nIndex, lpstrText) == LB_ERR)
614 bstrText = ::SysAllocString(T2OLE(lpstrText));
615 return (bstrText != NULL) ? TRUE : FALSE;
617 #endif // _OLEAUTO_H_ 618 #endif // !_ATL_NO_COM 620 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 621 int GetText(
int nIndex, _CSTRING_NS::CString& strText)
const 623 ATLASSERT(::IsWindow(m_hWnd));
624 int cchLen = GetTextLen(nIndex);
628 LPTSTR lpstr = strText.GetBufferSetLength(cchLen);
631 nRet = GetText(nIndex, lpstr);
632 strText.ReleaseBuffer();
636 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 638 int GetTextLen(
int nIndex)
const 640 ATLASSERT(::IsWindow(m_hWnd));
641 return (
int)::SendMessage(m_hWnd, LB_GETTEXTLEN, nIndex, 0L);
644 int GetItemHeight(
int nIndex)
const 646 ATLASSERT(::IsWindow(m_hWnd));
647 return (
int)::SendMessage(m_hWnd, LB_GETITEMHEIGHT, nIndex, 0L);
650 int SetItemHeight(
int nIndex, UINT cyItemHeight)
652 ATLASSERT(::IsWindow(m_hWnd));
653 return (
int)::SendMessage(m_hWnd, LB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0));
657 void SetColumnWidth(
int cxWidth)
659 ATLASSERT(::IsWindow(m_hWnd));
660 ::SendMessage(m_hWnd, LB_SETCOLUMNWIDTH, cxWidth, 0L);
663 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
665 ATLASSERT(::IsWindow(m_hWnd));
666 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
667 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
672 ATLASSERT(::IsWindow(m_hWnd));
673 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
674 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 0, 0L);
677 BOOL SetTabStops(
const int& cxEachStop)
679 ATLASSERT(::IsWindow(m_hWnd));
680 ATLASSERT((GetStyle() & LBS_USETABSTOPS) != 0);
681 return (BOOL)::SendMessage(m_hWnd, LB_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
685 int InitStorage(
int nItems, UINT nBytes)
687 ATLASSERT(::IsWindow(m_hWnd));
688 return (
int)::SendMessage(m_hWnd, LB_INITSTORAGE, (WPARAM)nItems, nBytes);
693 ATLASSERT(::IsWindow(m_hWnd));
694 ::SendMessage(m_hWnd, LB_RESETCONTENT, 0, 0L);
697 UINT ItemFromPoint(POINT pt, BOOL& bOutside)
const 699 ATLASSERT(::IsWindow(m_hWnd));
700 DWORD dw = (DWORD)::SendMessage(m_hWnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y));
701 bOutside = (BOOL)HIWORD(dw);
702 return (UINT)LOWORD(dw);
706 int AddString(LPCTSTR lpszItem)
708 ATLASSERT(::IsWindow(m_hWnd));
709 return (
int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem);
712 int DeleteString(UINT nIndex)
714 ATLASSERT(::IsWindow(m_hWnd));
715 return (
int)::SendMessage(m_hWnd, LB_DELETESTRING, nIndex, 0L);
718 int InsertString(
int nIndex, LPCTSTR lpszItem)
720 ATLASSERT(::IsWindow(m_hWnd));
721 return (
int)::SendMessage(m_hWnd, LB_INSERTSTRING, nIndex, (LPARAM)lpszItem);
725 int Dir(UINT attr, LPCTSTR lpszWildCard)
727 ATLASSERT(::IsWindow(m_hWnd));
728 return (
int)::SendMessage(m_hWnd, LB_DIR, attr, (LPARAM)lpszWildCard);
731 int AddFile(LPCTSTR lpstrFileName)
733 ATLASSERT(::IsWindow(m_hWnd));
734 return (
int)::SendMessage(m_hWnd, LB_ADDFILE, 0, (LPARAM)lpstrFileName);
736 #endif // !_WIN32_WCE 739 int FindString(
int nStartAfter, LPCTSTR lpszItem)
const 741 ATLASSERT(::IsWindow(m_hWnd));
742 return (
int)::SendMessage(m_hWnd, LB_FINDSTRING, nStartAfter, (LPARAM)lpszItem);
745 int FindStringExact(
int nIndexStart, LPCTSTR lpszFind)
const 747 ATLASSERT(::IsWindow(m_hWnd));
748 return (
int)::SendMessage(m_hWnd, LB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind);
751 int SelectString(
int nStartAfter, LPCTSTR lpszItem)
753 ATLASSERT(::IsWindow(m_hWnd));
754 return (
int)::SendMessage(m_hWnd, LB_SELECTSTRING, nStartAfter, (LPARAM)lpszItem);
757 int SelItemRange(BOOL bSelect,
int nFirstItem,
int nLastItem)
759 ATLASSERT(::IsWindow(m_hWnd));
760 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) != 0);
761 ATLASSERT(nFirstItem <= nLastItem);
762 return bSelect ? (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nFirstItem, nLastItem) : (int)::SendMessage(m_hWnd, LB_SELITEMRANGEEX, nLastItem, nFirstItem);
765 #ifdef WIN32_PLATFORM_WFSP // SmartPhone only messages 766 DWORD GetInputMode(BOOL bCurrentMode = TRUE)
768 return SendMessage(LB_GETINPUTMODE, 0, (LPARAM)bCurrentMode);
771 BOOL SetInputMode(DWORD dwMode)
773 return SendMessage(LB_SETINPUTMODE, 0, (LPARAM)dwMode);
775 #endif // WIN32_PLATFORM_WFSP 784 #ifndef WIN32_PLATFORM_WFSP // No COMBOBOX on SmartPhones 786 template <
class TBase>
800 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
801 DWORD dwStyle = 0, DWORD dwExStyle = 0,
804 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
808 static LPCTSTR GetWndClassName()
810 return _T(
"COMBOBOX");
816 ATLASSERT(::IsWindow(m_hWnd));
817 return (
int)::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0L);
820 int GetCurSel()
const 822 ATLASSERT(::IsWindow(m_hWnd));
823 return (
int)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0L);
826 int SetCurSel(
int nSelect)
828 ATLASSERT(::IsWindow(m_hWnd));
829 return (
int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0L);
832 LCID GetLocale()
const 834 ATLASSERT(::IsWindow(m_hWnd));
835 return (LCID)::SendMessage(m_hWnd, CB_GETLOCALE, 0, 0L);
838 LCID SetLocale(LCID nNewLocale)
840 ATLASSERT(::IsWindow(m_hWnd));
841 return (LCID)::SendMessage(m_hWnd, CB_SETLOCALE, (WPARAM)nNewLocale, 0L);
844 int GetTopIndex()
const 846 ATLASSERT(::IsWindow(m_hWnd));
847 return (
int)::SendMessage(m_hWnd, CB_GETTOPINDEX, 0, 0L);
850 int SetTopIndex(
int nIndex)
852 ATLASSERT(::IsWindow(m_hWnd));
853 return (
int)::SendMessage(m_hWnd, CB_SETTOPINDEX, nIndex, 0L);
856 UINT GetHorizontalExtent()
const 858 ATLASSERT(::IsWindow(m_hWnd));
859 return (UINT)::SendMessage(m_hWnd, CB_GETHORIZONTALEXTENT, 0, 0L);
862 void SetHorizontalExtent(UINT nExtent)
864 ATLASSERT(::IsWindow(m_hWnd));
865 ::SendMessage(m_hWnd, CB_SETHORIZONTALEXTENT, nExtent, 0L);
868 int GetDroppedWidth()
const 870 ATLASSERT(::IsWindow(m_hWnd));
871 return (
int)::SendMessage(m_hWnd, CB_GETDROPPEDWIDTH, 0, 0L);
874 int SetDroppedWidth(UINT nWidth)
876 ATLASSERT(::IsWindow(m_hWnd));
877 return (
int)::SendMessage(m_hWnd, CB_SETDROPPEDWIDTH, nWidth, 0L);
880 #if ((WINVER >= 0x0500) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 881 BOOL GetComboBoxInfo(PCOMBOBOXINFO pComboBoxInfo)
const 883 ATLASSERT(::IsWindow(m_hWnd));
884 #if ((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 885 return (BOOL)::SendMessage(m_hWnd, CB_GETCOMBOBOXINFO, 0, (LPARAM)pComboBoxInfo);
886 #else // !((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 887 return ::GetComboBoxInfo(m_hWnd, pComboBoxInfo);
888 #endif // !((_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 890 #endif // ((WINVER >= 0x0500) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 420)) 893 DWORD GetEditSel()
const 895 ATLASSERT(::IsWindow(m_hWnd));
896 return (DWORD)::SendMessage(m_hWnd, CB_GETEDITSEL, 0, 0L);
899 BOOL SetEditSel(
int nStartChar,
int nEndChar)
901 ATLASSERT(::IsWindow(m_hWnd));
902 return (BOOL)::SendMessage(m_hWnd, CB_SETEDITSEL, 0, MAKELONG(nStartChar, nEndChar));
906 DWORD_PTR GetItemData(
int nIndex)
const 908 ATLASSERT(::IsWindow(m_hWnd));
909 return (DWORD_PTR)::SendMessage(m_hWnd, CB_GETITEMDATA, nIndex, 0L);
912 int SetItemData(
int nIndex, DWORD_PTR dwItemData)
914 ATLASSERT(::IsWindow(m_hWnd));
915 return (
int)::SendMessage(m_hWnd, CB_SETITEMDATA, nIndex, (LPARAM)dwItemData);
918 void* GetItemDataPtr(
int nIndex)
const 920 ATLASSERT(::IsWindow(m_hWnd));
921 return (
void*)GetItemData(nIndex);
924 int SetItemDataPtr(
int nIndex,
void* pData)
926 ATLASSERT(::IsWindow(m_hWnd));
927 return SetItemData(nIndex, (DWORD_PTR)pData);
930 int GetLBText(
int nIndex, LPTSTR lpszText)
const 932 ATLASSERT(::IsWindow(m_hWnd));
933 return (
int)::SendMessage(m_hWnd, CB_GETLBTEXT, nIndex, (LPARAM)lpszText);
937 BOOL GetLBTextBSTR(
int nIndex, BSTR& bstrText)
const 940 ATLASSERT(::IsWindow(m_hWnd));
941 ATLASSERT(bstrText == NULL);
943 int nLen = GetLBTextLen(nIndex);
948 LPTSTR lpstrText = buff.Allocate(nLen + 1);
949 if(lpstrText == NULL)
952 if(GetLBText(nIndex, lpstrText) == CB_ERR)
955 bstrText = ::SysAllocString(T2OLE(lpstrText));
956 return (bstrText != NULL) ? TRUE : FALSE;
958 #endif // !_ATL_NO_COM 960 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 961 int GetLBText(
int nIndex, _CSTRING_NS::CString& strText)
const 963 ATLASSERT(::IsWindow(m_hWnd));
964 int cchLen = GetLBTextLen(nIndex);
968 LPTSTR lpstr = strText.GetBufferSetLength(cchLen);
971 nRet = GetLBText(nIndex, lpstr);
972 strText.ReleaseBuffer();
976 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 978 int GetLBTextLen(
int nIndex)
const 980 ATLASSERT(::IsWindow(m_hWnd));
981 return (
int)::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIndex, 0L);
984 int GetItemHeight(
int nIndex)
const 986 ATLASSERT(::IsWindow(m_hWnd));
987 return (
int)::SendMessage(m_hWnd, CB_GETITEMHEIGHT, nIndex, 0L);
990 int SetItemHeight(
int nIndex, UINT cyItemHeight)
992 ATLASSERT(::IsWindow(m_hWnd));
993 return (
int)::SendMessage(m_hWnd, CB_SETITEMHEIGHT, nIndex, MAKELONG(cyItemHeight, 0));
996 BOOL GetExtendedUI()
const 998 ATLASSERT(::IsWindow(m_hWnd));
999 return (BOOL)::SendMessage(m_hWnd, CB_GETEXTENDEDUI, 0, 0L);
1002 int SetExtendedUI(BOOL bExtended = TRUE)
1004 ATLASSERT(::IsWindow(m_hWnd));
1005 return (
int)::SendMessage(m_hWnd, CB_SETEXTENDEDUI, bExtended, 0L);
1008 void GetDroppedControlRect(LPRECT lprect)
const 1010 ATLASSERT(::IsWindow(m_hWnd));
1011 ::SendMessage(m_hWnd, CB_GETDROPPEDCONTROLRECT, 0, (LPARAM)lprect);
1014 BOOL GetDroppedState()
const 1016 ATLASSERT(::IsWindow(m_hWnd));
1017 return (BOOL)::SendMessage(m_hWnd, CB_GETDROPPEDSTATE, 0, 0L);
1020 #if (_WIN32_WINNT >= 0x0501) 1021 int GetMinVisible()
const 1023 ATLASSERT(::IsWindow(m_hWnd));
1024 return (
int)::SendMessage(m_hWnd, CB_GETMINVISIBLE, 0, 0L);
1027 BOOL SetMinVisible(
int nMinVisible)
1029 ATLASSERT(::IsWindow(m_hWnd));
1030 return (BOOL)::SendMessage(m_hWnd, CB_SETMINVISIBLE, nMinVisible, 0L);
1034 BOOL GetCueBannerText(LPWSTR lpwText,
int cchText)
const 1036 #ifndef CB_GETCUEBANNER 1037 const UINT CB_GETCUEBANNER = (CBM_FIRST + 4);
1039 ATLASSERT(::IsWindow(m_hWnd));
1040 return (BOOL)::SendMessage(m_hWnd, CB_GETCUEBANNER, (WPARAM)lpwText, cchText);
1044 BOOL SetCueBannerText(LPCWSTR lpcwText)
1046 #ifndef CB_SETCUEBANNER 1047 const UINT CB_SETCUEBANNER = (CBM_FIRST + 3);
1049 ATLASSERT(::IsWindow(m_hWnd));
1050 return (BOOL)::SendMessage(m_hWnd, CB_SETCUEBANNER, 0, (LPARAM)lpcwText);
1052 #endif // (_WIN32_WINNT >= 0x0501) 1055 int InitStorage(
int nItems, UINT nBytes)
1057 ATLASSERT(::IsWindow(m_hWnd));
1058 return (
int)::SendMessage(m_hWnd, CB_INITSTORAGE, (WPARAM)nItems, nBytes);
1063 ATLASSERT(::IsWindow(m_hWnd));
1064 ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0L);
1068 BOOL LimitText(
int nMaxChars)
1070 ATLASSERT(::IsWindow(m_hWnd));
1071 return (BOOL)::SendMessage(m_hWnd, CB_LIMITTEXT, nMaxChars, 0L);
1075 void ShowDropDown(BOOL bShowIt = TRUE)
1077 ATLASSERT(::IsWindow(m_hWnd));
1078 ::SendMessage(m_hWnd, CB_SHOWDROPDOWN, bShowIt, 0L);
1082 int AddString(LPCTSTR lpszString)
1084 ATLASSERT(::IsWindow(m_hWnd));
1085 return (
int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString);
1088 int DeleteString(UINT nIndex)
1090 ATLASSERT(::IsWindow(m_hWnd));
1091 return (
int)::SendMessage(m_hWnd, CB_DELETESTRING, nIndex, 0L);
1094 int InsertString(
int nIndex, LPCTSTR lpszString)
1096 ATLASSERT(::IsWindow(m_hWnd));
1097 return (
int)::SendMessage(m_hWnd, CB_INSERTSTRING, nIndex, (LPARAM)lpszString);
1101 int Dir(UINT attr, LPCTSTR lpszWildCard)
1103 ATLASSERT(::IsWindow(m_hWnd));
1104 return (
int)::SendMessage(m_hWnd, CB_DIR, attr, (LPARAM)lpszWildCard);
1106 #endif // !_WIN32_WCE 1109 int FindString(
int nStartAfter, LPCTSTR lpszString)
const 1111 ATLASSERT(::IsWindow(m_hWnd));
1112 return (
int)::SendMessage(m_hWnd, CB_FINDSTRING, nStartAfter, (LPARAM)lpszString);
1115 int FindStringExact(
int nIndexStart, LPCTSTR lpszFind)
const 1117 ATLASSERT(::IsWindow(m_hWnd));
1118 return (
int)::SendMessage(m_hWnd, CB_FINDSTRINGEXACT, nIndexStart, (LPARAM)lpszFind);
1121 int SelectString(
int nStartAfter, LPCTSTR lpszString)
1123 ATLASSERT(::IsWindow(m_hWnd));
1124 return (
int)::SendMessage(m_hWnd, CB_SELECTSTRING, nStartAfter, (LPARAM)lpszString);
1130 ATLASSERT(::IsWindow(m_hWnd));
1131 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
1136 ATLASSERT(::IsWindow(m_hWnd));
1137 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
1142 ATLASSERT(::IsWindow(m_hWnd));
1143 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
1148 ATLASSERT(::IsWindow(m_hWnd));
1149 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
1155 #endif // !WIN32_PLATFORM_WFSP 1160 template <
class TBase>
1165 CEditT(HWND hWnd = NULL) : TBase(hWnd)
1174 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
1175 DWORD dwStyle = 0, DWORD dwExStyle = 0,
1178 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
1182 static LPCTSTR GetWndClassName()
1187 BOOL CanUndo()
const 1189 ATLASSERT(::IsWindow(m_hWnd));
1190 return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0L);
1193 int GetLineCount()
const 1195 ATLASSERT(::IsWindow(m_hWnd));
1196 return (
int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0L);
1199 BOOL GetModify()
const 1201 ATLASSERT(::IsWindow(m_hWnd));
1202 return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0L);
1205 void SetModify(BOOL bModified = TRUE)
1207 ATLASSERT(::IsWindow(m_hWnd));
1208 ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0L);
1211 void GetRect(LPRECT lpRect)
const 1213 ATLASSERT(::IsWindow(m_hWnd));
1214 ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect);
1217 DWORD GetSel()
const 1219 ATLASSERT(::IsWindow(m_hWnd));
1220 return (DWORD)::SendMessage(m_hWnd, EM_GETSEL, 0, 0L);
1223 void GetSel(
int& nStartChar,
int& nEndChar)
const 1225 ATLASSERT(::IsWindow(m_hWnd));
1226 ::SendMessage(m_hWnd, EM_GETSEL, (WPARAM)&nStartChar, (LPARAM)&nEndChar);
1230 HLOCAL GetHandle()
const 1232 ATLASSERT(::IsWindow(m_hWnd));
1233 return (HLOCAL)::SendMessage(m_hWnd, EM_GETHANDLE, 0, 0L);
1236 void SetHandle(HLOCAL hBuffer)
1238 ATLASSERT(::IsWindow(m_hWnd));
1239 ::SendMessage(m_hWnd, EM_SETHANDLE, (WPARAM)hBuffer, 0L);
1241 #endif // !_WIN32_WCE 1243 DWORD GetMargins()
const 1245 ATLASSERT(::IsWindow(m_hWnd));
1246 return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0L);
1249 void SetMargins(UINT nLeft, UINT nRight)
1251 ATLASSERT(::IsWindow(m_hWnd));
1252 ::SendMessage(m_hWnd, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELONG(nLeft, nRight));
1255 UINT GetLimitText()
const 1257 ATLASSERT(::IsWindow(m_hWnd));
1258 return (UINT)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L);
1261 void SetLimitText(UINT nMax)
1263 ATLASSERT(::IsWindow(m_hWnd));
1264 ::SendMessage(m_hWnd, EM_SETLIMITTEXT, nMax, 0L);
1267 POINT PosFromChar(UINT nChar)
const 1269 ATLASSERT(::IsWindow(m_hWnd));
1270 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_POSFROMCHAR, nChar, 0);
1271 POINT point = { GET_X_LPARAM(dwRet), GET_Y_LPARAM(dwRet) };
1275 int CharFromPos(POINT pt,
int* pLine = NULL)
const 1277 ATLASSERT(::IsWindow(m_hWnd));
1278 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y));
1280 *pLine = (int)(
short)HIWORD(dwRet);
1281 return (
int)(short)LOWORD(dwRet);
1285 int GetLine(
int nIndex, LPTSTR lpszBuffer)
const 1287 ATLASSERT(::IsWindow(m_hWnd));
1288 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
1291 int GetLine(
int nIndex, LPTSTR lpszBuffer,
int nMaxLength)
const 1293 ATLASSERT(::IsWindow(m_hWnd));
1294 *(LPWORD)lpszBuffer = (WORD)nMaxLength;
1295 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
1298 TCHAR GetPasswordChar()
const 1300 ATLASSERT(::IsWindow(m_hWnd));
1301 return (TCHAR)::SendMessage(m_hWnd, EM_GETPASSWORDCHAR, 0, 0L);
1304 void SetPasswordChar(TCHAR ch)
1306 ATLASSERT(::IsWindow(m_hWnd));
1307 ::SendMessage(m_hWnd, EM_SETPASSWORDCHAR, ch, 0L);
1311 EDITWORDBREAKPROC GetWordBreakProc()
const 1313 ATLASSERT(::IsWindow(m_hWnd));
1314 return (EDITWORDBREAKPROC)::SendMessage(m_hWnd, EM_GETWORDBREAKPROC, 0, 0L);
1317 void SetWordBreakProc(EDITWORDBREAKPROC ewbprc)
1319 ATLASSERT(::IsWindow(m_hWnd));
1320 ::SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, (LPARAM)ewbprc);
1322 #endif // !_WIN32_WCE 1324 int GetFirstVisibleLine()
const 1326 ATLASSERT(::IsWindow(m_hWnd));
1327 return (
int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L);
1331 int GetThumb()
const 1333 ATLASSERT(::IsWindow(m_hWnd));
1334 ATLASSERT((GetStyle() & ES_MULTILINE) != 0);
1335 return (
int)::SendMessage(m_hWnd, EM_GETTHUMB, 0, 0L);
1337 #endif // !_WIN32_WCE 1339 BOOL SetReadOnly(BOOL bReadOnly = TRUE)
1341 ATLASSERT(::IsWindow(m_hWnd));
1342 return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L);
1345 #if (WINVER >= 0x0500) && !defined(_WIN32_WCE) 1346 UINT GetImeStatus(UINT uStatus)
const 1348 ATLASSERT(::IsWindow(m_hWnd));
1349 return (UINT)::SendMessage(m_hWnd, EM_GETIMESTATUS, uStatus, 0L);
1352 UINT SetImeStatus(UINT uStatus, UINT uData)
1354 ATLASSERT(::IsWindow(m_hWnd));
1355 return (UINT)::SendMessage(m_hWnd, EM_SETIMESTATUS, uStatus, uData);
1357 #endif // (WINVER >= 0x0500) && !defined(_WIN32_WCE) 1359 #if (_WIN32_WINNT >= 0x0501) 1360 BOOL GetCueBannerText(LPCWSTR lpstrText,
int cchText)
const 1362 ATLASSERT(::IsWindow(m_hWnd));
1363 return (BOOL)::SendMessage(m_hWnd, EM_GETCUEBANNER, (WPARAM)lpstrText, cchText);
1367 BOOL SetCueBannerText(LPCWSTR lpstrText, BOOL bKeepWithFocus = FALSE)
1369 ATLASSERT(::IsWindow(m_hWnd));
1370 return (BOOL)::SendMessage(m_hWnd, EM_SETCUEBANNER, (WPARAM)bKeepWithFocus, (LPARAM)(lpstrText));
1372 #endif // (_WIN32_WINNT >= 0x0501) 1375 void EmptyUndoBuffer()
1377 ATLASSERT(::IsWindow(m_hWnd));
1378 ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0L);
1381 BOOL FmtLines(BOOL bAddEOL)
1383 ATLASSERT(::IsWindow(m_hWnd));
1384 return (BOOL)::SendMessage(m_hWnd, EM_FMTLINES, bAddEOL, 0L);
1387 void LimitText(
int nChars = 0)
1389 ATLASSERT(::IsWindow(m_hWnd));
1390 ::SendMessage(m_hWnd, EM_LIMITTEXT, nChars, 0L);
1393 int LineFromChar(
int nIndex = -1)
const 1395 ATLASSERT(::IsWindow(m_hWnd));
1396 return (
int)::SendMessage(m_hWnd, EM_LINEFROMCHAR, nIndex, 0L);
1399 int LineIndex(
int nLine = -1)
const 1401 ATLASSERT(::IsWindow(m_hWnd));
1402 return (
int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0L);
1405 int LineLength(
int nLine = -1)
const 1407 ATLASSERT(::IsWindow(m_hWnd));
1408 return (
int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0L);
1411 void LineScroll(
int nLines,
int nChars = 0)
1413 ATLASSERT(::IsWindow(m_hWnd));
1414 ::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines);
1417 void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE)
1419 ATLASSERT(::IsWindow(m_hWnd));
1420 ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText);
1423 void SetRect(LPCRECT lpRect)
1425 ATLASSERT(::IsWindow(m_hWnd));
1426 ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect);
1429 void SetRectNP(LPCRECT lpRect)
1431 ATLASSERT(::IsWindow(m_hWnd));
1432 ::SendMessage(m_hWnd, EM_SETRECTNP, 0, (LPARAM)lpRect);
1435 void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE)
1437 ATLASSERT(::IsWindow(m_hWnd));
1438 ::SendMessage(m_hWnd, EM_SETSEL, LOWORD(dwSelection), HIWORD(dwSelection));
1440 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1443 void SetSel(
int nStartChar,
int nEndChar, BOOL bNoScroll = FALSE)
1445 ATLASSERT(::IsWindow(m_hWnd));
1446 ::SendMessage(m_hWnd, EM_SETSEL, nStartChar, nEndChar);
1448 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1451 void SetSelAll(BOOL bNoScroll = FALSE)
1453 SetSel(0, -1, bNoScroll);
1456 void SetSelNone(BOOL bNoScroll = FALSE)
1458 SetSel(-1, 0, bNoScroll);
1461 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
1463 ATLASSERT(::IsWindow(m_hWnd));
1464 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
1469 ATLASSERT(::IsWindow(m_hWnd));
1470 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0L);
1473 BOOL SetTabStops(
const int& cxEachStop)
1475 ATLASSERT(::IsWindow(m_hWnd));
1476 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
1481 ATLASSERT(::IsWindow(m_hWnd));
1482 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
1485 int Scroll(
int nScrollAction)
1487 ATLASSERT(::IsWindow(m_hWnd));
1488 ATLASSERT((GetStyle() & ES_MULTILINE) != 0);
1489 LRESULT lRet = ::SendMessage(m_hWnd, EM_SCROLL, nScrollAction, 0L);
1490 if(!(BOOL)HIWORD(lRet))
1492 return (
int)(short)LOWORD(lRet);
1496 void InsertText(
int nInsertAfterChar, LPCTSTR lpstrText, BOOL bNoScroll = FALSE, BOOL bCanUndo = FALSE)
1498 SetSel(nInsertAfterChar, nInsertAfterChar, bNoScroll);
1499 ReplaceSel(lpstrText, bCanUndo);
1502 void AppendText(LPCTSTR lpstrText, BOOL bNoScroll = FALSE, BOOL bCanUndo = FALSE)
1504 InsertText(GetWindowTextLength(), lpstrText, bNoScroll, bCanUndo);
1507 #if (_WIN32_WINNT >= 0x0501) 1508 BOOL ShowBalloonTip(PEDITBALLOONTIP pEditBaloonTip)
1510 ATLASSERT(::IsWindow(m_hWnd));
1511 return (BOOL)::SendMessage(m_hWnd, EM_SHOWBALLOONTIP, 0, (LPARAM)pEditBaloonTip);
1514 BOOL HideBalloonTip()
1516 ATLASSERT(::IsWindow(m_hWnd));
1517 return (BOOL)::SendMessage(m_hWnd, EM_HIDEBALLOONTIP, 0, 0L);
1519 #endif // (_WIN32_WINNT >= 0x0501) 1521 #if (_WIN32_WINNT >= 0x0600) 1522 DWORD GetHilite()
const 1524 ATLASSERT(::IsWindow(m_hWnd));
1525 return (DWORD)::SendMessage(m_hWnd, EM_GETHILITE, 0, 0L);
1528 void GetHilite(
int& nStartChar,
int& nEndChar)
const 1530 ATLASSERT(::IsWindow(m_hWnd));
1531 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_GETHILITE, 0, 0L);
1532 nStartChar = (int)(
short)LOWORD(dwRet);
1533 nEndChar = (int)(
short)HIWORD(dwRet);
1536 void SetHilite(
int nStartChar,
int nEndChar)
1538 ATLASSERT(::IsWindow(m_hWnd));
1539 ::SendMessage(m_hWnd, EM_SETHILITE, nStartChar, nEndChar);
1541 #endif // (_WIN32_WINNT >= 0x0600) 1546 ATLASSERT(::IsWindow(m_hWnd));
1547 return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0L);
1552 ATLASSERT(::IsWindow(m_hWnd));
1553 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
1558 ATLASSERT(::IsWindow(m_hWnd));
1559 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
1564 ATLASSERT(::IsWindow(m_hWnd));
1565 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
1570 ATLASSERT(::IsWindow(m_hWnd));
1571 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
1574 #ifdef WIN32_PLATFORM_WFSP // SmartPhone only messages 1575 DWORD GetExtendedStyle()
1577 return SendMessage(EM_GETEXTENDEDSTYLE);
1580 DWORD SetExtendedStyle(DWORD dwMask, DWORD dwExStyle)
1582 return SendMessage(EM_SETEXTENDEDSTYLE, (WPARAM)dwMask, (LPARAM)dwExStyle);
1585 DWORD GetInputMode(BOOL bCurrentMode = TRUE)
1587 return SendMessage(EM_GETINPUTMODE, 0, (LPARAM)bCurrentMode);
1590 BOOL SetInputMode(DWORD dwMode)
1592 return SendMessage(EM_SETINPUTMODE, 0, (LPARAM)dwMode);
1595 BOOL SetSymbols(LPCTSTR szSymbols)
1597 return SendMessage(EM_SETSYMBOLS, 0, (LPARAM)szSymbols);
1602 return SendMessage(EM_SETSYMBOLS);
1604 #endif // WIN32_PLATFORM_WFSP 1632 COMMAND_ID_HANDLER(ID_EDIT_CLEAR, OnEditClear)
1633 COMMAND_ID_HANDLER(ID_EDIT_CLEAR_ALL, OnEditClearAll)
1634 COMMAND_ID_HANDLER(ID_EDIT_COPY, OnEditCopy)
1635 COMMAND_ID_HANDLER(ID_EDIT_CUT, OnEditCut)
1636 COMMAND_ID_HANDLER(ID_EDIT_PASTE, OnEditPaste)
1637 COMMAND_ID_HANDLER(ID_EDIT_SELECT_ALL, OnEditSelectAll)
1638 COMMAND_ID_HANDLER(ID_EDIT_UNDO, OnEditUndo)
1641 LRESULT OnEditClear(WORD , WORD , HWND , BOOL& )
1643 T* pT =
static_cast<T*
>(
this);
1648 LRESULT OnEditClearAll(WORD , WORD , HWND , BOOL& )
1650 T* pT =
static_cast<T*
>(
this);
1656 LRESULT OnEditCopy(WORD , WORD , HWND , BOOL& )
1658 T* pT =
static_cast<T*
>(
this);
1663 LRESULT OnEditCut(WORD , WORD , HWND , BOOL& )
1665 T* pT =
static_cast<T*
>(
this);
1670 LRESULT OnEditPaste(WORD , WORD , HWND , BOOL& )
1672 T* pT =
static_cast<T*
>(
this);
1677 LRESULT OnEditSelectAll(WORD , WORD , HWND , BOOL& )
1679 T* pT =
static_cast<T*
>(
this);
1684 LRESULT OnEditUndo(WORD , WORD , HWND , BOOL& )
1686 T* pT =
static_cast<T*
>(
this);
1693 {
return HasSelection(); }
1695 BOOL CanCopy()
const 1696 {
return HasSelection(); }
1698 BOOL CanClear()
const 1699 {
return HasSelection(); }
1701 BOOL CanSelectAll()
const 1702 {
return HasText(); }
1704 BOOL CanFind()
const 1705 {
return HasText(); }
1707 BOOL CanRepeat()
const 1708 {
return HasText(); }
1710 BOOL CanReplace()
const 1711 {
return HasText(); }
1713 BOOL CanClearAll()
const 1714 {
return HasText(); }
1717 BOOL HasSelection()
const 1719 const T* pT =
static_cast<const T*
>(
this);
1721 ::SendMessage(pT->m_hWnd, EM_GETSEL, (WPARAM)&nMin, (LPARAM)&nMax);
1722 return (nMin != nMax);
1725 BOOL HasText()
const 1727 const T* pT =
static_cast<const T*
>(
this);
1728 return (pT->GetWindowTextLength() > 0);
1736 template <
class TBase>
1750 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
1751 DWORD dwStyle = 0, DWORD dwExStyle = 0,
1754 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
1758 static LPCTSTR GetWndClassName()
1760 return _T(
"SCROLLBAR");
1764 int GetScrollPos()
const 1766 ATLASSERT(::IsWindow(m_hWnd));
1767 return ::GetScrollPos(m_hWnd, SB_CTL);
1769 #endif // !_WIN32_WCE 1771 int SetScrollPos(
int nPos, BOOL bRedraw = TRUE)
1773 ATLASSERT(::IsWindow(m_hWnd));
1774 return ::SetScrollPos(m_hWnd, SB_CTL, nPos, bRedraw);
1778 void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos)
const 1780 ATLASSERT(::IsWindow(m_hWnd));
1781 ::GetScrollRange(m_hWnd, SB_CTL, lpMinPos, lpMaxPos);
1783 #endif // !_WIN32_WCE 1785 void SetScrollRange(
int nMinPos,
int nMaxPos, BOOL bRedraw = TRUE)
1787 ATLASSERT(::IsWindow(m_hWnd));
1788 ::SetScrollRange(m_hWnd, SB_CTL, nMinPos, nMaxPos, bRedraw);
1791 BOOL GetScrollInfo(LPSCROLLINFO lpScrollInfo)
const 1793 ATLASSERT(::IsWindow(m_hWnd));
1794 return ::GetScrollInfo(m_hWnd, SB_CTL, lpScrollInfo);
1797 int SetScrollInfo(LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
1799 ATLASSERT(::IsWindow(m_hWnd));
1800 return ::SetScrollInfo(m_hWnd, SB_CTL, lpScrollInfo, bRedraw);
1804 int GetScrollLimit()
const 1806 int nMin = 0, nMax = 0;
1807 ::GetScrollRange(m_hWnd, SB_CTL, &nMin, &nMax);
1808 SCROLLINFO
info = {
sizeof(SCROLLINFO), SIF_PAGE };
1809 if(::GetScrollInfo(m_hWnd, SB_CTL, &info))
1810 nMax -= ((info.nPage - 1) > 0) ? (info.nPage - 1) : 0;
1815 #if (WINVER >= 0x0500) 1816 BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollBarInfo)
const 1818 ATLASSERT(::IsWindow(m_hWnd));
1819 #if (_WIN32_WINNT >= 0x0501) 1820 return (BOOL)::SendMessage(m_hWnd, SBM_GETSCROLLBARINFO, 0, (LPARAM)pScrollBarInfo);
1821 #else // !(_WIN32_WINNT >= 0x0501) 1822 return ::GetScrollBarInfo(m_hWnd, OBJID_CLIENT, pScrollBarInfo);
1823 #endif // !(_WIN32_WINNT >= 0x0501) 1825 #endif // (WINVER >= 0x0500) 1828 void ShowScrollBar(BOOL bShow = TRUE)
1830 ATLASSERT(::IsWindow(m_hWnd));
1831 ::ShowScrollBar(m_hWnd, SB_CTL, bShow);
1834 BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH)
1836 ATLASSERT(::IsWindow(m_hWnd));
1837 return ::EnableScrollBar(m_hWnd, SB_CTL, nArrowFlags);
1839 #endif // !_WIN32_WCE 1853 HIMAGELIST m_hImageList;
1856 CImageList(HIMAGELIST hImageList = NULL) : m_hImageList(hImageList)
1860 CImageList& operator =(HIMAGELIST hImageList)
1862 m_hImageList = hImageList;
1866 operator HIMAGELIST()
const {
return m_hImageList; }
1868 void Attach(HIMAGELIST hImageList)
1870 ATLASSERT(m_hImageList == NULL);
1871 ATLASSERT(hImageList != NULL);
1872 m_hImageList = hImageList;
1877 HIMAGELIST hImageList = m_hImageList;
1878 m_hImageList = NULL;
1882 bool IsNull()
const {
return (m_hImageList == NULL); }
1885 int GetImageCount()
const 1887 ATLASSERT(m_hImageList != NULL);
1888 return ImageList_GetImageCount(m_hImageList);
1891 COLORREF GetBkColor()
const 1893 ATLASSERT(m_hImageList != NULL);
1894 return ImageList_GetBkColor(m_hImageList);
1897 COLORREF SetBkColor(COLORREF cr)
1899 ATLASSERT(m_hImageList != NULL);
1900 return ImageList_SetBkColor(m_hImageList, cr);
1903 BOOL GetImageInfo(
int nImage, IMAGEINFO* pImageInfo)
const 1905 ATLASSERT(m_hImageList != NULL);
1906 return ImageList_GetImageInfo(m_hImageList, nImage, pImageInfo);
1909 HICON GetIcon(
int nIndex, UINT uFlags = ILD_NORMAL)
const 1911 ATLASSERT(m_hImageList != NULL);
1912 return ImageList_GetIcon(m_hImageList, nIndex, uFlags);
1915 BOOL GetIconSize(
int& cx,
int& cy)
const 1917 ATLASSERT(m_hImageList != NULL);
1918 return ImageList_GetIconSize(m_hImageList, &cx, &cy);
1921 BOOL GetIconSize(SIZE& size)
const 1923 ATLASSERT(m_hImageList != NULL);
1924 return ImageList_GetIconSize(m_hImageList, (
int*)&size.cx, (
int*)&size.cy);
1927 BOOL SetIconSize(
int cx,
int cy)
1929 ATLASSERT(m_hImageList != NULL);
1930 return ImageList_SetIconSize(m_hImageList, cx, cy);
1933 BOOL SetIconSize(SIZE size)
1935 ATLASSERT(m_hImageList != NULL);
1936 return ImageList_SetIconSize(m_hImageList, size.cx, size.cy);
1939 BOOL SetImageCount(UINT uNewCount)
1941 ATLASSERT(m_hImageList != NULL);
1942 return ImageList_SetImageCount(m_hImageList, uNewCount);
1945 BOOL SetOverlayImage(
int nImage,
int nOverlay)
1947 ATLASSERT(m_hImageList != NULL);
1948 return ImageList_SetOverlayImage(m_hImageList, nImage, nOverlay);
1952 BOOL Create(
int cx,
int cy, UINT nFlags,
int nInitial,
int nGrow)
1954 ATLASSERT(m_hImageList == NULL);
1955 m_hImageList = ImageList_Create(cx, cy, nFlags, nInitial, nGrow);
1956 return (m_hImageList != NULL) ? TRUE : FALSE;
1961 ATLASSERT(m_hImageList == NULL);
1962 m_hImageList = ImageList_LoadBitmap(ModuleHelper::GetResourceInstance(), bitmap.m_lpstr, cx, nGrow, crMask);
1963 return (m_hImageList != NULL) ? TRUE : FALSE;
1966 BOOL CreateFromImage(
ATL::_U_STRINGorID image,
int cx,
int nGrow, COLORREF crMask, UINT uType, UINT uFlags = LR_DEFAULTCOLOR | LR_DEFAULTSIZE)
1968 ATLASSERT(m_hImageList == NULL);
1969 m_hImageList = ImageList_LoadImage(ModuleHelper::GetResourceInstance(), image.m_lpstr, cx, nGrow, crMask, uType, uFlags);
1970 return (m_hImageList != NULL) ? TRUE : FALSE;
1973 BOOL Merge(HIMAGELIST hImageList1,
int nImage1, HIMAGELIST hImageList2,
int nImage2,
int dx,
int dy)
1975 ATLASSERT(m_hImageList == NULL);
1976 m_hImageList = ImageList_Merge(hImageList1, nImage1, hImageList2, nImage2, dx, dy);
1977 return (m_hImageList != NULL) ? TRUE : FALSE;
1981 #ifdef __IStream_INTERFACE_DEFINED__ 1982 BOOL CreateFromStream(LPSTREAM lpStream)
1984 ATLASSERT(m_hImageList == NULL);
1985 m_hImageList = ImageList_Read(lpStream);
1986 return (m_hImageList != NULL) ? TRUE : FALSE;
1988 #endif // __IStream_INTERFACE_DEFINED__ 1989 #endif // !_WIN32_WCE 1993 if (m_hImageList == NULL)
1995 BOOL bRet = ImageList_Destroy(m_hImageList);
1997 m_hImageList = NULL;
2001 int Add(HBITMAP hBitmap, HBITMAP hBitmapMask = NULL)
2003 ATLASSERT(m_hImageList != NULL);
2004 return ImageList_Add(m_hImageList, hBitmap, hBitmapMask);
2007 int Add(HBITMAP hBitmap, COLORREF crMask)
2009 ATLASSERT(m_hImageList != NULL);
2010 return ImageList_AddMasked(m_hImageList, hBitmap, crMask);
2013 BOOL Remove(
int nImage)
2015 ATLASSERT(m_hImageList != NULL);
2016 return ImageList_Remove(m_hImageList, nImage);
2021 ATLASSERT(m_hImageList != NULL);
2022 return ImageList_RemoveAll(m_hImageList);
2025 BOOL Replace(
int nImage, HBITMAP hBitmap, HBITMAP hBitmapMask)
2027 ATLASSERT(m_hImageList != NULL);
2028 return ImageList_Replace(m_hImageList, nImage, hBitmap, hBitmapMask);
2031 int AddIcon(HICON hIcon)
2033 ATLASSERT(m_hImageList != NULL);
2034 return ImageList_AddIcon(m_hImageList, hIcon);
2037 int ReplaceIcon(
int nImage, HICON hIcon)
2039 ATLASSERT(m_hImageList != NULL);
2040 return ImageList_ReplaceIcon(m_hImageList, nImage, hIcon);
2043 HICON ExtractIcon(
int nImage)
2045 ATLASSERT(m_hImageList != NULL);
2046 return ImageList_ExtractIcon(NULL, m_hImageList, nImage);
2049 BOOL Draw(HDC hDC,
int nImage,
int x,
int y, UINT nStyle)
2051 ATLASSERT(m_hImageList != NULL);
2052 ATLASSERT(hDC != NULL);
2053 return ImageList_Draw(m_hImageList, nImage, hDC, x, y, nStyle);
2056 BOOL Draw(HDC hDC,
int nImage, POINT pt, UINT nStyle)
2058 ATLASSERT(m_hImageList != NULL);
2059 ATLASSERT(hDC != NULL);
2060 return ImageList_Draw(m_hImageList, nImage, hDC, pt.x, pt.y, nStyle);
2063 BOOL DrawEx(
int nImage, HDC hDC,
int x,
int y,
int dx,
int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
2065 ATLASSERT(m_hImageList != NULL);
2066 ATLASSERT(hDC != NULL);
2067 return ImageList_DrawEx(m_hImageList, nImage, hDC, x, y, dx, dy, rgbBk, rgbFg, fStyle);
2070 BOOL DrawEx(
int nImage, HDC hDC, RECT& rect, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
2072 ATLASSERT(m_hImageList != NULL);
2073 ATLASSERT(hDC != NULL);
2074 return ImageList_DrawEx(m_hImageList, nImage, hDC, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, rgbBk, rgbFg, fStyle);
2077 static BOOL DrawIndirect(IMAGELISTDRAWPARAMS* pimldp)
2079 return ImageList_DrawIndirect(pimldp);
2082 BOOL Copy(
int nSrc,
int nDst, UINT uFlags = ILCF_MOVE)
2084 ATLASSERT(m_hImageList != NULL);
2085 return ImageList_Copy(m_hImageList, nDst, m_hImageList, nSrc, uFlags);
2088 #ifdef __IStream_INTERFACE_DEFINED__ 2090 static HIMAGELIST Read(LPSTREAM lpStream)
2092 return ImageList_Read(lpStream);
2095 BOOL Write(LPSTREAM lpStream)
2097 ATLASSERT(m_hImageList != NULL);
2098 return ImageList_Write(m_hImageList, lpStream);
2100 #endif // !_WIN32_WCE 2102 #if (_WIN32_WINNT >= 0x0501) 2103 static HRESULT ReadEx(DWORD dwFlags, LPSTREAM lpStream, REFIID riid, PVOID* ppv)
2105 return ImageList_ReadEx(dwFlags, lpStream, riid, ppv);
2108 HRESULT WriteEx(DWORD dwFlags, LPSTREAM lpStream)
2110 ATLASSERT(m_hImageList != NULL);
2111 return ImageList_WriteEx(m_hImageList, dwFlags, lpStream);
2113 #endif // (_WIN32_WINNT >= 0x0501) 2114 #endif // __IStream_INTERFACE_DEFINED__ 2117 BOOL BeginDrag(
int nImage, POINT ptHotSpot)
2119 ATLASSERT(m_hImageList != NULL);
2120 return ImageList_BeginDrag(m_hImageList, nImage, ptHotSpot.x, ptHotSpot.y);
2123 BOOL BeginDrag(
int nImage,
int xHotSpot,
int yHotSpot)
2125 ATLASSERT(m_hImageList != NULL);
2126 return ImageList_BeginDrag(m_hImageList, nImage, xHotSpot, yHotSpot);
2129 static void EndDrag()
2131 ImageList_EndDrag();
2134 static BOOL DragMove(POINT pt)
2136 return ImageList_DragMove(pt.x, pt.y);
2139 static BOOL DragMove(
int x,
int y)
2141 return ImageList_DragMove(x, y);
2144 BOOL SetDragCursorImage(
int nDrag, POINT ptHotSpot)
2146 ATLASSERT(m_hImageList != NULL);
2147 return ImageList_SetDragCursorImage(m_hImageList, nDrag, ptHotSpot.x, ptHotSpot.y);
2150 BOOL SetDragCursorImage(
int nDrag,
int xHotSpot,
int yHotSpot)
2152 ATLASSERT(m_hImageList != NULL);
2153 return ImageList_SetDragCursorImage(m_hImageList, nDrag, xHotSpot, yHotSpot);
2156 static BOOL DragShowNolock(BOOL bShow = TRUE)
2158 return ImageList_DragShowNolock(bShow);
2161 static CImageList GetDragImage(LPPOINT lpPoint, LPPOINT lpPointHotSpot)
2163 return CImageList(ImageList_GetDragImage(lpPoint, lpPointHotSpot));
2166 static BOOL DragEnter(HWND hWnd, POINT point)
2168 return ImageList_DragEnter(hWnd, point.x, point.y);
2171 static BOOL DragEnter(HWND hWnd,
int x,
int y)
2173 return ImageList_DragEnter(hWnd, x, y);
2176 static BOOL DragLeave(HWND hWnd)
2178 return ImageList_DragLeave(hWnd);
2181 #if (_WIN32_IE >= 0x0400) 2184 ATLASSERT(m_hImageList != NULL);
2185 return CImageList(ImageList_Duplicate(m_hImageList));
2188 static CImageList Duplicate(HIMAGELIST hImageList)
2190 ATLASSERT(hImageList != NULL);
2191 return CImageList(ImageList_Duplicate(hImageList));
2193 #endif // (_WIN32_IE >= 0x0400) 2205 CToolInfo(UINT nFlags, HWND hWnd, UINT nIDTool = 0, LPRECT lpRect = NULL, LPTSTR lpstrText = LPSTR_TEXTCALLBACK, LPARAM lUserParam = NULL)
2207 Init(nFlags, hWnd, nIDTool, lpRect, lpstrText, lUserParam);
2210 operator LPTOOLINFO() {
return this; }
2212 operator LPARAM() {
return (LPARAM)
this; }
2214 void Init(UINT nFlags, HWND hWnd, UINT nIDTool = 0, LPRECT lpRect = NULL, LPTSTR lpstrText = LPSTR_TEXTCALLBACK, LPARAM lUserParam = NULL)
2216 ATLASSERT(::IsWindow(hWnd));
2217 memset(
this, 0,
sizeof(TOOLINFO));
2218 cbSize =
sizeof(TOOLINFO);
2222 hwnd = ::GetParent(hWnd);
2223 uFlags |= TTF_IDISHWND;
2224 uId = (UINT_PTR)hWnd;
2233 hinst = ModuleHelper::GetResourceInstance();
2234 lpszText = lpstrText;
2235 lParam = lUserParam;
2239 template <
class TBase>
2253 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2254 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2257 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2261 static LPCTSTR GetWndClassName()
2263 return TOOLTIPS_CLASS;
2266 void GetText(LPTOOLINFO lpToolInfo)
const 2268 ATLASSERT(::IsWindow(m_hWnd));
2269 ::SendMessage(m_hWnd, TTM_GETTEXT, 0, (LPARAM)&lpToolInfo);
2272 void GetText(LPTSTR lpstrText, HWND hWnd, UINT nIDTool = 0)
const 2274 ATLASSERT(::IsWindow(m_hWnd));
2275 ATLASSERT(hWnd != NULL);
2276 CToolInfo ti(0, hWnd, nIDTool, NULL, lpstrText);
2277 ::SendMessage(m_hWnd, TTM_GETTEXT, 0, ti);
2280 BOOL GetToolInfo(LPTOOLINFO lpToolInfo)
const 2282 ATLASSERT(::IsWindow(m_hWnd));
2283 return (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, (LPARAM)lpToolInfo);
2286 BOOL GetToolInfo(HWND hWnd, UINT nIDTool, UINT* puFlags, LPRECT lpRect, LPTSTR lpstrText)
const 2288 ATLASSERT(::IsWindow(m_hWnd));
2289 ATLASSERT(hWnd != NULL);
2290 ATLASSERT(puFlags != NULL);
2291 ATLASSERT(lpRect != NULL);
2292 CToolInfo ti(0, hWnd, nIDTool, NULL, lpstrText);
2293 BOOL bRet = (BOOL)::SendMessage(m_hWnd, TTM_GETTOOLINFO, 0, ti);
2296 *puFlags = ti.uFlags;
2302 void SetToolInfo(LPTOOLINFO lpToolInfo)
2304 ATLASSERT(::IsWindow(m_hWnd));
2305 ::SendMessage(m_hWnd, TTM_SETTOOLINFO, 0, (LPARAM)lpToolInfo);
2308 void SetToolRect(LPTOOLINFO lpToolInfo)
2310 ATLASSERT(::IsWindow(m_hWnd));
2311 ::SendMessage(m_hWnd, TTM_NEWTOOLRECT, 0, (LPARAM)lpToolInfo);
2314 void SetToolRect(HWND hWnd, UINT nIDTool, LPCRECT lpRect)
2316 ATLASSERT(::IsWindow(m_hWnd));
2317 ATLASSERT(hWnd != NULL);
2318 ATLASSERT(nIDTool != 0);
2320 CToolInfo ti(0, hWnd, nIDTool, (LPRECT)lpRect, NULL);
2321 ::SendMessage(m_hWnd, TTM_NEWTOOLRECT, 0, ti);
2324 int GetToolCount()
const 2326 ATLASSERT(::IsWindow(m_hWnd));
2327 return (
int)::SendMessage(m_hWnd, TTM_GETTOOLCOUNT, 0, 0L);
2330 int GetDelayTime(DWORD dwType)
const 2332 ATLASSERT(::IsWindow(m_hWnd));
2333 return (
int)::SendMessage(m_hWnd, TTM_GETDELAYTIME, dwType, 0L);
2336 void SetDelayTime(DWORD dwType,
int nTime)
2338 ATLASSERT(::IsWindow(m_hWnd));
2339 ::SendMessage(m_hWnd, TTM_SETDELAYTIME, dwType, MAKELPARAM(nTime, 0));
2342 void GetMargin(LPRECT lpRect)
const 2344 ATLASSERT(::IsWindow(m_hWnd));
2345 ::SendMessage(m_hWnd, TTM_GETMARGIN, 0, (LPARAM)lpRect);
2348 void SetMargin(LPRECT lpRect)
2350 ATLASSERT(::IsWindow(m_hWnd));
2351 ::SendMessage(m_hWnd, TTM_SETMARGIN, 0, (LPARAM)lpRect);
2354 int GetMaxTipWidth()
const 2356 ATLASSERT(::IsWindow(m_hWnd));
2357 return (
int)::SendMessage(m_hWnd, TTM_GETMAXTIPWIDTH, 0, 0L);
2360 int SetMaxTipWidth(
int nWidth)
2362 ATLASSERT(::IsWindow(m_hWnd));
2363 return (
int)::SendMessage(m_hWnd, TTM_SETMAXTIPWIDTH, 0, nWidth);
2366 COLORREF GetTipBkColor()
const 2368 ATLASSERT(::IsWindow(m_hWnd));
2369 return (COLORREF)::SendMessage(m_hWnd, TTM_GETTIPBKCOLOR, 0, 0L);
2372 void SetTipBkColor(COLORREF clr)
2374 ATLASSERT(::IsWindow(m_hWnd));
2375 ::SendMessage(m_hWnd, TTM_SETTIPBKCOLOR, (WPARAM)clr, 0L);
2378 COLORREF GetTipTextColor()
const 2380 ATLASSERT(::IsWindow(m_hWnd));
2381 return (COLORREF)::SendMessage(m_hWnd, TTM_GETTIPTEXTCOLOR, 0, 0L);
2384 void SetTipTextColor(COLORREF clr)
2386 ATLASSERT(::IsWindow(m_hWnd));
2387 ::SendMessage(m_hWnd, TTM_SETTIPTEXTCOLOR, (WPARAM)clr, 0L);
2390 BOOL GetCurrentTool(LPTOOLINFO lpToolInfo)
const 2392 ATLASSERT(::IsWindow(m_hWnd));
2393 return (BOOL)::SendMessage(m_hWnd, TTM_GETCURRENTTOOL, 0, (LPARAM)lpToolInfo);
2396 #if (_WIN32_IE >= 0x0500) 2397 SIZE GetBubbleSize(LPTOOLINFO lpToolInfo)
const 2399 ATLASSERT(::IsWindow(m_hWnd));
2400 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TTM_GETBUBBLESIZE, 0, (LPARAM)lpToolInfo);
2401 SIZE size = { GET_X_LPARAM(dwRet), GET_Y_LPARAM(dwRet) };
2405 BOOL SetTitle(UINT uIcon, LPCTSTR lpstrTitle)
2407 ATLASSERT(::IsWindow(m_hWnd));
2408 return (BOOL)::SendMessage(m_hWnd, TTM_SETTITLE, uIcon, (LPARAM)lpstrTitle);
2410 #endif // (_WIN32_IE >= 0x0500) 2412 #if (_WIN32_WINNT >= 0x0501) 2413 void GetTitle(PTTGETTITLE pTTGetTitle)
const 2415 ATLASSERT(::IsWindow(m_hWnd));
2416 ::SendMessage(m_hWnd, TTM_GETTITLE, 0, (LPARAM)pTTGetTitle);
2419 void SetWindowTheme(LPCWSTR lpstrTheme)
2421 ATLASSERT(::IsWindow(m_hWnd));
2422 ::SendMessage(m_hWnd, TTM_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
2424 #endif // (_WIN32_WINNT >= 0x0501) 2427 void Activate(BOOL bActivate)
2429 ATLASSERT(::IsWindow(m_hWnd));
2430 ::SendMessage(m_hWnd, TTM_ACTIVATE, bActivate, 0L);
2433 BOOL AddTool(LPTOOLINFO lpToolInfo)
2435 ATLASSERT(::IsWindow(m_hWnd));
2436 return (BOOL)::SendMessage(m_hWnd, TTM_ADDTOOL, 0, (LPARAM)lpToolInfo);
2439 BOOL AddTool(HWND hWnd,
ATL::_U_STRINGorID text = LPSTR_TEXTCALLBACK, LPCRECT lpRectTool = NULL, UINT nIDTool = 0)
2441 ATLASSERT(::IsWindow(m_hWnd));
2442 ATLASSERT(hWnd != NULL);
2444 ATLASSERT((lpRectTool != NULL && nIDTool != 0) || (lpRectTool == NULL && nIDTool == 0));
2446 CToolInfo ti(0, hWnd, nIDTool, (LPRECT)lpRectTool, (LPTSTR)text.m_lpstr);
2447 return (BOOL)::SendMessage(m_hWnd, TTM_ADDTOOL, 0, ti);
2450 void DelTool(LPTOOLINFO lpToolInfo)
2452 ATLASSERT(::IsWindow(m_hWnd));
2453 ::SendMessage(m_hWnd, TTM_DELTOOL, 0, (LPARAM)lpToolInfo);
2456 void DelTool(HWND hWnd, UINT nIDTool = 0)
2458 ATLASSERT(::IsWindow(m_hWnd));
2459 ATLASSERT(hWnd != NULL);
2461 CToolInfo ti(0, hWnd, nIDTool, NULL, NULL);
2462 ::SendMessage(m_hWnd, TTM_DELTOOL, 0, ti);
2465 BOOL HitTest(LPTTHITTESTINFO lpHitTestInfo)
const 2467 ATLASSERT(::IsWindow(m_hWnd));
2468 return (BOOL)::SendMessage(m_hWnd, TTM_HITTEST, 0, (LPARAM)lpHitTestInfo);
2471 BOOL HitTest(HWND hWnd, POINT pt, LPTOOLINFO lpToolInfo)
const 2473 ATLASSERT(::IsWindow(m_hWnd));
2474 ATLASSERT(hWnd != NULL);
2475 ATLASSERT(lpToolInfo != NULL);
2477 TTHITTESTINFO hti = { 0 };
2478 hti.ti.cbSize =
sizeof(TOOLINFO);
2482 if((BOOL)::SendMessage(m_hWnd, TTM_HITTEST, 0, (LPARAM)&hti) != FALSE)
2484 *lpToolInfo = hti.ti;
2490 void RelayEvent(LPMSG lpMsg)
2492 ATLASSERT(::IsWindow(m_hWnd));
2493 ::SendMessage(m_hWnd, TTM_RELAYEVENT, 0, (LPARAM)lpMsg);
2496 void UpdateTipText(LPTOOLINFO lpToolInfo)
2498 ATLASSERT(::IsWindow(m_hWnd));
2499 ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, (LPARAM)lpToolInfo);
2504 ATLASSERT(::IsWindow(m_hWnd));
2505 ATLASSERT(hWnd != NULL);
2507 CToolInfo ti(0, hWnd, nIDTool, NULL, (LPTSTR)text.m_lpstr);
2508 ::SendMessage(m_hWnd, TTM_UPDATETIPTEXT, 0, ti);
2511 BOOL EnumTools(UINT nTool, LPTOOLINFO lpToolInfo)
const 2513 ATLASSERT(::IsWindow(m_hWnd));
2514 return (BOOL)::SendMessage(m_hWnd, TTM_ENUMTOOLS, nTool, (LPARAM)lpToolInfo);
2519 ATLASSERT(::IsWindow(m_hWnd));
2520 ::SendMessage(m_hWnd, TTM_POP, 0, 0L);
2523 void TrackActivate(LPTOOLINFO lpToolInfo, BOOL bActivate)
2525 ATLASSERT(::IsWindow(m_hWnd));
2526 ::SendMessage(m_hWnd, TTM_TRACKACTIVATE, bActivate, (LPARAM)lpToolInfo);
2529 void TrackPosition(
int xPos,
int yPos)
2531 ATLASSERT(::IsWindow(m_hWnd));
2532 ::SendMessage(m_hWnd, TTM_TRACKPOSITION, 0, MAKELPARAM(xPos, yPos));
2535 #if (_WIN32_IE >= 0x0400) 2538 ATLASSERT(::IsWindow(m_hWnd));
2539 ::SendMessage(m_hWnd, TTM_UPDATE, 0, 0L);
2541 #endif // (_WIN32_IE >= 0x0400) 2543 #if (_WIN32_IE >= 0x0500) 2544 BOOL AdjustRect(LPRECT lpRect, BOOL bLarger )
2546 ATLASSERT(::IsWindow(m_hWnd));
2547 return (BOOL)::SendMessage(m_hWnd, TTM_ADJUSTRECT, bLarger, (LPARAM)lpRect);
2549 #endif // (_WIN32_IE >= 0x0500) 2551 #if (_WIN32_WINNT >= 0x0501) 2554 ATLASSERT(::IsWindow(m_hWnd));
2555 ::SendMessage(m_hWnd, TTM_POPUP, 0, 0L);
2557 #endif // (_WIN32_WINNT >= 0x0501) 2562 #endif // !_WIN32_WCE 2568 template <
class TBase>
2582 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2583 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2586 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2590 static LPCTSTR GetWndClassName()
2595 int GetItemCount()
const 2597 ATLASSERT(::IsWindow(m_hWnd));
2598 return (
int)::SendMessage(m_hWnd, HDM_GETITEMCOUNT, 0, 0L);
2601 BOOL GetItem(
int nIndex, LPHDITEM pHeaderItem)
const 2603 ATLASSERT(::IsWindow(m_hWnd));
2604 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEM, nIndex, (LPARAM)pHeaderItem);
2607 BOOL SetItem(
int nIndex, LPHDITEM pHeaderItem)
2609 ATLASSERT(::IsWindow(m_hWnd));
2610 return (BOOL)::SendMessage(m_hWnd, HDM_SETITEM, nIndex, (LPARAM)pHeaderItem);
2615 ATLASSERT(::IsWindow(m_hWnd));
2616 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_GETIMAGELIST, 0, 0L));
2619 CImageList SetImageList(HIMAGELIST hImageList)
2621 ATLASSERT(::IsWindow(m_hWnd));
2622 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_SETIMAGELIST, 0, (LPARAM)hImageList));
2625 BOOL GetOrderArray(
int nSize,
int* lpnArray)
const 2627 ATLASSERT(::IsWindow(m_hWnd));
2628 return (BOOL)::SendMessage(m_hWnd, HDM_GETORDERARRAY, nSize, (LPARAM)lpnArray);
2631 BOOL SetOrderArray(
int nSize,
int* lpnArray)
2633 ATLASSERT(::IsWindow(m_hWnd));
2634 return (BOOL)::SendMessage(m_hWnd, HDM_SETORDERARRAY, nSize, (LPARAM)lpnArray);
2637 BOOL GetItemRect(
int nIndex, LPRECT lpItemRect)
const 2639 ATLASSERT(::IsWindow(m_hWnd));
2640 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEMRECT, nIndex, (LPARAM)lpItemRect);
2643 int SetHotDivider(BOOL bPos, DWORD dwInputValue)
2645 ATLASSERT(::IsWindow(m_hWnd));
2646 return (
int)::SendMessage(m_hWnd, HDM_SETHOTDIVIDER, bPos, dwInputValue);
2649 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 2650 BOOL GetUnicodeFormat()
const 2652 ATLASSERT(::IsWindow(m_hWnd));
2653 return (BOOL)::SendMessage(m_hWnd, HDM_GETUNICODEFORMAT, 0, 0L);
2656 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
2658 ATLASSERT(::IsWindow(m_hWnd));
2659 return (BOOL)::SendMessage(m_hWnd, HDM_SETUNICODEFORMAT, bUnicode, 0L);
2661 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 2663 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2664 int GetBitmapMargin()
const 2666 ATLASSERT(::IsWindow(m_hWnd));
2667 return (
int)::SendMessage(m_hWnd, HDM_GETBITMAPMARGIN, 0, 0L);
2670 int SetBitmapMargin(
int nWidth)
2672 ATLASSERT(::IsWindow(m_hWnd));
2673 return (
int)::SendMessage(m_hWnd, HDM_SETBITMAPMARGIN, nWidth, 0L);
2676 int SetFilterChangeTimeout(DWORD dwTimeOut)
2678 ATLASSERT(::IsWindow(m_hWnd));
2679 return (
int)::SendMessage(m_hWnd, HDM_SETFILTERCHANGETIMEOUT, 0, dwTimeOut);
2681 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2683 #if (_WIN32_WINNT >= 0x0600) 2684 BOOL GetItemDropDownRect(
int nIndex, LPRECT lpRect)
const 2686 ATLASSERT(::IsWindow(m_hWnd));
2687 return (BOOL)::SendMessage(m_hWnd, HDM_GETITEMDROPDOWNRECT, nIndex, (LPARAM)lpRect);
2690 BOOL GetOverflowRect(LPRECT lpRect)
const 2692 ATLASSERT(::IsWindow(m_hWnd));
2693 return (BOOL)::SendMessage(m_hWnd, HDM_GETOVERFLOWRECT, 0, (LPARAM)lpRect);
2696 int GetFocusedItem()
const 2698 ATLASSERT(::IsWindow(m_hWnd));
2699 return (
int)::SendMessage(m_hWnd, HDM_GETFOCUSEDITEM, 0, 0L);
2702 BOOL SetFocusedItem(
int nIndex)
2704 ATLASSERT(::IsWindow(m_hWnd));
2705 return (BOOL)::SendMessage(m_hWnd, HDM_SETFOCUSEDITEM, 0, nIndex);
2707 #endif // (_WIN32_WINNT >= 0x0600) 2710 int InsertItem(
int nIndex, LPHDITEM phdi)
2712 ATLASSERT(::IsWindow(m_hWnd));
2713 return (
int)::SendMessage(m_hWnd, HDM_INSERTITEM, nIndex, (LPARAM)phdi);
2716 int AddItem(LPHDITEM phdi)
2718 return InsertItem(GetItemCount(), phdi);
2721 BOOL DeleteItem(
int nIndex)
2723 ATLASSERT(::IsWindow(m_hWnd));
2724 return (BOOL)::SendMessage(m_hWnd, HDM_DELETEITEM, nIndex, 0L);
2727 BOOL Layout(HD_LAYOUT* pHeaderLayout)
2729 ATLASSERT(::IsWindow(m_hWnd));
2730 return (BOOL)::SendMessage(m_hWnd, HDM_LAYOUT, 0, (LPARAM)pHeaderLayout);
2733 int HitTest(LPHDHITTESTINFO lpHitTestInfo)
const 2735 ATLASSERT(::IsWindow(m_hWnd));
2736 return (
int)::SendMessage(m_hWnd, HDM_HITTEST, 0, (LPARAM)lpHitTestInfo);
2739 int OrderToIndex(
int nOrder)
2741 ATLASSERT(::IsWindow(m_hWnd));
2742 return (
int)::SendMessage(m_hWnd, HDM_ORDERTOINDEX, nOrder, 0L);
2747 ATLASSERT(::IsWindow(m_hWnd));
2748 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, HDM_CREATEDRAGIMAGE, nIndex, 0L));
2751 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2752 int EditFilter(
int nColumn, BOOL bDiscardChanges)
2754 ATLASSERT(::IsWindow(m_hWnd));
2755 return (
int)::SendMessage(m_hWnd, HDM_EDITFILTER, nColumn, MAKELPARAM(bDiscardChanges, 0));
2758 int ClearFilter(
int nColumn)
2760 ATLASSERT(::IsWindow(m_hWnd));
2761 return (
int)::SendMessage(m_hWnd, HDM_CLEARFILTER, nColumn, 0L);
2764 int ClearAllFilters()
2766 ATLASSERT(::IsWindow(m_hWnd));
2767 return (
int)::SendMessage(m_hWnd, HDM_CLEARFILTER, (WPARAM)-1, 0L);
2769 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 2778 template <
class TBase>
2792 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
2793 DWORD dwStyle = 0, DWORD dwExStyle = 0,
2796 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
2800 static LPCTSTR GetWndClassName()
2805 COLORREF GetBkColor()
const 2807 ATLASSERT(::IsWindow(m_hWnd));
2808 return (COLORREF)::SendMessage(m_hWnd, LVM_GETBKCOLOR, 0, 0L);
2811 BOOL SetBkColor(COLORREF cr)
2813 ATLASSERT(::IsWindow(m_hWnd));
2814 return (BOOL)::SendMessage(m_hWnd, LVM_SETBKCOLOR, 0, cr);
2817 CImageList GetImageList(
int nImageListType)
const 2819 ATLASSERT(::IsWindow(m_hWnd));
2820 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_GETIMAGELIST, nImageListType, 0L));
2823 CImageList SetImageList(HIMAGELIST hImageList,
int nImageList)
2825 ATLASSERT(::IsWindow(m_hWnd));
2826 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_SETIMAGELIST, nImageList, (LPARAM)hImageList));
2829 int GetItemCount()
const 2831 ATLASSERT(::IsWindow(m_hWnd));
2832 return (
int)::SendMessage(m_hWnd, LVM_GETITEMCOUNT, 0, 0L);
2835 BOOL SetItemCount(
int nItems)
2837 ATLASSERT(::IsWindow(m_hWnd));
2838 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, 0L);
2841 BOOL GetItem(LPLVITEM pItem)
const 2843 ATLASSERT(::IsWindow(m_hWnd));
2844 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem);
2847 BOOL SetItem(
const LVITEM* pItem)
2849 ATLASSERT(::IsWindow(m_hWnd));
2850 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)pItem);
2853 BOOL SetItem(
int nItem,
int nSubItem, UINT nMask, LPCTSTR lpszItem,
2854 int nImage, UINT nState, UINT nStateMask, LPARAM lParam)
2856 ATLASSERT(::IsWindow(m_hWnd));
2860 lvi.iSubItem = nSubItem;
2861 lvi.stateMask = nStateMask;
2863 lvi.pszText = (LPTSTR) lpszItem;
2864 lvi.iImage = nImage;
2865 lvi.lParam = lParam;
2866 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)&lvi);
2869 UINT GetItemState(
int nItem, UINT nMask)
const 2871 ATLASSERT(::IsWindow(m_hWnd));
2872 return (UINT)::SendMessage(m_hWnd, LVM_GETITEMSTATE, nItem, nMask);
2875 BOOL SetItemState(
int nItem, UINT nState, UINT nStateMask)
2877 ATLASSERT(::IsWindow(m_hWnd));
2880 lvi.stateMask = nStateMask;
2881 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi);
2884 BOOL SetItemState(
int nItem, LPLVITEM pItem)
2886 ATLASSERT(::IsWindow(m_hWnd));
2887 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)pItem);
2891 BOOL GetItemText(
int nItem,
int nSubItem, BSTR& bstrText)
const 2894 ATLASSERT(::IsWindow(m_hWnd));
2895 ATLASSERT(bstrText == NULL);
2897 lvi.iSubItem = nSubItem;
2899 LPTSTR lpstrText = NULL;
2901 for(
int nLen = 256; ; nLen *= 2)
2903 ATLTRY(lpstrText =
new TCHAR[nLen]);
2904 if(lpstrText == NULL)
2906 lpstrText[0] = NULL;
2907 lvi.cchTextMax = nLen;
2908 lvi.pszText = lpstrText;
2909 nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2912 delete [] lpstrText;
2916 if(lpstrText != NULL)
2919 bstrText = ::SysAllocString(T2OLE(lpstrText));
2920 delete [] lpstrText;
2923 return (bstrText != NULL) ? TRUE : FALSE;
2925 #endif // !_ATL_NO_COM 2927 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 2928 int GetItemText(
int nItem,
int nSubItem, _CSTRING_NS::CString& strText)
const 2930 ATLASSERT(::IsWindow(m_hWnd));
2932 lvi.iSubItem = nSubItem;
2936 for(
int nLen = 256; ; nLen *= 2)
2938 lvi.cchTextMax = nLen;
2939 lvi.pszText = strText.GetBufferSetLength(nLen);
2940 if(lvi.pszText == NULL)
2945 nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2949 strText.ReleaseBuffer();
2952 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 2954 int GetItemText(
int nItem,
int nSubItem, LPTSTR lpszText,
int nLen)
const 2956 ATLASSERT(::IsWindow(m_hWnd));
2958 lvi.iSubItem = nSubItem;
2959 lvi.cchTextMax = nLen;
2960 lvi.pszText = lpszText;
2961 return (
int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)&lvi);
2964 BOOL SetItemText(
int nItem,
int nSubItem, LPCTSTR lpszText)
2966 ATLASSERT(::IsWindow(m_hWnd));
2967 return SetItem(nItem, nSubItem, LVIF_TEXT, lpszText, 0, 0, 0, 0);
2970 DWORD_PTR GetItemData(
int nItem)
const 2972 ATLASSERT(::IsWindow(m_hWnd));
2975 lvi.mask = LVIF_PARAM;
2976 BOOL bRet = (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)&lvi);
2977 return (DWORD_PTR)(bRet ? lvi.lParam : NULL);
2980 BOOL SetItemData(
int nItem, DWORD_PTR dwData)
2982 ATLASSERT(::IsWindow(m_hWnd));
2983 return SetItem(nItem, 0, LVIF_PARAM, NULL, 0, 0, 0, (LPARAM)dwData);
2986 UINT GetCallbackMask()
const 2988 ATLASSERT(::IsWindow(m_hWnd));
2989 return (UINT)::SendMessage(m_hWnd, LVM_GETCALLBACKMASK, 0, 0L);
2992 BOOL SetCallbackMask(UINT nMask)
2994 ATLASSERT(::IsWindow(m_hWnd));
2995 return (BOOL)::SendMessage(m_hWnd, LVM_SETCALLBACKMASK, nMask, 0L);
2998 BOOL GetItemPosition(
int nItem, LPPOINT lpPoint)
const 3000 ATLASSERT(::IsWindow(m_hWnd));
3001 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMPOSITION, nItem, (LPARAM)lpPoint);
3004 BOOL SetItemPosition(
int nItem, POINT pt)
3006 ATLASSERT(::IsWindow(m_hWnd));
3007 ATLASSERT(((GetStyle() & LVS_TYPEMASK) == LVS_ICON) || ((GetStyle() & LVS_TYPEMASK) == LVS_SMALLICON));
3008 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt);
3011 BOOL SetItemPosition(
int nItem,
int x,
int y)
3013 ATLASSERT(::IsWindow(m_hWnd));
3014 ATLASSERT(((GetStyle() & LVS_TYPEMASK) == LVS_ICON) || ((GetStyle() & LVS_TYPEMASK) == LVS_SMALLICON));
3015 POINT pt = { x, y };
3016 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMPOSITION32, nItem, (LPARAM)&pt);
3019 int GetStringWidth(LPCTSTR lpsz)
const 3021 ATLASSERT(::IsWindow(m_hWnd));
3022 return (
int)::SendMessage(m_hWnd, LVM_GETSTRINGWIDTH, 0, (LPARAM)lpsz);
3025 CEdit GetEditControl()
const 3027 ATLASSERT(::IsWindow(m_hWnd));
3028 return CEdit((HWND)::SendMessage(m_hWnd, LVM_GETEDITCONTROL, 0, 0L));
3031 BOOL GetColumn(
int nCol, LVCOLUMN* pColumn)
const 3033 ATLASSERT(::IsWindow(m_hWnd));
3034 return (BOOL)::SendMessage(m_hWnd, LVM_GETCOLUMN, nCol, (LPARAM)pColumn);
3037 BOOL SetColumn(
int nCol,
const LVCOLUMN* pColumn)
3039 ATLASSERT(::IsWindow(m_hWnd));
3040 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMN, nCol, (LPARAM)pColumn);
3043 int GetColumnWidth(
int nCol)
const 3045 ATLASSERT(::IsWindow(m_hWnd));
3046 return (
int)::SendMessage(m_hWnd, LVM_GETCOLUMNWIDTH, nCol, 0L);
3049 BOOL SetColumnWidth(
int nCol,
int cx)
3051 ATLASSERT(::IsWindow(m_hWnd));
3052 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNWIDTH, nCol, MAKELPARAM(cx, 0));
3055 BOOL GetViewRect(LPRECT lpRect)
const 3057 ATLASSERT(::IsWindow(m_hWnd));
3058 return (BOOL)::SendMessage(m_hWnd, LVM_GETVIEWRECT, 0, (LPARAM)lpRect);
3061 COLORREF GetTextColor()
const 3063 ATLASSERT(::IsWindow(m_hWnd));
3064 return (COLORREF)::SendMessage(m_hWnd, LVM_GETTEXTCOLOR, 0, 0L);
3067 BOOL SetTextColor(COLORREF cr)
3069 ATLASSERT(::IsWindow(m_hWnd));
3070 return (BOOL)::SendMessage(m_hWnd, LVM_SETTEXTCOLOR, 0, cr);
3073 COLORREF GetTextBkColor()
const 3075 ATLASSERT(::IsWindow(m_hWnd));
3076 return (COLORREF)::SendMessage(m_hWnd, LVM_GETTEXTBKCOLOR, 0, 0L);
3079 BOOL SetTextBkColor(COLORREF cr)
3081 ATLASSERT(::IsWindow(m_hWnd));
3082 return (BOOL)::SendMessage(m_hWnd, LVM_SETTEXTBKCOLOR, 0, cr);
3085 int GetTopIndex()
const 3087 ATLASSERT(::IsWindow(m_hWnd));
3088 return (
int)::SendMessage(m_hWnd, LVM_GETTOPINDEX, 0, 0L);
3091 int GetCountPerPage()
const 3093 ATLASSERT(::IsWindow(m_hWnd));
3094 return (
int)::SendMessage(m_hWnd, LVM_GETCOUNTPERPAGE, 0, 0L);
3097 BOOL GetOrigin(LPPOINT lpPoint)
const 3099 ATLASSERT(::IsWindow(m_hWnd));
3100 return (BOOL)::SendMessage(m_hWnd, LVM_GETORIGIN, 0, (LPARAM)lpPoint);
3103 UINT GetSelectedCount()
const 3105 ATLASSERT(::IsWindow(m_hWnd));
3106 return (UINT)::SendMessage(m_hWnd, LVM_GETSELECTEDCOUNT, 0, 0L);
3109 BOOL GetItemRect(
int nItem, LPRECT lpRect, UINT nCode)
const 3111 ATLASSERT(::IsWindow(m_hWnd));
3112 lpRect->left = nCode;
3113 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMRECT, (WPARAM)nItem, (LPARAM)lpRect);
3117 HCURSOR GetHotCursor()
const 3119 ATLASSERT(::IsWindow(m_hWnd));
3120 return (HCURSOR)::SendMessage(m_hWnd, LVM_GETHOTCURSOR, 0, 0L);
3123 HCURSOR SetHotCursor(HCURSOR hHotCursor)
3125 ATLASSERT(::IsWindow(m_hWnd));
3126 return (HCURSOR)::SendMessage(m_hWnd, LVM_SETHOTCURSOR, 0, (LPARAM)hHotCursor);
3129 int GetHotItem()
const 3131 ATLASSERT(::IsWindow(m_hWnd));
3132 return (
int)::SendMessage(m_hWnd, LVM_GETHOTITEM, 0, 0L);
3135 int SetHotItem(
int nIndex)
3137 ATLASSERT(::IsWindow(m_hWnd));
3138 return (
int)::SendMessage(m_hWnd, LVM_SETHOTITEM, nIndex, 0L);
3140 #endif // !_WIN32_WCE 3142 BOOL GetColumnOrderArray(
int nCount,
int* lpnArray)
const 3144 ATLASSERT(::IsWindow(m_hWnd));
3145 return (BOOL)::SendMessage(m_hWnd, LVM_GETCOLUMNORDERARRAY, nCount, (LPARAM)lpnArray);
3148 BOOL SetColumnOrderArray(
int nCount,
int* lpnArray)
3150 ATLASSERT(::IsWindow(m_hWnd));
3151 return (BOOL)::SendMessage(m_hWnd, LVM_SETCOLUMNORDERARRAY, nCount, (LPARAM)lpnArray);
3154 CHeaderCtrl GetHeader()
const 3156 ATLASSERT(::IsWindow(m_hWnd));
3157 return CHeaderCtrl((HWND)::SendMessage(m_hWnd, LVM_GETHEADER, 0, 0L));
3160 BOOL GetSubItemRect(
int nItem,
int nSubItem,
int nFlag, LPRECT lpRect)
const 3162 ATLASSERT(::IsWindow(m_hWnd));
3163 ATLASSERT((GetStyle() & LVS_TYPEMASK) == LVS_REPORT);
3164 ATLASSERT(lpRect != NULL);
3165 lpRect->top = nSubItem;
3166 lpRect->left = nFlag;
3167 return (BOOL)::SendMessage(m_hWnd, LVM_GETSUBITEMRECT, nItem, (LPARAM)lpRect);
3170 DWORD SetIconSpacing(
int cx,
int cy)
3172 ATLASSERT(::IsWindow(m_hWnd));
3173 ATLASSERT((GetStyle() & LVS_TYPEMASK) == LVS_ICON);
3174 return (DWORD)::SendMessage(m_hWnd, LVM_SETICONSPACING, 0, MAKELPARAM(cx, cy));
3177 int GetISearchString(LPTSTR lpstr)
const 3179 ATLASSERT(::IsWindow(m_hWnd));
3180 return (
int)::SendMessage(m_hWnd, LVM_GETISEARCHSTRING, 0, (LPARAM)lpstr);
3183 void GetItemSpacing(SIZE& sizeSpacing, BOOL bSmallIconView = FALSE)
const 3185 ATLASSERT(::IsWindow(m_hWnd));
3186 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, LVM_GETITEMSPACING, bSmallIconView, 0L);
3187 sizeSpacing.cx = GET_X_LPARAM(dwRet);
3188 sizeSpacing.cy = GET_Y_LPARAM(dwRet);
3191 #if (_WIN32_WCE >= 410) 3192 void SetItemSpacing(INT cySpacing)
3194 ATLASSERT(::IsWindow(m_hWnd));
3195 ListView_SetItemSpacing(m_hWnd, cySpacing);
3197 #endif // (_WIN32_WCE >= 410) 3200 int GetSelectedIndex()
const 3202 ATLASSERT(::IsWindow(m_hWnd));
3203 ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
3204 return (
int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, (WPARAM)-1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0));
3207 BOOL GetSelectedItem(LPLVITEM pItem)
const 3209 ATLASSERT(::IsWindow(m_hWnd));
3210 ATLASSERT((GetStyle() & LVS_SINGLESEL) != 0);
3211 ATLASSERT(pItem != NULL);
3212 pItem->iItem = (int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, (WPARAM)-1, MAKELPARAM(LVNI_ALL | LVNI_SELECTED, 0));
3213 if(pItem->iItem == -1)
3215 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEM, 0, (LPARAM)pItem);
3219 DWORD GetExtendedListViewStyle()
const 3221 ATLASSERT(::IsWindow(m_hWnd));
3222 return (DWORD)::SendMessage(m_hWnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L);
3226 DWORD SetExtendedListViewStyle(DWORD dwExStyle, DWORD dwExMask = 0)
3228 ATLASSERT(::IsWindow(m_hWnd));
3229 return (DWORD)::SendMessage(m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, dwExMask, dwExStyle);
3233 BOOL GetCheckState(
int nIndex)
const 3235 ATLASSERT(::IsWindow(m_hWnd));
3236 ATLASSERT((GetExtendedListViewStyle() & LVS_EX_CHECKBOXES) != 0);
3237 UINT uRet = GetItemState(nIndex, LVIS_STATEIMAGEMASK);
3238 return (uRet >> 12) - 1;
3241 BOOL SetCheckState(
int nItem, BOOL bCheck)
3243 int nCheck = bCheck ? 2 : 1;
3244 return SetItemState(nItem, INDEXTOSTATEIMAGEMASK(nCheck), LVIS_STATEIMAGEMASK);
3248 DWORD GetViewType()
const 3250 ATLASSERT(::IsWindow(m_hWnd));
3251 return (GetStyle() & LVS_TYPEMASK);
3254 DWORD SetViewType(DWORD dwType)
3256 ATLASSERT(::IsWindow(m_hWnd));
3257 ATLASSERT(dwType == LVS_ICON || dwType == LVS_SMALLICON || dwType == LVS_LIST || dwType == LVS_REPORT);
3258 DWORD dwOldType = GetViewType();
3259 if(dwType != dwOldType)
3260 ModifyStyle(LVS_TYPEMASK, (dwType & LVS_TYPEMASK));
3264 #if (_WIN32_IE >= 0x0400) 3266 BOOL GetBkImage(LPLVBKIMAGE plvbki)
const 3268 ATLASSERT(::IsWindow(m_hWnd));
3269 return (BOOL)::SendMessage(m_hWnd, LVM_GETBKIMAGE, 0, (LPARAM)plvbki);
3272 BOOL SetBkImage(LPLVBKIMAGE plvbki)
3274 ATLASSERT(::IsWindow(m_hWnd));
3275 return (BOOL)::SendMessage(m_hWnd, LVM_SETBKIMAGE, 0, (LPARAM)plvbki);
3277 #endif // !_WIN32_WCE 3279 int GetSelectionMark()
const 3281 ATLASSERT(::IsWindow(m_hWnd));
3282 return (
int)::SendMessage(m_hWnd, LVM_GETSELECTIONMARK, 0, 0L);
3285 int SetSelectionMark(
int nIndex)
3287 ATLASSERT(::IsWindow(m_hWnd));
3288 return (
int)::SendMessage(m_hWnd, LVM_SETSELECTIONMARK, 0, nIndex);
3292 BOOL GetWorkAreas(
int nWorkAreas, LPRECT lpRect)
const 3294 ATLASSERT(::IsWindow(m_hWnd));
3295 return (BOOL)::SendMessage(m_hWnd, LVM_GETWORKAREAS, nWorkAreas, (LPARAM)lpRect);
3298 BOOL SetWorkAreas(
int nWorkAreas, LPRECT lpRect)
3300 ATLASSERT(::IsWindow(m_hWnd));
3301 return (BOOL)::SendMessage(m_hWnd, LVM_SETWORKAREAS, nWorkAreas, (LPARAM)lpRect);
3304 DWORD GetHoverTime()
const 3306 ATLASSERT(::IsWindow(m_hWnd));
3307 ATLASSERT((GetExtendedListViewStyle() & (LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE)) != 0);
3308 return (DWORD)::SendMessage(m_hWnd, LVM_GETHOVERTIME, 0, 0L);
3311 DWORD SetHoverTime(DWORD dwHoverTime)
3313 ATLASSERT(::IsWindow(m_hWnd));
3314 ATLASSERT((GetExtendedListViewStyle() & (LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_TWOCLICKACTIVATE)) != 0);
3315 return (DWORD)::SendMessage(m_hWnd, LVM_SETHOVERTIME, 0, dwHoverTime);
3318 BOOL GetNumberOfWorkAreas(
int* pnWorkAreas)
const 3320 ATLASSERT(::IsWindow(m_hWnd));
3321 return (BOOL)::SendMessage(m_hWnd, LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)pnWorkAreas);
3323 #endif // !_WIN32_WCE 3325 BOOL SetItemCountEx(
int nItems, DWORD dwFlags)
3327 ATLASSERT(::IsWindow(m_hWnd));
3328 ATLASSERT(((GetStyle() & LVS_OWNERDATA) != 0) && (((GetStyle() & LVS_TYPEMASK) == LVS_REPORT) || ((GetStyle() & LVS_TYPEMASK) == LVS_LIST)));
3329 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMCOUNT, nItems, dwFlags);
3333 CToolTipCtrl GetToolTips()
const 3335 ATLASSERT(::IsWindow(m_hWnd));
3336 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, LVM_GETTOOLTIPS, 0, 0L));
3339 CToolTipCtrl SetToolTips(HWND hWndTT)
3341 ATLASSERT(::IsWindow(m_hWnd));
3342 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, LVM_SETTOOLTIPS, (WPARAM)hWndTT, 0L));
3345 BOOL GetUnicodeFormat()
const 3347 ATLASSERT(::IsWindow(m_hWnd));
3348 return (BOOL)::SendMessage(m_hWnd, LVM_GETUNICODEFORMAT, 0, 0L);
3351 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
3353 ATLASSERT(::IsWindow(m_hWnd));
3354 return (BOOL)::SendMessage(m_hWnd, LVM_SETUNICODEFORMAT, bUnicode, 0L);
3356 #endif // !_WIN32_WCE 3357 #endif // (_WIN32_IE >= 0x0400) 3359 #if (_WIN32_WINNT >= 0x0501) 3360 int GetSelectedColumn()
const 3362 ATLASSERT(::IsWindow(m_hWnd));
3363 return (
int)::SendMessage(m_hWnd, LVM_GETSELECTEDCOLUMN, 0, 0L);
3366 void SetSelectedColumn(
int nColumn)
3368 ATLASSERT(::IsWindow(m_hWnd));
3369 ::SendMessage(m_hWnd, LVM_SETSELECTEDCOLUMN, nColumn, 0L);
3372 DWORD GetView()
const 3374 ATLASSERT(::IsWindow(m_hWnd));
3375 return (DWORD)::SendMessage(m_hWnd, LVM_GETVIEW, 0, 0L);
3378 int SetView(DWORD dwView)
3380 ATLASSERT(::IsWindow(m_hWnd));
3381 return (
int)::SendMessage(m_hWnd, LVM_SETVIEW, dwView, 0L);
3384 BOOL IsGroupViewEnabled()
const 3386 ATLASSERT(::IsWindow(m_hWnd));
3387 return (BOOL)::SendMessage(m_hWnd, LVM_ISGROUPVIEWENABLED, 0, 0L);
3390 int GetGroupInfo(
int nGroupID, PLVGROUP pGroup)
const 3392 ATLASSERT(::IsWindow(m_hWnd));
3393 return (
int)::SendMessage(m_hWnd, LVM_GETGROUPINFO, nGroupID, (LPARAM)pGroup);
3396 int SetGroupInfo(
int nGroupID, PLVGROUP pGroup)
3398 ATLASSERT(::IsWindow(m_hWnd));
3399 return (
int)::SendMessage(m_hWnd, LVM_SETGROUPINFO, nGroupID, (LPARAM)pGroup);
3402 void GetGroupMetrics(PLVGROUPMETRICS pGroupMetrics)
const 3404 ATLASSERT(::IsWindow(m_hWnd));
3405 ::SendMessage(m_hWnd, LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics);
3408 void SetGroupMetrics(PLVGROUPMETRICS pGroupMetrics)
3410 ATLASSERT(::IsWindow(m_hWnd));
3411 ::SendMessage(m_hWnd, LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics);
3414 void GetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo)
const 3416 ATLASSERT(::IsWindow(m_hWnd));
3417 ::SendMessage(m_hWnd, LVM_GETTILEVIEWINFO, 0, (LPARAM)pTileViewInfo);
3420 BOOL SetTileViewInfo(PLVTILEVIEWINFO pTileViewInfo)
3422 ATLASSERT(::IsWindow(m_hWnd));
3423 return (BOOL)::SendMessage(m_hWnd, LVM_SETTILEVIEWINFO, 0, (LPARAM)pTileViewInfo);
3426 void GetTileInfo(PLVTILEINFO pTileInfo)
const 3428 ATLASSERT(::IsWindow(m_hWnd));
3429 ::SendMessage(m_hWnd, LVM_GETTILEINFO, 0, (LPARAM)pTileInfo);
3432 BOOL SetTileInfo(PLVTILEINFO pTileInfo)
3434 ATLASSERT(::IsWindow(m_hWnd));
3435 return (BOOL)::SendMessage(m_hWnd, LVM_SETTILEINFO, 0, (LPARAM)pTileInfo);
3438 BOOL GetInsertMark(LPLVINSERTMARK pInsertMark)
const 3440 ATLASSERT(::IsWindow(m_hWnd));
3441 return (BOOL)::SendMessage(m_hWnd, LVM_GETINSERTMARK, 0, (LPARAM)pInsertMark);
3444 BOOL SetInsertMark(LPLVINSERTMARK pInsertMark)
3446 ATLASSERT(::IsWindow(m_hWnd));
3447 return (BOOL)::SendMessage(m_hWnd, LVM_SETINSERTMARK, 0, (LPARAM)pInsertMark);
3450 int GetInsertMarkRect(LPRECT lpRect)
const 3452 ATLASSERT(::IsWindow(m_hWnd));
3453 return (
int)::SendMessage(m_hWnd, LVM_GETINSERTMARKRECT, 0, (LPARAM)lpRect);
3456 COLORREF GetInsertMarkColor()
const 3458 ATLASSERT(::IsWindow(m_hWnd));
3459 return (COLORREF)::SendMessage(m_hWnd, LVM_GETINSERTMARKCOLOR, 0, 0L);
3462 COLORREF SetInsertMarkColor(COLORREF clr)
3464 ATLASSERT(::IsWindow(m_hWnd));
3465 return (COLORREF)::SendMessage(m_hWnd, LVM_SETINSERTMARKCOLOR, 0, clr);
3468 COLORREF GetOutlineColor()
const 3470 ATLASSERT(::IsWindow(m_hWnd));
3471 return (COLORREF)::SendMessage(m_hWnd, LVM_GETOUTLINECOLOR, 0, 0L);
3474 COLORREF SetOutlineColor(COLORREF clr)
3476 ATLASSERT(::IsWindow(m_hWnd));
3477 return (COLORREF)::SendMessage(m_hWnd, LVM_SETOUTLINECOLOR, 0, clr);
3479 #endif // (_WIN32_WINNT >= 0x0501) 3481 #if (_WIN32_WINNT >= 0x0600) 3482 int GetGroupCount()
const 3484 ATLASSERT(::IsWindow(m_hWnd));
3485 return (
int)::SendMessage(m_hWnd, LVM_GETGROUPCOUNT, 0, 0L);
3488 BOOL GetGroupInfoByIndex(
int nIndex, PLVGROUP pGroup)
const 3490 ATLASSERT(::IsWindow(m_hWnd));
3491 return (BOOL)::SendMessage(m_hWnd, LVM_GETGROUPINFOBYINDEX, nIndex, (LPARAM)pGroup);
3494 BOOL GetGroupRect(
int nGroupID,
int nType, LPRECT lpRect)
const 3496 ATLASSERT(::IsWindow(m_hWnd));
3497 ATLASSERT(lpRect != NULL);
3499 lpRect->top = nType;
3500 return (BOOL)::SendMessage(m_hWnd, LVM_GETGROUPRECT, nGroupID, (LPARAM)lpRect);
3503 UINT GetGroupState(
int nGroupID, UINT uMask)
const 3505 ATLASSERT(::IsWindow(m_hWnd));
3506 return (UINT)::SendMessage(m_hWnd, LVM_GETGROUPSTATE, nGroupID, (LPARAM)uMask);
3509 int GetFocusedGroup()
const 3511 ATLASSERT(::IsWindow(m_hWnd));
3512 return (
int)::SendMessage(m_hWnd, LVM_GETFOCUSEDGROUP, 0, 0L);
3515 BOOL GetEmptyText(LPWSTR lpstrText,
int cchText)
const 3517 ATLASSERT(::IsWindow(m_hWnd));
3518 return (BOOL)::SendMessage(m_hWnd, LVM_GETEMPTYTEXT, cchText, (LPARAM)lpstrText);
3521 BOOL GetFooterRect(LPRECT lpRect)
const 3523 ATLASSERT(::IsWindow(m_hWnd));
3524 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERRECT, 0, (LPARAM)lpRect);
3527 BOOL GetFooterInfo(LPLVFOOTERINFO lpFooterInfo)
const 3529 ATLASSERT(::IsWindow(m_hWnd));
3530 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERINFO, 0, (LPARAM)lpFooterInfo);
3533 BOOL GetFooterItemRect(
int nItem, LPRECT lpRect)
const 3535 ATLASSERT(::IsWindow(m_hWnd));
3536 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERITEMRECT, nItem, (LPARAM)lpRect);
3539 BOOL GetFooterItem(
int nItem, LPLVFOOTERITEM lpFooterItem)
const 3541 ATLASSERT(::IsWindow(m_hWnd));
3542 return (BOOL)::SendMessage(m_hWnd, LVM_GETFOOTERITEM, nItem, (LPARAM)lpFooterItem);
3545 BOOL GetItemIndexRect(PLVITEMINDEX pItemIndex,
int nSubItem,
int nType, LPRECT lpRect)
const 3547 ATLASSERT(::IsWindow(m_hWnd));
3548 ATLASSERT(pItemIndex != NULL);
3549 ATLASSERT(lpRect != NULL);
3552 lpRect->top = nSubItem;
3553 lpRect->left = nType;
3555 return (BOOL)::SendMessage(m_hWnd, LVM_GETITEMINDEXRECT, (WPARAM)pItemIndex, (LPARAM)lpRect);
3558 BOOL SetItemIndexState(PLVITEMINDEX pItemIndex, UINT uState, UINT dwMask)
3560 ATLASSERT(::IsWindow(m_hWnd));
3563 lvi.stateMask = dwMask;
3564 return (BOOL)::SendMessage(m_hWnd, LVM_SETITEMINDEXSTATE, (WPARAM)pItemIndex, (LPARAM)&lvi);
3567 BOOL GetNextItemIndex(PLVITEMINDEX pItemIndex, WORD wFlags)
const 3569 ATLASSERT(::IsWindow(m_hWnd));
3570 return (BOOL)::SendMessage(m_hWnd, LVM_GETNEXTITEMINDEX, (WPARAM)pItemIndex, MAKELPARAM(wFlags, 0));
3572 #endif // (_WIN32_WINNT >= 0x0600) 3575 int InsertColumn(
int nCol,
const LVCOLUMN* pColumn)
3577 ATLASSERT(::IsWindow(m_hWnd));
3578 return (
int)::SendMessage(m_hWnd, LVM_INSERTCOLUMN, nCol, (LPARAM)pColumn);
3581 int InsertColumn(
int nCol, LPCTSTR lpszColumnHeading,
int nFormat = LVCFMT_LEFT,
3582 int nWidth = -1,
int nSubItem = -1,
int iImage = -1,
int iOrder = -1)
3584 LVCOLUMN column = { 0 };
3585 column.mask = LVCF_TEXT|LVCF_FMT;
3586 column.pszText = (LPTSTR)lpszColumnHeading;
3587 column.fmt = nFormat;
3590 column.mask |= LVCF_WIDTH;
3595 column.mask |= LVCF_SUBITEM;
3596 column.iSubItem = nSubItem;
3600 column.mask |= LVCF_IMAGE;
3601 column.iImage = iImage;
3605 column.mask |= LVCF_ORDER;
3606 column.iOrder = iOrder;
3608 return InsertColumn(nCol, &column);
3611 BOOL DeleteColumn(
int nCol)
3613 ATLASSERT(::IsWindow(m_hWnd));
3614 return (BOOL)::SendMessage(m_hWnd, LVM_DELETECOLUMN, nCol, 0L);
3617 int InsertItem(UINT nMask,
int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask,
int nImage, LPARAM lParam)
3619 ATLASSERT(::IsWindow(m_hWnd));
3620 LVITEM item = { 0 };
3624 item.pszText = (LPTSTR)lpszItem;
3625 item.state = nState;
3626 item.stateMask = nStateMask;
3627 item.iImage = nImage;
3628 item.lParam = lParam;
3629 return InsertItem(&item);
3632 int InsertItem(
const LVITEM* pItem)
3634 ATLASSERT(::IsWindow(m_hWnd));
3635 return (
int)::SendMessage(m_hWnd, LVM_INSERTITEM, 0, (LPARAM)pItem);
3638 int InsertItem(
int nItem, LPCTSTR lpszItem)
3640 ATLASSERT(::IsWindow(m_hWnd));
3641 return InsertItem(LVIF_TEXT, nItem, lpszItem, 0, 0, 0, 0);
3644 int InsertItem(
int nItem, LPCTSTR lpszItem,
int nImage)
3646 ATLASSERT(::IsWindow(m_hWnd));
3647 return InsertItem(LVIF_TEXT|LVIF_IMAGE, nItem, lpszItem, 0, 0, nImage, 0);
3650 int GetNextItem(
int nItem,
int nFlags)
const 3652 ATLASSERT(::IsWindow(m_hWnd));
3653 return (
int)::SendMessage(m_hWnd, LVM_GETNEXTITEM, nItem, MAKELPARAM(nFlags, 0));
3656 BOOL DeleteItem(
int nItem)
3658 ATLASSERT(::IsWindow(m_hWnd));
3659 return (BOOL)::SendMessage(m_hWnd, LVM_DELETEITEM, nItem, 0L);
3662 BOOL DeleteAllItems()
3664 ATLASSERT(::IsWindow(m_hWnd));
3665 return (BOOL)::SendMessage(m_hWnd, LVM_DELETEALLITEMS, 0, 0L);
3668 int FindItem(LVFINDINFO* pFindInfo,
int nStart)
const 3670 ATLASSERT(::IsWindow(m_hWnd));
3671 return (
int)::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)pFindInfo);
3674 int HitTest(LVHITTESTINFO* pHitTestInfo)
const 3676 ATLASSERT(::IsWindow(m_hWnd));
3677 return (
int)::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)pHitTestInfo);
3680 int HitTest(POINT pt, UINT* pFlags)
const 3682 ATLASSERT(::IsWindow(m_hWnd));
3683 LVHITTESTINFO hti = { 0 };
3685 int nRes = (int)::SendMessage(m_hWnd, LVM_HITTEST, 0, (LPARAM)&hti);
3687 *pFlags = hti.flags;
3691 BOOL EnsureVisible(
int nItem, BOOL bPartialOK)
3693 ATLASSERT(::IsWindow(m_hWnd));
3694 return (BOOL)::SendMessage(m_hWnd, LVM_ENSUREVISIBLE, nItem, MAKELPARAM(bPartialOK, 0));
3697 BOOL Scroll(SIZE size)
3699 ATLASSERT(::IsWindow(m_hWnd));
3700 return (BOOL)::SendMessage(m_hWnd, LVM_SCROLL, size.cx, size.cy);
3703 BOOL RedrawItems(
int nFirst,
int nLast)
3705 ATLASSERT(::IsWindow(m_hWnd));
3706 return (BOOL)::SendMessage(m_hWnd, LVM_REDRAWITEMS, nFirst, nLast);
3709 BOOL Arrange(UINT nCode)
3711 ATLASSERT(::IsWindow(m_hWnd));
3712 return (BOOL)::SendMessage(m_hWnd, LVM_ARRANGE, nCode, 0L);
3715 CEdit EditLabel(
int nItem)
3717 ATLASSERT(::IsWindow(m_hWnd));
3718 return CEdit((HWND)::SendMessage(m_hWnd, LVM_EDITLABEL, nItem, 0L));
3721 BOOL Update(
int nItem)
3723 ATLASSERT(::IsWindow(m_hWnd));
3724 return (BOOL)::SendMessage(m_hWnd, LVM_UPDATE, nItem, 0L);
3727 BOOL SortItems(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
3729 ATLASSERT(::IsWindow(m_hWnd));
3730 return (BOOL)::SendMessage(m_hWnd, LVM_SORTITEMS, (WPARAM)lParamSort, (LPARAM)pfnCompare);
3735 ATLASSERT(::IsWindow(m_hWnd));
3736 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_SETIMAGELIST, (WPARAM)nImageList, NULL));
3739 CImageList CreateDragImage(
int nItem, LPPOINT lpPoint)
3741 ATLASSERT(::IsWindow(m_hWnd));
3742 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, LVM_CREATEDRAGIMAGE, nItem, (LPARAM)lpPoint));
3745 DWORD ApproximateViewRect(
int cx = -1,
int cy = -1,
int nCount = -1)
3747 ATLASSERT(::IsWindow(m_hWnd));
3748 return (DWORD)::SendMessage(m_hWnd, LVM_APPROXIMATEVIEWRECT, nCount, MAKELPARAM(cx, cy));
3751 int SubItemHitTest(LPLVHITTESTINFO lpInfo)
const 3753 ATLASSERT(::IsWindow(m_hWnd));
3754 return (
int)::SendMessage(m_hWnd, LVM_SUBITEMHITTEST, 0, (LPARAM)lpInfo);
3757 int AddColumn(LPCTSTR strItem,
int nItem,
int nSubItem = -1,
3758 int nMask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM,
3759 int nFmt = LVCFMT_LEFT)
3761 const int cxOffset = 15;
3762 ATLASSERT(::IsWindow(m_hWnd));
3763 LVCOLUMN lvc = { 0 };
3766 lvc.pszText = (LPTSTR)strItem;
3767 lvc.cx = GetStringWidth(lvc.pszText) + cxOffset;
3768 if(nMask & LVCF_SUBITEM)
3769 lvc.iSubItem = (nSubItem != -1) ? nSubItem : nItem;
3770 return InsertColumn(nItem, &lvc);
3773 int AddItem(
int nItem,
int nSubItem, LPCTSTR strItem,
int nImageIndex = -1)
3775 ATLASSERT(::IsWindow(m_hWnd));
3776 LVITEM lvItem = { 0 };
3777 lvItem.mask = LVIF_TEXT;
3778 lvItem.iItem = nItem;
3779 lvItem.iSubItem = nSubItem;
3780 lvItem.pszText = (LPTSTR)strItem;
3781 if(nImageIndex != -1)
3783 lvItem.mask |= LVIF_IMAGE;
3784 lvItem.iImage = nImageIndex;
3787 return InsertItem(&lvItem);
3788 return SetItem(&lvItem) ? nItem : -1;
3791 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 3792 BOOL SortItemsEx(PFNLVCOMPARE pfnCompare, LPARAM lParamSort)
3794 ATLASSERT(::IsWindow(m_hWnd));
3795 return (BOOL)::SendMessage(m_hWnd, LVM_SORTITEMSEX, (WPARAM)lParamSort, (LPARAM)pfnCompare);
3797 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 3799 #if (_WIN32_WINNT >= 0x0501) 3800 int InsertGroup(
int nItem, PLVGROUP pGroup)
3802 ATLASSERT(::IsWindow(m_hWnd));
3803 return (
int)::SendMessage(m_hWnd, LVM_INSERTGROUP, nItem, (LPARAM)pGroup);
3806 int AddGroup(PLVGROUP pGroup)
3808 return InsertGroup(-1, pGroup);
3811 int RemoveGroup(
int nGroupID)
3813 ATLASSERT(::IsWindow(m_hWnd));
3814 return (
int)::SendMessage(m_hWnd, LVM_REMOVEGROUP, nGroupID, 0L);
3817 void MoveGroup(
int nGroupID,
int nItem)
3819 ATLASSERT(::IsWindow(m_hWnd));
3820 ::SendMessage(m_hWnd, LVM_MOVEGROUP, nGroupID, nItem);
3823 void MoveItemToGroup(
int nItem,
int nGroupID)
3825 ATLASSERT(::IsWindow(m_hWnd));
3826 ::SendMessage(m_hWnd, LVM_MOVEITEMTOGROUP, nItem, nGroupID);
3829 int EnableGroupView(BOOL bEnable)
3831 ATLASSERT(::IsWindow(m_hWnd));
3832 return (
int)::SendMessage(m_hWnd, LVM_ENABLEGROUPVIEW, bEnable, 0L);
3835 int SortGroups(PFNLVGROUPCOMPARE pCompareFunc, LPVOID lpVoid = NULL)
3837 ATLASSERT(::IsWindow(m_hWnd));
3838 return (
int)::SendMessage(m_hWnd, LVM_SORTGROUPS, (WPARAM)pCompareFunc, (LPARAM)lpVoid);
3841 void InsertGroupSorted(PLVINSERTGROUPSORTED pInsertGroupSorted)
3843 ATLASSERT(::IsWindow(m_hWnd));
3844 ::SendMessage(m_hWnd, LVM_INSERTGROUPSORTED, (WPARAM)pInsertGroupSorted, 0L);
3847 void RemoveAllGroups()
3849 ATLASSERT(::IsWindow(m_hWnd));
3850 ::SendMessage(m_hWnd, LVM_REMOVEALLGROUPS, 0, 0L);
3853 BOOL HasGroup(
int nGroupID)
3855 ATLASSERT(::IsWindow(m_hWnd));
3856 return (BOOL)::SendMessage(m_hWnd, LVM_HASGROUP, nGroupID, 0L);
3859 BOOL InsertMarkHitTest(LPPOINT lpPoint, LPLVINSERTMARK pInsertMark)
const 3861 ATLASSERT(::IsWindow(m_hWnd));
3862 return (BOOL)::SendMessage(m_hWnd, LVM_INSERTMARKHITTEST, (WPARAM)lpPoint, (LPARAM)pInsertMark);
3865 BOOL SetInfoTip(PLVSETINFOTIP pSetInfoTip)
3867 ATLASSERT(::IsWindow(m_hWnd));
3868 return (BOOL)::SendMessage(m_hWnd, LVM_SETINFOTIP, 0, (LPARAM)pSetInfoTip);
3871 void CancelEditLabel()
3873 ATLASSERT(::IsWindow(m_hWnd));
3874 ::SendMessage(m_hWnd, LVM_CANCELEDITLABEL, 0, 0L);
3877 UINT MapIndexToID(
int nIndex)
const 3879 ATLASSERT(::IsWindow(m_hWnd));
3880 return (UINT)::SendMessage(m_hWnd, LVM_MAPINDEXTOID, nIndex, 0L);
3883 int MapIDToIndex(UINT uID)
const 3885 ATLASSERT(::IsWindow(m_hWnd));
3886 return (
int)::SendMessage(m_hWnd, LVM_MAPIDTOINDEX, uID, 0L);
3888 #endif // (_WIN32_WINNT >= 0x0501) 3890 #if (_WIN32_WINNT >= 0x0600) 3891 int HitTestEx(LPLVHITTESTINFO lpHitTestInfo)
const 3893 ATLASSERT(::IsWindow(m_hWnd));
3894 return (
int)::SendMessage(m_hWnd, LVM_HITTEST, (WPARAM)-1, (LPARAM)lpHitTestInfo);
3897 int HitTestEx(POINT pt, UINT* pFlags)
const 3899 ATLASSERT(::IsWindow(m_hWnd));
3900 LVHITTESTINFO hti = { 0 };
3902 int nRes = (int)::SendMessage(m_hWnd, LVM_HITTEST, (WPARAM)-1, (LPARAM)&hti);
3904 *pFlags = hti.flags;
3908 int SubItemHitTestEx(LPLVHITTESTINFO lpHitTestInfo)
const 3910 ATLASSERT(::IsWindow(m_hWnd));
3911 return (
int)::SendMessage(m_hWnd, LVM_SUBITEMHITTEST, (WPARAM)-1, (LPARAM)lpHitTestInfo);
3913 #endif // (_WIN32_WINNT >= 0x0600) 3916 BOOL SelectItem(
int nIndex)
3918 ATLASSERT(::IsWindow(m_hWnd));
3921 if((GetStyle() & LVS_SINGLESEL) == 0)
3922 SetItemState(-1, 0, LVIS_SELECTED);
3924 BOOL bRet = SetItemState(nIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
3926 bRet = EnsureVisible(nIndex, FALSE);
3938 template <
class TBase>
3952 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
3953 DWORD dwStyle = 0, DWORD dwExStyle = 0,
3956 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
3960 static LPCTSTR GetWndClassName()
3965 UINT GetCount()
const 3967 ATLASSERT(::IsWindow(m_hWnd));
3968 return (UINT)::SendMessage(m_hWnd, TVM_GETCOUNT, 0, 0L);
3971 UINT GetIndent()
const 3973 ATLASSERT(::IsWindow(m_hWnd));
3974 return (UINT)::SendMessage(m_hWnd, TVM_GETINDENT, 0, 0L);
3977 void SetIndent(UINT nIndent)
3979 ATLASSERT(::IsWindow(m_hWnd));
3980 ::SendMessage(m_hWnd, TVM_SETINDENT, nIndent, 0L);
3983 CImageList GetImageList(
int nImageListType = TVSIL_NORMAL)
const 3985 ATLASSERT(::IsWindow(m_hWnd));
3986 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_GETIMAGELIST, (WPARAM)nImageListType, 0L));
3989 CImageList SetImageList(HIMAGELIST hImageList,
int nImageListType = TVSIL_NORMAL)
3991 ATLASSERT(::IsWindow(m_hWnd));
3992 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (WPARAM)nImageListType, (LPARAM)hImageList));
3995 BOOL GetItem(LPTVITEM pItem)
const 3997 ATLASSERT(::IsWindow(m_hWnd));
3998 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem);
4001 BOOL SetItem(LPTVITEM pItem)
4003 ATLASSERT(::IsWindow(m_hWnd));
4004 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem);
4007 BOOL SetItem(HTREEITEM hItem, UINT nMask, LPCTSTR lpszItem,
int nImage,
4008 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam)
4010 ATLASSERT(::IsWindow(m_hWnd));
4011 TVITEM item = { 0 };
4014 item.pszText = (LPTSTR) lpszItem;
4015 item.iImage = nImage;
4016 item.iSelectedImage = nSelectedImage;
4017 item.state = nState;
4018 item.stateMask = nStateMask;
4019 item.lParam = lParam;
4020 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)&item);
4023 BOOL GetItemText(HTREEITEM hItem, LPTSTR lpstrText,
int nLen)
const 4025 ATLASSERT(::IsWindow(m_hWnd));
4026 ATLASSERT(lpstrText != NULL);
4028 TVITEM item = { 0 };
4030 item.mask = TVIF_TEXT;
4031 item.pszText = lpstrText;
4032 item.cchTextMax = nLen;
4034 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4038 BOOL GetItemText(HTREEITEM hItem, BSTR& bstrText)
const 4041 ATLASSERT(::IsWindow(m_hWnd));
4042 ATLASSERT(bstrText == NULL);
4043 TVITEM item = { 0 };
4045 item.mask = TVIF_TEXT;
4047 LPTSTR lpstrText = NULL;
4049 for(
int nLen = 256; ; nLen *= 2)
4051 ATLTRY(lpstrText =
new TCHAR[nLen]);
4052 if(lpstrText == NULL)
4054 lpstrText[0] = NULL;
4055 item.pszText = lpstrText;
4056 item.cchTextMax = nLen;
4057 bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4058 if(!bRet || (lstrlen(item.pszText) < nLen - 1))
4060 delete [] lpstrText;
4064 if(lpstrText != NULL)
4067 bstrText = ::SysAllocString(T2OLE(lpstrText));
4068 delete [] lpstrText;
4071 return (bstrText != NULL) ? TRUE : FALSE;
4073 #endif // !_ATL_NO_COM 4075 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4076 BOOL GetItemText(HTREEITEM hItem, _CSTRING_NS::CString& strText)
const 4078 ATLASSERT(::IsWindow(m_hWnd));
4079 TVITEM item = { 0 };
4081 item.mask = TVIF_TEXT;
4085 for(
int nLen = 256; ; nLen *= 2)
4087 item.pszText = strText.GetBufferSetLength(nLen);
4088 if(item.pszText == NULL)
4093 item.cchTextMax = nLen;
4094 bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4095 if(!bRet || (lstrlen(item.pszText) < nLen - 1))
4098 strText.ReleaseBuffer();
4101 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4103 BOOL SetItemText(HTREEITEM hItem, LPCTSTR lpszItem)
4105 ATLASSERT(::IsWindow(m_hWnd));
4106 return SetItem(hItem, TVIF_TEXT, lpszItem, 0, 0, 0, 0, NULL);
4109 BOOL GetItemImage(HTREEITEM hItem,
int& nImage,
int& nSelectedImage)
const 4111 ATLASSERT(::IsWindow(m_hWnd));
4112 TVITEM item = { 0 };
4114 item.mask = TVIF_IMAGE|TVIF_SELECTEDIMAGE;
4115 BOOL bRes = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4118 nImage = item.iImage;
4119 nSelectedImage = item.iSelectedImage;
4124 BOOL SetItemImage(HTREEITEM hItem,
int nImage,
int nSelectedImage)
4126 ATLASSERT(::IsWindow(m_hWnd));
4127 return SetItem(hItem, TVIF_IMAGE|TVIF_SELECTEDIMAGE, NULL, nImage, nSelectedImage, 0, 0, NULL);
4130 UINT GetItemState(HTREEITEM hItem, UINT nStateMask)
const 4132 ATLASSERT(::IsWindow(m_hWnd));
4133 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4134 return (((UINT)::SendMessage(m_hWnd, TVM_GETITEMSTATE, (WPARAM)hItem, (LPARAM)nStateMask)) & nStateMask);
4135 #else // !((_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)) 4136 TVITEM item = { 0 };
4138 item.mask = TVIF_STATE;
4140 item.stateMask = nStateMask;
4141 ::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4142 return (item.state & nStateMask);
4143 #endif // !((_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE)) 4146 BOOL SetItemState(HTREEITEM hItem, UINT nState, UINT nStateMask)
4148 ATLASSERT(::IsWindow(m_hWnd));
4149 return SetItem(hItem, TVIF_STATE, NULL, 0, 0, nState, nStateMask, NULL);
4152 DWORD_PTR GetItemData(HTREEITEM hItem)
const 4154 ATLASSERT(::IsWindow(m_hWnd));
4155 TVITEM item = { 0 };
4157 item.mask = TVIF_PARAM;
4158 BOOL bRet = (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4159 return (DWORD_PTR)(bRet ? item.lParam : NULL);
4162 BOOL SetItemData(HTREEITEM hItem, DWORD_PTR dwData)
4164 ATLASSERT(::IsWindow(m_hWnd));
4165 return SetItem(hItem, TVIF_PARAM, NULL, 0, 0, 0, 0, (LPARAM)dwData);
4168 CEdit GetEditControl()
const 4170 ATLASSERT(::IsWindow(m_hWnd));
4171 return CEdit((HWND)::SendMessage(m_hWnd, TVM_GETEDITCONTROL, 0, 0L));
4174 UINT GetVisibleCount()
const 4176 ATLASSERT(::IsWindow(m_hWnd));
4177 return (UINT)::SendMessage(m_hWnd, TVM_GETVISIBLECOUNT, 0, 0L);
4180 BOOL GetItemRect(HTREEITEM hItem, LPRECT lpRect, BOOL bTextOnly)
const 4182 ATLASSERT(::IsWindow(m_hWnd));
4183 *(HTREEITEM*)lpRect = hItem;
4184 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMRECT, (WPARAM)bTextOnly, (LPARAM)lpRect);
4187 BOOL ItemHasChildren(HTREEITEM hItem)
const 4189 ATLASSERT(::IsWindow(m_hWnd));
4190 TVITEM item = { 0 };
4192 item.mask = TVIF_CHILDREN;
4193 ::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item);
4194 return item.cChildren;
4198 CToolTipCtrl GetToolTips()
const 4200 ATLASSERT(::IsWindow(m_hWnd));
4201 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TVM_GETTOOLTIPS, 0, 0L));
4204 CToolTipCtrl SetToolTips(HWND hWndTT)
4206 ATLASSERT(::IsWindow(m_hWnd));
4207 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TVM_SETTOOLTIPS, (WPARAM)hWndTT, 0L));
4209 #endif // !_WIN32_WCE 4211 int GetISearchString(LPTSTR lpstr)
const 4213 ATLASSERT(::IsWindow(m_hWnd));
4214 return (
int)::SendMessage(m_hWnd, TVM_GETISEARCHSTRING, 0, (LPARAM)lpstr);
4218 BOOL GetCheckState(HTREEITEM hItem)
const 4220 ATLASSERT(::IsWindow(m_hWnd));
4221 ATLASSERT((GetStyle() & TVS_CHECKBOXES) != 0);
4222 UINT uRet = GetItemState(hItem, TVIS_STATEIMAGEMASK);
4223 return (uRet >> 12) - 1;
4226 BOOL SetCheckState(HTREEITEM hItem, BOOL bCheck)
4228 int nCheck = bCheck ? 2 : 1;
4229 return SetItemState(hItem, INDEXTOSTATEIMAGEMASK(nCheck), TVIS_STATEIMAGEMASK);
4232 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4233 COLORREF GetBkColor()
const 4235 ATLASSERT(::IsWindow(m_hWnd));
4236 return (COLORREF)::SendMessage(m_hWnd, TVM_GETBKCOLOR, 0, 0L);
4239 COLORREF SetBkColor(COLORREF clr)
4241 ATLASSERT(::IsWindow(m_hWnd));
4242 return (COLORREF)::SendMessage(m_hWnd, TVM_SETBKCOLOR, 0, (LPARAM)clr);
4245 COLORREF GetInsertMarkColor()
const 4247 ATLASSERT(::IsWindow(m_hWnd));
4248 return (COLORREF)::SendMessage(m_hWnd, TVM_GETINSERTMARKCOLOR, 0, 0L);
4251 COLORREF SetInsertMarkColor(COLORREF clr)
4253 ATLASSERT(::IsWindow(m_hWnd));
4254 return (COLORREF)::SendMessage(m_hWnd, TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr);
4257 int GetItemHeight()
const 4259 ATLASSERT(::IsWindow(m_hWnd));
4260 return (
int)::SendMessage(m_hWnd, TVM_GETITEMHEIGHT, 0, 0L);
4263 int SetItemHeight(
int cyHeight)
4265 ATLASSERT(::IsWindow(m_hWnd));
4266 return (
int)::SendMessage(m_hWnd, TVM_SETITEMHEIGHT, cyHeight, 0L);
4269 int GetScrollTime()
const 4271 ATLASSERT(::IsWindow(m_hWnd));
4272 return (
int)::SendMessage(m_hWnd, TVM_GETSCROLLTIME, 0, 0L);
4275 int SetScrollTime(
int nScrollTime)
4277 ATLASSERT(::IsWindow(m_hWnd));
4278 return (
int)::SendMessage(m_hWnd, TVM_SETSCROLLTIME, nScrollTime, 0L);
4281 COLORREF GetTextColor()
const 4283 ATLASSERT(::IsWindow(m_hWnd));
4284 return (COLORREF)::SendMessage(m_hWnd, TVM_GETTEXTCOLOR, 0, 0L);
4287 COLORREF SetTextColor(COLORREF clr)
4289 ATLASSERT(::IsWindow(m_hWnd));
4290 return (COLORREF)::SendMessage(m_hWnd, TVM_SETTEXTCOLOR, 0, (LPARAM)clr);
4293 BOOL GetUnicodeFormat()
const 4295 ATLASSERT(::IsWindow(m_hWnd));
4296 return (BOOL)::SendMessage(m_hWnd, TVM_GETUNICODEFORMAT, 0, 0L);
4299 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
4301 ATLASSERT(::IsWindow(m_hWnd));
4302 return (BOOL)::SendMessage(m_hWnd, TVM_SETUNICODEFORMAT, bUnicode, 0L);
4304 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4306 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4307 COLORREF GetLineColor()
const 4309 ATLASSERT(::IsWindow(m_hWnd));
4310 return (COLORREF)::SendMessage(m_hWnd, TVM_GETLINECOLOR, 0, 0L);
4313 COLORREF SetLineColor(COLORREF clrNew )
4315 ATLASSERT(::IsWindow(m_hWnd));
4316 return (COLORREF)::SendMessage(m_hWnd, TVM_SETLINECOLOR, 0, (LPARAM)clrNew);
4318 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 4320 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4321 BOOL GetItem(LPTVITEMEX pItem)
const 4323 ATLASSERT(::IsWindow(m_hWnd));
4324 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)pItem);
4327 BOOL SetItem(LPTVITEMEX pItem)
4329 ATLASSERT(::IsWindow(m_hWnd));
4330 return (BOOL)::SendMessage(m_hWnd, TVM_SETITEM, 0, (LPARAM)pItem);
4332 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4334 DWORD GetExtendedStyle()
const 4336 #ifndef TVM_GETEXTENDEDSTYLE 4337 const UINT TVM_GETEXTENDEDSTYLE = (TV_FIRST + 45);
4339 ATLASSERT(::IsWindow(m_hWnd));
4340 return (DWORD)::SendMessage(m_hWnd, TVM_GETEXTENDEDSTYLE, 0, 0L);
4343 DWORD SetExtendedStyle(DWORD dwStyle, DWORD dwMask)
4345 #ifndef TVM_SETEXTENDEDSTYLE 4346 const UINT TVM_SETEXTENDEDSTYLE = (TV_FIRST + 44);
4348 ATLASSERT(::IsWindow(m_hWnd));
4349 return (DWORD)::SendMessage(m_hWnd, TVM_SETEXTENDEDSTYLE, dwMask, dwStyle);
4352 #if (_WIN32_WINNT >= 0x0600) 4353 BOOL SetAutoScrollInfo(UINT uPixPerSec, UINT uUpdateTime)
4355 ATLASSERT(::IsWindow(m_hWnd));
4356 return (BOOL)::SendMessage(m_hWnd, TVM_SETAUTOSCROLLINFO, (WPARAM)uPixPerSec, (LPARAM)uUpdateTime);
4359 DWORD GetSelectedCount()
const 4361 ATLASSERT(::IsWindow(m_hWnd));
4362 return (DWORD)::SendMessage(m_hWnd, TVM_GETSELECTEDCOUNT, 0, 0L);
4365 BOOL GetItemPartRect(HTREEITEM hItem, TVITEMPART partID, LPRECT lpRect)
const 4367 ATLASSERT(::IsWindow(m_hWnd));
4368 TVGETITEMPARTRECTINFO gipri = { hItem, lpRect, partID };
4369 return (BOOL)::SendMessage(m_hWnd, TVM_GETITEMPARTRECT, 0, (LPARAM)&gipri);
4371 #endif // (_WIN32_WINNT >= 0x0600) 4374 HTREEITEM InsertItem(LPTVINSERTSTRUCT lpInsertStruct)
4376 ATLASSERT(::IsWindow(m_hWnd));
4377 return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct);
4380 HTREEITEM InsertItem(LPCTSTR lpszItem,
int nImage,
4381 int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
4383 ATLASSERT(::IsWindow(m_hWnd));
4384 return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter);
4387 HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
4389 ATLASSERT(::IsWindow(m_hWnd));
4390 return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter);
4393 HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
4394 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
4395 HTREEITEM hParent, HTREEITEM hInsertAfter)
4397 ATLASSERT(::IsWindow(m_hWnd));
4398 TVINSERTSTRUCT tvis = { 0 };
4399 tvis.hParent = hParent;
4400 tvis.hInsertAfter = hInsertAfter;
4401 tvis.item.mask = nMask;
4402 tvis.item.pszText = (LPTSTR) lpszItem;
4403 tvis.item.iImage = nImage;
4404 tvis.item.iSelectedImage = nSelectedImage;
4405 tvis.item.state = nState;
4406 tvis.item.stateMask = nStateMask;
4407 tvis.item.lParam = lParam;
4408 return (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);
4411 BOOL DeleteItem(HTREEITEM hItem)
4413 ATLASSERT(::IsWindow(m_hWnd));
4414 return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)hItem);
4417 BOOL DeleteAllItems()
4419 ATLASSERT(::IsWindow(m_hWnd));
4420 return (BOOL)::SendMessage(m_hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT);
4423 BOOL Expand(HTREEITEM hItem, UINT nCode = TVE_EXPAND)
4425 ATLASSERT(::IsWindow(m_hWnd));
4426 return (BOOL)::SendMessage(m_hWnd, TVM_EXPAND, nCode, (LPARAM)hItem);
4429 HTREEITEM GetNextItem(HTREEITEM hItem, UINT nCode)
const 4431 ATLASSERT(::IsWindow(m_hWnd));
4432 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem);
4435 HTREEITEM GetChildItem(HTREEITEM hItem)
const 4437 ATLASSERT(::IsWindow(m_hWnd));
4438 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
4441 HTREEITEM GetNextSiblingItem(HTREEITEM hItem)
const 4443 ATLASSERT(::IsWindow(m_hWnd));
4444 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
4447 HTREEITEM GetPrevSiblingItem(HTREEITEM hItem)
const 4449 ATLASSERT(::IsWindow(m_hWnd));
4450 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem);
4453 HTREEITEM GetParentItem(HTREEITEM hItem)
const 4455 ATLASSERT(::IsWindow(m_hWnd));
4456 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
4459 HTREEITEM GetFirstVisibleItem()
const 4461 ATLASSERT(::IsWindow(m_hWnd));
4462 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0L);
4465 HTREEITEM GetNextVisibleItem(HTREEITEM hItem)
const 4467 ATLASSERT(::IsWindow(m_hWnd));
4468 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem);
4471 HTREEITEM GetPrevVisibleItem(HTREEITEM hItem)
const 4473 ATLASSERT(::IsWindow(m_hWnd));
4474 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem);
4477 HTREEITEM GetSelectedItem()
const 4479 ATLASSERT(::IsWindow(m_hWnd));
4480 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0L);
4483 HTREEITEM GetDropHilightItem()
const 4485 ATLASSERT(::IsWindow(m_hWnd));
4486 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0L);
4489 HTREEITEM GetRootItem()
const 4491 ATLASSERT(::IsWindow(m_hWnd));
4492 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0L);
4495 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4496 HTREEITEM GetLastVisibleItem()
const 4498 ATLASSERT(::IsWindow(m_hWnd));
4499 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0L);
4501 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4503 #if (_WIN32_IE >= 0x0600) 4504 HTREEITEM GetNextSelectedItem()
const 4506 ATLASSERT(::IsWindow(m_hWnd));
4507 return (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTSELECTED, 0L);
4509 #endif // (_WIN32_IE >= 0x0600) 4511 BOOL Select(HTREEITEM hItem, UINT nCode)
4513 ATLASSERT(::IsWindow(m_hWnd));
4514 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, nCode, (LPARAM)hItem);
4517 BOOL SelectItem(HTREEITEM hItem)
4519 ATLASSERT(::IsWindow(m_hWnd));
4520 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem);
4523 BOOL SelectDropTarget(HTREEITEM hItem)
4525 ATLASSERT(::IsWindow(m_hWnd));
4526 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_DROPHILITE, (LPARAM)hItem);
4529 BOOL SelectSetFirstVisible(HTREEITEM hItem)
4531 ATLASSERT(::IsWindow(m_hWnd));
4532 return (BOOL)::SendMessage(m_hWnd, TVM_SELECTITEM, TVGN_FIRSTVISIBLE, (LPARAM)hItem);
4535 CEdit EditLabel(HTREEITEM hItem)
4537 ATLASSERT(::IsWindow(m_hWnd));
4538 return CEdit((HWND)::SendMessage(m_hWnd, TVM_EDITLABEL, 0, (LPARAM)hItem));
4541 BOOL EndEditLabelNow(BOOL bCancel)
4543 ATLASSERT(::IsWindow(m_hWnd));
4544 return (BOOL)::SendMessage(m_hWnd, TVM_ENDEDITLABELNOW, bCancel, 0L);
4547 HTREEITEM HitTest(TVHITTESTINFO* pHitTestInfo)
const 4549 ATLASSERT(::IsWindow(m_hWnd));
4550 return (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo);
4553 HTREEITEM HitTest(POINT pt, UINT* pFlags)
const 4555 ATLASSERT(::IsWindow(m_hWnd));
4556 TVHITTESTINFO hti = { 0 };
4558 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)&hti);
4560 *pFlags = hti.flags;
4564 BOOL SortChildren(HTREEITEM hItem, BOOL bRecurse = FALSE)
4566 ATLASSERT(::IsWindow(m_hWnd));
4567 return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDREN, (WPARAM)bRecurse, (LPARAM)hItem);
4570 BOOL EnsureVisible(HTREEITEM hItem)
4572 ATLASSERT(::IsWindow(m_hWnd));
4573 return (BOOL)::SendMessage(m_hWnd, TVM_ENSUREVISIBLE, 0, (LPARAM)hItem);
4576 BOOL SortChildrenCB(LPTVSORTCB pSort, BOOL bRecurse = FALSE)
4578 ATLASSERT(::IsWindow(m_hWnd));
4579 return (BOOL)::SendMessage(m_hWnd, TVM_SORTCHILDRENCB, (WPARAM)bRecurse, (LPARAM)pSort);
4584 ATLASSERT(::IsWindow(m_hWnd));
4585 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_SETIMAGELIST, (WPARAM)nImageList, NULL));
4590 ATLASSERT(::IsWindow(m_hWnd));
4591 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TVM_CREATEDRAGIMAGE, 0, (LPARAM)hItem));
4594 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4595 BOOL SetInsertMark(HTREEITEM hTreeItem, BOOL bAfter)
4597 ATLASSERT(::IsWindow(m_hWnd));
4598 return (BOOL)::SendMessage(m_hWnd, TVM_SETINSERTMARK, bAfter, (LPARAM)hTreeItem);
4601 BOOL RemoveInsertMark()
4603 ATLASSERT(::IsWindow(m_hWnd));
4604 return (BOOL)::SendMessage(m_hWnd, TVM_SETINSERTMARK, 0, 0L);
4606 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4608 #if (_WIN32_WINNT >= 0x0501) 4609 HTREEITEM MapAccIDToHTREEITEM(UINT uID)
const 4611 ATLASSERT(::IsWindow(m_hWnd));
4612 return (HTREEITEM)::SendMessage(m_hWnd, TVM_MAPACCIDTOHTREEITEM, uID, 0L);
4615 UINT MapHTREEITEMToAccID(HTREEITEM hTreeItem)
const 4617 ATLASSERT(::IsWindow(m_hWnd));
4618 return (UINT)::SendMessage(m_hWnd, TVM_MAPHTREEITEMTOACCID, (WPARAM)hTreeItem, 0L);
4620 #endif // (_WIN32_WINNT >= 0x0501) 4622 #if (_WIN32_WINNT >= 0x0600) 4623 void ShowInfoTip(HTREEITEM hItem)
4625 ATLASSERT(::IsWindow(m_hWnd));
4626 ::SendMessage(m_hWnd, TVM_SHOWINFOTIP, 0, (LPARAM)hItem);
4628 #endif // (_WIN32_WINNT >= 0x0600) 4641 template <
class TBase>
4645 HTREEITEM m_hTreeItem;
4657 operator HTREEITEM() {
return m_hTreeItem; }
4661 m_hTreeItem = itemSrc.m_hTreeItem;
4662 m_pTreeView = itemSrc.m_pTreeView;
4669 BOOL operator !()
const {
return m_hTreeItem == NULL; }
4671 BOOL IsNull()
const {
return m_hTreeItem == NULL; }
4673 BOOL GetRect(LPRECT lpRect, BOOL bTextOnly)
const;
4674 BOOL GetText(LPTSTR lpstrText,
int nLen)
const;
4676 BOOL GetText(BSTR& bstrText)
const;
4677 #endif // !_ATL_NO_COM 4678 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4679 BOOL GetText(_CSTRING_NS::CString& strText)
const;
4680 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 4681 BOOL SetText(LPCTSTR lpszItem);
4682 BOOL GetImage(
int& nImage,
int& nSelectedImage)
const;
4683 BOOL SetImage(
int nImage,
int nSelectedImage);
4684 UINT GetState(UINT nStateMask)
const;
4685 BOOL SetState(UINT nState, UINT nStateMask);
4686 DWORD_PTR GetData()
const;
4687 BOOL SetData(DWORD_PTR dwData);
4688 BOOL SetItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam);
4691 CTreeItemT<TBase> InsertAfter(LPCTSTR lpstrItem, HTREEITEM hItemAfter,
int nImageIndex)
4693 return _Insert(lpstrItem, nImageIndex, hItemAfter);
4698 return _Insert(lpstrItem, nImageIndex, TVI_FIRST);
4703 return _Insert(lpstrItem, nImageIndex, TVI_LAST);
4717 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4719 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4720 #if (_WIN32_IE >= 0x0600) 4722 #endif // (_WIN32_IE >= 0x0600) 4723 BOOL HasChildren()
const;
4725 BOOL Expand(UINT nCode = TVE_EXPAND);
4726 BOOL Select(UINT nCode);
4728 BOOL SelectDropTarget();
4729 BOOL SelectSetFirstVisible();
4731 HIMAGELIST CreateDragImage();
4732 BOOL SortChildren(BOOL bRecurse = FALSE);
4733 BOOL EnsureVisible();
4734 CTreeItemT<TBase> _Insert(LPCTSTR lpstrItem,
int nImageIndex, HTREEITEM hItemAfter);
4735 int GetImageIndex()
const;
4736 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4737 BOOL SetInsertMark(BOOL bAfter);
4738 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 4739 #if (_WIN32_WINNT >= 0x0501) 4740 UINT MapHTREEITEMToAccID()
const;
4741 #endif // (_WIN32_WINNT >= 0x0501) 4742 #if (_WIN32_WINNT >= 0x0600) 4744 BOOL GetPartRect(TVITEMPART partID, LPRECT lpRect)
const;
4745 #endif // (_WIN32_WINNT >= 0x0600) 4751 template <
class TBase>
4768 ATLASSERT(::IsWindow(m_hWnd));
4769 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)lpInsertStruct);
4774 int nSelectedImage, HTREEITEM hParent, HTREEITEM hInsertAfter)
4776 ATLASSERT(::IsWindow(m_hWnd));
4777 return InsertItem(TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE, lpszItem, nImage, nSelectedImage, 0, 0, 0, hParent, hInsertAfter);
4780 CTreeItemT<TBase> InsertItem(LPCTSTR lpszItem, HTREEITEM hParent, HTREEITEM hInsertAfter)
4782 ATLASSERT(::IsWindow(m_hWnd));
4783 return InsertItem(TVIF_TEXT, lpszItem, 0, 0, 0, 0, 0, hParent, hInsertAfter);
4788 ATLASSERT(::IsWindow(m_hWnd));
4789 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, nCode, (LPARAM)hItem);
4795 ATLASSERT(::IsWindow(m_hWnd));
4796 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CHILD, (LPARAM)hItem);
4802 ATLASSERT(::IsWindow(m_hWnd));
4803 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
4809 ATLASSERT(::IsWindow(m_hWnd));
4810 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUS, (LPARAM)hItem);
4816 ATLASSERT(::IsWindow(m_hWnd));
4817 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PARENT, (LPARAM)hItem);
4823 ATLASSERT(::IsWindow(m_hWnd));
4824 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_FIRSTVISIBLE, 0L);
4830 ATLASSERT(::IsWindow(m_hWnd));
4831 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTVISIBLE, (LPARAM)hItem);
4837 ATLASSERT(::IsWindow(m_hWnd));
4838 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_PREVIOUSVISIBLE, (LPARAM)hItem);
4844 ATLASSERT(::IsWindow(m_hWnd));
4845 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_CARET, 0L);
4851 ATLASSERT(::IsWindow(m_hWnd));
4852 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_DROPHILITE, 0L);
4858 ATLASSERT(::IsWindow(m_hWnd));
4859 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0L);
4863 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4866 ATLASSERT(::IsWindow(m_hWnd));
4867 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_LASTVISIBLE, 0L);
4870 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 4872 #if (_WIN32_IE >= 0x0600) 4875 ATLASSERT(::IsWindow(m_hWnd));
4876 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_GETNEXTITEM, TVGN_NEXTSELECTED, 0L);
4879 #endif // (_WIN32_IE >= 0x0600) 4883 ATLASSERT(::IsWindow(m_hWnd));
4884 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)pHitTestInfo);
4889 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam,
4890 HTREEITEM hParent, HTREEITEM hInsertAfter)
4892 ATLASSERT(::IsWindow(m_hWnd));
4893 TVINSERTSTRUCT tvis = { 0 };
4894 tvis.hParent = hParent;
4895 tvis.hInsertAfter = hInsertAfter;
4896 tvis.item.mask = nMask;
4897 tvis.item.pszText = (LPTSTR) lpszItem;
4898 tvis.item.iImage = nImage;
4899 tvis.item.iSelectedImage = nSelectedImage;
4900 tvis.item.state = nState;
4901 tvis.item.stateMask = nStateMask;
4902 tvis.item.lParam = lParam;
4903 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_INSERTITEM, 0, (LPARAM)&tvis);
4909 ATLASSERT(::IsWindow(m_hWnd));
4910 TVHITTESTINFO hti = { 0 };
4912 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_HITTEST, 0, (LPARAM)&hti);
4914 *pFlags = hti.flags;
4918 #if (_WIN32_WINNT >= 0x0501) 4921 ATLASSERT(::IsWindow(m_hWnd));
4922 HTREEITEM hTreeItem = (HTREEITEM)::SendMessage(m_hWnd, TVM_MAPACCIDTOHTREEITEM, uID, 0L);
4925 #endif // (_WIN32_WINNT >= 0x0501) 4932 template <
class TBase>
4935 ATLASSERT(m_pTreeView != NULL);
4936 return m_pTreeView->GetItemRect(m_hTreeItem,lpRect,bTextOnly);
4939 template <
class TBase>
4942 ATLASSERT(m_pTreeView != NULL);
4943 return m_pTreeView->GetNextItem(m_hTreeItem,nCode);
4946 template <
class TBase>
4949 ATLASSERT(m_pTreeView != NULL);
4950 return m_pTreeView->GetChildItem(m_hTreeItem);
4953 template <
class TBase>
4956 ATLASSERT(m_pTreeView != NULL);
4957 return m_pTreeView->GetNextSiblingItem(m_hTreeItem);
4960 template <
class TBase>
4963 ATLASSERT(m_pTreeView != NULL);
4964 return m_pTreeView->GetPrevSiblingItem(m_hTreeItem);
4967 template <
class TBase>
4970 ATLASSERT(m_pTreeView != NULL);
4971 return m_pTreeView->GetParentItem(m_hTreeItem);
4974 template <
class TBase>
4977 ATLASSERT(m_pTreeView != NULL);
4978 return m_pTreeView->GetFirstVisibleItem();
4981 template <
class TBase>
4984 ATLASSERT(m_pTreeView != NULL);
4985 return m_pTreeView->GetNextVisibleItem(m_hTreeItem);
4988 template <
class TBase>
4991 ATLASSERT(m_pTreeView != NULL);
4992 return m_pTreeView->GetPrevVisibleItem(m_hTreeItem);
4995 template <
class TBase>
4998 ATLASSERT(m_pTreeView != NULL);
4999 return m_pTreeView->GetSelectedItem();
5002 template <
class TBase>
5005 ATLASSERT(m_pTreeView != NULL);
5006 return m_pTreeView->GetDropHilightItem();
5009 template <
class TBase>
5012 ATLASSERT(m_pTreeView != NULL);
5013 return m_pTreeView->GetRootItem();
5016 #if !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 5017 template <
class TBase>
5020 ATLASSERT(m_pTreeView != NULL);
5021 return m_pTreeView->GetLastVisibleItem();
5023 #endif // !defined(_WIN32_WCE) && (_WIN32_IE >= 0x0400) 5025 #if (_WIN32_IE >= 0x0600) 5026 template <
class TBase>
5029 ATLASSERT(m_pTreeView != NULL);
5030 return m_pTreeView->GetNextSelectedItem();
5032 #endif // (_WIN32_IE >= 0x0600) 5034 template <
class TBase>
5037 ATLASSERT(m_pTreeView != NULL);
5038 return m_pTreeView->GetItemText(m_hTreeItem, lpstrText, nLen);
5043 template <
class TBase>
5046 ATLASSERT(m_pTreeView != NULL);
5047 return m_pTreeView->GetItemText(m_hTreeItem, bstrText);
5049 #endif // _OLEAUTO_H_ 5050 #endif // !_ATL_NO_COM 5052 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5053 template <
class TBase>
5056 ATLASSERT(m_pTreeView != NULL);
5057 return m_pTreeView->GetItemText(m_hTreeItem, strText);
5059 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5061 template <
class TBase>
5064 ATLASSERT(m_pTreeView != NULL);
5065 return m_pTreeView->GetItemImage(m_hTreeItem,nImage,nSelectedImage);
5068 template <
class TBase>
5071 ATLASSERT(m_pTreeView != NULL);
5072 return m_pTreeView->GetItemState(m_hTreeItem,nStateMask);
5075 template <
class TBase>
5078 ATLASSERT(m_pTreeView != NULL);
5079 return m_pTreeView->GetItemData(m_hTreeItem);
5082 template <
class TBase>
5084 int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam)
5086 ATLASSERT(m_pTreeView != NULL);
5087 return m_pTreeView->SetItem(m_hTreeItem, nMask, lpszItem, nImage, nSelectedImage, nState, nStateMask, lParam);
5090 template <
class TBase>
5093 ATLASSERT(m_pTreeView != NULL);
5094 return m_pTreeView->SetItemText(m_hTreeItem,lpszItem);
5097 template <
class TBase>
5100 ATLASSERT(m_pTreeView != NULL);
5101 return m_pTreeView->SetItemImage(m_hTreeItem,nImage,nSelectedImage);
5104 template <
class TBase>
5107 ATLASSERT(m_pTreeView != NULL);
5108 return m_pTreeView->SetItemState(m_hTreeItem,nState,nStateMask);
5111 template <
class TBase>
5114 ATLASSERT(m_pTreeView != NULL);
5115 return m_pTreeView->SetItemData(m_hTreeItem,dwData);
5118 template <
class TBase>
5121 ATLASSERT(m_pTreeView != NULL);
5122 return m_pTreeView->ItemHasChildren(m_hTreeItem);
5125 template <
class TBase>
5128 ATLASSERT(m_pTreeView != NULL);
5129 return m_pTreeView->DeleteItem(m_hTreeItem);
5132 template <
class TBase>
5135 ATLASSERT(m_pTreeView != NULL);
5136 return m_pTreeView->Expand(m_hTreeItem,nCode);
5139 template <
class TBase>
5142 ATLASSERT(m_pTreeView != NULL);
5143 return m_pTreeView->Select(m_hTreeItem,nCode);
5146 template <
class TBase>
5149 ATLASSERT(m_pTreeView != NULL);
5150 return m_pTreeView->SelectItem(m_hTreeItem);
5153 template <
class TBase>
5156 ATLASSERT(m_pTreeView != NULL);
5157 return m_pTreeView->SelectDropTarget(m_hTreeItem);
5160 template <
class TBase>
5163 ATLASSERT(m_pTreeView != NULL);
5164 return m_pTreeView->SelectSetFirstVisible(m_hTreeItem);
5167 template <
class TBase>
5170 ATLASSERT(m_pTreeView != NULL);
5171 return m_pTreeView->EditLabel(m_hTreeItem);
5174 template <
class TBase>
5177 ATLASSERT(m_pTreeView != NULL);
5178 return m_pTreeView->CreateDragImage(m_hTreeItem);
5181 template <
class TBase>
5184 ATLASSERT(m_pTreeView != NULL);
5185 return m_pTreeView->SortChildren(m_hTreeItem, bRecurse);
5188 template <
class TBase>
5191 ATLASSERT(m_pTreeView != NULL);
5192 return m_pTreeView->EnsureVisible(m_hTreeItem);
5195 template <
class TBase>
5198 ATLASSERT(m_pTreeView != NULL);
5199 TVINSERTSTRUCT ins = { 0 };
5200 ins.hParent = m_hTreeItem;
5201 ins.hInsertAfter = hItemAfter;
5202 ins.item.mask = TVIF_TEXT;
5203 ins.item.pszText = (LPTSTR)lpstrItem;
5204 if(nImageIndex != -1)
5206 ins.item.mask |= TVIF_IMAGE | TVIF_SELECTEDIMAGE;
5207 ins.item.iImage = nImageIndex;
5208 ins.item.iSelectedImage = nImageIndex;
5213 template <
class TBase>
5216 ATLASSERT(m_pTreeView != NULL);
5217 TVITEM item = { 0 };
5218 item.mask = TVIF_HANDLE | TVIF_IMAGE;
5219 item.hItem = m_hTreeItem;
5220 m_pTreeView->GetItem(&item);
5224 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 5225 template <
class TBase>
5228 ATLASSERT(m_pTreeView != NULL);
5229 return m_pTreeView->SetInsertMark(m_hTreeItem, bAfter);
5231 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 5233 #if (_WIN32_WINNT >= 0x0501) 5234 template <
class TBase>
5237 ATLASSERT(m_pTreeView != NULL);
5238 return m_pTreeView->MapHTREEITEMToAccID(m_hTreeItem);
5240 #endif // (_WIN32_WINNT >= 0x0501) 5242 #if (_WIN32_WINNT >= 0x0600) 5243 template <
class TBase>
5246 ATLASSERT(m_pTreeView != NULL);
5247 m_pTreeView->ShowInfoTip(m_hTreeItem);
5250 template <
class TBase>
5253 ATLASSERT(m_pTreeView != NULL);
5254 return m_pTreeView->GetItemPartRect(m_hTreeItem, partID, lpRect);
5256 #endif // (_WIN32_WINNT >= 0x0600) 5262 template <
class TBase>
5276 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
5277 DWORD dwStyle = 0, DWORD dwExStyle = 0,
5280 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
5284 static LPCTSTR GetWndClassName()
5286 return TOOLBARCLASSNAME;
5289 BOOL IsButtonEnabled(
int nID)
const 5291 ATLASSERT(::IsWindow(m_hWnd));
5292 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONENABLED, nID, 0L);
5295 BOOL IsButtonChecked(
int nID)
const 5297 ATLASSERT(::IsWindow(m_hWnd));
5298 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONCHECKED, nID, 0L);
5301 BOOL IsButtonPressed(
int nID)
const 5303 ATLASSERT(::IsWindow(m_hWnd));
5304 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONPRESSED, nID, 0L);
5307 BOOL IsButtonHidden(
int nID)
const 5309 ATLASSERT(::IsWindow(m_hWnd));
5310 return(BOOL) ::SendMessage(m_hWnd, TB_ISBUTTONHIDDEN, nID, 0L);
5313 BOOL IsButtonIndeterminate(
int nID)
const 5315 ATLASSERT(::IsWindow(m_hWnd));
5316 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONINDETERMINATE, nID, 0L);
5319 int GetState(
int nID)
const 5321 ATLASSERT(::IsWindow(m_hWnd));
5322 return (
int)::SendMessage(m_hWnd, TB_GETSTATE, nID, 0L);
5325 BOOL SetState(
int nID, UINT nState)
5327 ATLASSERT(::IsWindow(m_hWnd));
5328 return (BOOL)::SendMessage(m_hWnd, TB_SETSTATE, nID, MAKELPARAM(nState, 0));
5331 BOOL GetButton(
int nIndex, LPTBBUTTON lpButton)
const 5333 ATLASSERT(::IsWindow(m_hWnd));
5334 return (BOOL)::SendMessage(m_hWnd, TB_GETBUTTON, nIndex, (LPARAM)lpButton);
5337 int GetButtonCount()
const 5339 ATLASSERT(::IsWindow(m_hWnd));
5340 return (
int)::SendMessage(m_hWnd, TB_BUTTONCOUNT, 0, 0L);
5343 BOOL GetItemRect(
int nIndex, LPRECT lpRect)
const 5345 ATLASSERT(::IsWindow(m_hWnd));
5346 return (BOOL)::SendMessage(m_hWnd, TB_GETITEMRECT, nIndex, (LPARAM)lpRect);
5349 void SetButtonStructSize(
int nSize =
sizeof(TBBUTTON))
5351 ATLASSERT(::IsWindow(m_hWnd));
5352 ::SendMessage(m_hWnd, TB_BUTTONSTRUCTSIZE, nSize, 0L);
5355 BOOL SetButtonSize(SIZE size)
5357 ATLASSERT(::IsWindow(m_hWnd));
5358 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(size.cx, size.cy));
5361 BOOL SetButtonSize(
int cx,
int cy)
5363 ATLASSERT(::IsWindow(m_hWnd));
5364 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(cx, cy));
5367 BOOL SetBitmapSize(SIZE size)
5369 ATLASSERT(::IsWindow(m_hWnd));
5370 return (BOOL)::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(size.cx, size.cy));
5373 BOOL SetBitmapSize(
int cx,
int cy)
5375 ATLASSERT(::IsWindow(m_hWnd));
5376 return (BOOL)::SendMessage(m_hWnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(cx, cy));
5380 CToolTipCtrl GetToolTips()
const 5382 ATLASSERT(::IsWindow(m_hWnd));
5383 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TB_GETTOOLTIPS, 0, 0L));
5386 void SetToolTips(HWND hWndToolTip)
5388 ATLASSERT(::IsWindow(m_hWnd));
5389 ::SendMessage(m_hWnd, TB_SETTOOLTIPS, (WPARAM)hWndToolTip, 0L);
5391 #endif // !_WIN32_WCE 5393 void SetNotifyWnd(HWND hWnd)
5395 ATLASSERT(::IsWindow(m_hWnd));
5396 ::SendMessage(m_hWnd, TB_SETPARENT, (WPARAM)hWnd, 0L);
5401 ATLASSERT(::IsWindow(m_hWnd));
5402 return (
int)::SendMessage(m_hWnd, TB_GETROWS, 0, 0L);
5405 void SetRows(
int nRows, BOOL bLarger, LPRECT lpRect)
5407 ATLASSERT(::IsWindow(m_hWnd));
5408 ::SendMessage(m_hWnd, TB_SETROWS, MAKELPARAM(nRows, bLarger), (LPARAM)lpRect);
5411 BOOL SetCmdID(
int nIndex, UINT nID)
5413 ATLASSERT(::IsWindow(m_hWnd));
5414 return (BOOL)::SendMessage(m_hWnd, TB_SETCMDID, nIndex, nID);
5417 DWORD GetBitmapFlags()
const 5419 ATLASSERT(::IsWindow(m_hWnd));
5420 return (DWORD)::SendMessage(m_hWnd, TB_GETBITMAPFLAGS, 0, 0L);
5423 int GetBitmap(
int nID)
const 5425 ATLASSERT(::IsWindow(m_hWnd));
5426 return (
int)::SendMessage(m_hWnd, TB_GETBITMAP, nID, 0L);
5429 int GetButtonText(
int nID, LPTSTR lpstrText)
const 5431 ATLASSERT(::IsWindow(m_hWnd));
5432 return (
int)::SendMessage(m_hWnd, TB_GETBUTTONTEXT, nID, (LPARAM)lpstrText);
5436 CImageList GetImageList(
int nIndex = 0)
const 5438 ATLASSERT(::IsWindow(m_hWnd));
5439 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETIMAGELIST, nIndex, 0L));
5443 CImageList SetImageList(HIMAGELIST hImageList,
int nIndex = 0)
5445 ATLASSERT(::IsWindow(m_hWnd));
5446 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETIMAGELIST, nIndex, (LPARAM)hImageList));
5450 CImageList GetDisabledImageList(
int nIndex = 0)
const 5452 ATLASSERT(::IsWindow(m_hWnd));
5453 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETDISABLEDIMAGELIST, nIndex, 0L));
5457 CImageList SetDisabledImageList(HIMAGELIST hImageList,
int nIndex = 0)
5459 ATLASSERT(::IsWindow(m_hWnd));
5460 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETDISABLEDIMAGELIST, nIndex, (LPARAM)hImageList));
5465 CImageList GetHotImageList(
int nIndex = 0)
const 5467 ATLASSERT(::IsWindow(m_hWnd));
5468 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETHOTIMAGELIST, nIndex, 0L));
5472 CImageList SetHotImageList(HIMAGELIST hImageList,
int nIndex = 0)
5474 ATLASSERT(::IsWindow(m_hWnd));
5475 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETHOTIMAGELIST, nIndex, (LPARAM)hImageList));
5477 #endif // !_WIN32_WCE 5479 DWORD GetStyle()
const 5481 ATLASSERT(::IsWindow(m_hWnd));
5482 return (DWORD)::SendMessage(m_hWnd, TB_GETSTYLE, 0, 0L);
5485 void SetStyle(DWORD dwStyle)
5487 ATLASSERT(::IsWindow(m_hWnd));
5488 ::SendMessage(m_hWnd, TB_SETSTYLE, 0, dwStyle);
5491 DWORD GetButtonSize()
const 5493 ATLASSERT(::IsWindow(m_hWnd));
5494 return (DWORD)::SendMessage(m_hWnd, TB_GETBUTTONSIZE, 0, 0L);
5497 void GetButtonSize(SIZE& size)
const 5499 ATLASSERT(::IsWindow(m_hWnd));
5500 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_GETBUTTONSIZE, 0, 0L);
5501 size.cx = LOWORD(dwRet);
5502 size.cy = HIWORD(dwRet);
5505 BOOL GetRect(
int nID, LPRECT lpRect)
const 5507 ATLASSERT(::IsWindow(m_hWnd));
5508 return (BOOL)::SendMessage(m_hWnd, TB_GETRECT, nID, (LPARAM)lpRect);
5511 int GetTextRows()
const 5513 ATLASSERT(::IsWindow(m_hWnd));
5514 return (
int)::SendMessage(m_hWnd, TB_GETTEXTROWS, 0, 0L);
5517 BOOL SetButtonWidth(
int cxMin,
int cxMax)
5519 ATLASSERT(::IsWindow(m_hWnd));
5520 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONWIDTH, 0, MAKELPARAM(cxMin, cxMax));
5523 BOOL SetIndent(
int nIndent)
5525 ATLASSERT(::IsWindow(m_hWnd));
5526 return (BOOL)::SendMessage(m_hWnd, TB_SETINDENT, nIndent, 0L);
5529 BOOL SetMaxTextRows(
int nMaxTextRows)
5531 ATLASSERT(::IsWindow(m_hWnd));
5532 return (BOOL)::SendMessage(m_hWnd, TB_SETMAXTEXTROWS, nMaxTextRows, 0L);
5535 #if (_WIN32_IE >= 0x0400) 5537 BOOL GetAnchorHighlight()
const 5539 ATLASSERT(::IsWindow(m_hWnd));
5540 return (BOOL)::SendMessage(m_hWnd, TB_GETANCHORHIGHLIGHT, 0, 0L);
5543 BOOL SetAnchorHighlight(BOOL bEnable = TRUE)
5545 ATLASSERT(::IsWindow(m_hWnd));
5546 return (BOOL)::SendMessage(m_hWnd, TB_SETANCHORHIGHLIGHT, bEnable, 0L);
5548 #endif // !_WIN32_WCE 5550 int GetButtonInfo(
int nID, LPTBBUTTONINFO lptbbi)
const 5552 ATLASSERT(::IsWindow(m_hWnd));
5553 return (
int)::SendMessage(m_hWnd, TB_GETBUTTONINFO, nID, (LPARAM)lptbbi);
5556 BOOL SetButtonInfo(
int nID, LPTBBUTTONINFO lptbbi)
5558 ATLASSERT(::IsWindow(m_hWnd));
5559 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONINFO, nID, (LPARAM)lptbbi);
5562 BOOL SetButtonInfo(
int nID, DWORD dwMask, BYTE Style, BYTE State, LPCTSTR lpszItem,
5563 int iImage, WORD cx,
int iCommand, DWORD_PTR lParam)
5565 ATLASSERT(::IsWindow(m_hWnd));
5566 TBBUTTONINFO tbbi = { 0 };
5567 tbbi.cbSize =
sizeof(TBBUTTONINFO);
5568 tbbi.dwMask = dwMask;
5569 tbbi.idCommand = iCommand;
5570 tbbi.iImage = iImage;
5571 tbbi.fsState = State;
5572 tbbi.fsStyle = Style;
5574 tbbi.pszText = (LPTSTR) lpszItem;
5575 tbbi.lParam = lParam;
5576 return (BOOL)::SendMessage(m_hWnd, TB_SETBUTTONINFO, nID, (LPARAM)&tbbi);
5580 int GetHotItem()
const 5582 ATLASSERT(::IsWindow(m_hWnd));
5583 return (
int)::SendMessage(m_hWnd, TB_GETHOTITEM, 0, 0L);
5586 int SetHotItem(
int nItem)
5588 ATLASSERT(::IsWindow(m_hWnd));
5589 return (
int)::SendMessage(m_hWnd, TB_SETHOTITEM, nItem, 0L);
5591 #endif // !_WIN32_WCE 5593 BOOL IsButtonHighlighted(
int nButtonID)
const 5595 ATLASSERT(::IsWindow(m_hWnd));
5596 return (BOOL)::SendMessage(m_hWnd, TB_ISBUTTONHIGHLIGHTED, nButtonID, 0L);
5599 DWORD SetDrawTextFlags(DWORD dwMask, DWORD dwFlags)
5601 ATLASSERT(::IsWindow(m_hWnd));
5602 return (DWORD)::SendMessage(m_hWnd, TB_SETDRAWTEXTFLAGS, dwMask, dwFlags);
5606 BOOL GetColorScheme(LPCOLORSCHEME lpcs)
const 5608 ATLASSERT(::IsWindow(m_hWnd));
5609 return (BOOL)::SendMessage(m_hWnd, TB_GETCOLORSCHEME, 0, (LPARAM)lpcs);
5612 void SetColorScheme(LPCOLORSCHEME lpcs)
5614 ATLASSERT(::IsWindow(m_hWnd));
5615 ::SendMessage(m_hWnd, TB_SETCOLORSCHEME, 0, (LPARAM)lpcs);
5618 DWORD GetExtendedStyle()
const 5620 ATLASSERT(::IsWindow(m_hWnd));
5621 return (DWORD)::SendMessage(m_hWnd, TB_GETEXTENDEDSTYLE, 0, 0L);
5624 DWORD SetExtendedStyle(DWORD dwStyle)
5626 ATLASSERT(::IsWindow(m_hWnd));
5627 return (DWORD)::SendMessage(m_hWnd, TB_SETEXTENDEDSTYLE, 0, dwStyle);
5630 void GetInsertMark(LPTBINSERTMARK lptbim)
const 5632 ATLASSERT(::IsWindow(m_hWnd));
5633 ::SendMessage(m_hWnd, TB_GETINSERTMARK, 0, (LPARAM)lptbim);
5636 void SetInsertMark(LPTBINSERTMARK lptbim)
5638 ATLASSERT(::IsWindow(m_hWnd));
5639 ::SendMessage(m_hWnd, TB_SETINSERTMARK, 0, (LPARAM)lptbim);
5642 COLORREF GetInsertMarkColor()
const 5644 ATLASSERT(::IsWindow(m_hWnd));
5645 return (COLORREF)::SendMessage(m_hWnd, TB_GETINSERTMARKCOLOR, 0, 0L);
5648 COLORREF SetInsertMarkColor(COLORREF clr)
5650 ATLASSERT(::IsWindow(m_hWnd));
5651 return (COLORREF)::SendMessage(m_hWnd, TB_SETINSERTMARKCOLOR, 0, (LPARAM)clr);
5654 BOOL GetMaxSize(LPSIZE lpSize)
const 5656 ATLASSERT(::IsWindow(m_hWnd));
5657 return (BOOL)::SendMessage(m_hWnd, TB_GETMAXSIZE, 0, (LPARAM)lpSize);
5660 void GetPadding(LPSIZE lpSizePadding)
const 5662 ATLASSERT(::IsWindow(m_hWnd));
5663 ATLASSERT(lpSizePadding != NULL);
5664 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_GETPADDING, 0, 0L);
5665 lpSizePadding->cx = GET_X_LPARAM(dwRet);
5666 lpSizePadding->cy = GET_Y_LPARAM(dwRet);
5669 void SetPadding(
int cx,
int cy, LPSIZE lpSizePadding = NULL)
5671 ATLASSERT(::IsWindow(m_hWnd));
5672 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, TB_SETPADDING, 0, MAKELPARAM(cx, cy));
5673 if(lpSizePadding != NULL)
5675 lpSizePadding->cx = GET_X_LPARAM(dwRet);
5676 lpSizePadding->cy = GET_Y_LPARAM(dwRet);
5680 BOOL GetUnicodeFormat()
const 5682 ATLASSERT(::IsWindow(m_hWnd));
5683 return (BOOL)::SendMessage(m_hWnd, TB_GETUNICODEFORMAT, 0, 0L);
5686 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
5688 ATLASSERT(::IsWindow(m_hWnd));
5689 return (BOOL)::SendMessage(m_hWnd, TB_SETUNICODEFORMAT, bUnicode, 0L);
5691 #endif // !_WIN32_WCE 5692 #endif // (_WIN32_IE >= 0x0400) 5694 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 5695 int GetString(
int nString, LPTSTR lpstrString,
int cchMaxLen)
const 5697 ATLASSERT(::IsWindow(m_hWnd));
5698 return (
int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(cchMaxLen, nString), (LPARAM)lpstrString);
5701 int GetStringBSTR(
int nString, BSTR& bstrString)
const 5704 ATLASSERT(::IsWindow(m_hWnd));
5705 ATLASSERT(bstrString == NULL);
5706 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(0, nString), NULL));
5710 LPTSTR lpstrText = buff.Allocate(nLength + 1);
5711 if(lpstrText != NULL)
5713 nLength = (int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(nLength + 1, nString), (LPARAM)lpstrText);
5715 bstrString = ::SysAllocString(T2OLE(lpstrText));
5726 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5727 int GetString(
int nString, _CSTRING_NS::CString& str)
const 5729 ATLASSERT(::IsWindow(m_hWnd));
5730 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(0, nString), NULL));
5733 LPTSTR lpstr = str.GetBufferSetLength(nLength + 1);
5735 nLength = (int)::SendMessage(m_hWnd, TB_GETSTRING, MAKEWPARAM(nLength + 1, nString), (LPARAM)lpstr);
5738 str.ReleaseBuffer();
5742 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 5743 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 5745 #if (_WIN32_WINNT >= 0x0501) 5746 void GetMetrics(LPTBMETRICS lptbm)
const 5748 ATLASSERT(::IsWindow(m_hWnd));
5749 ::SendMessage(m_hWnd, TB_GETMETRICS, 0, (LPARAM)lptbm);
5752 void SetMetrics(LPTBMETRICS lptbm)
5754 ATLASSERT(::IsWindow(m_hWnd));
5755 ::SendMessage(m_hWnd, TB_SETMETRICS, 0, (LPARAM)lptbm);
5758 void SetWindowTheme(LPCWSTR lpstrTheme)
5760 ATLASSERT(::IsWindow(m_hWnd));
5761 ::SendMessage(m_hWnd, TB_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
5763 #endif // (_WIN32_WINNT >= 0x0501) 5765 #if (_WIN32_WINNT >= 0x0600) 5766 CImageList GetPressedImageList(
int nIndex = 0)
const 5768 ATLASSERT(::IsWindow(m_hWnd));
5769 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_GETPRESSEDIMAGELIST, nIndex, 0L));
5772 CImageList SetPressedImageList(HIMAGELIST hImageList,
int nIndex = 0)
5774 ATLASSERT(::IsWindow(m_hWnd));
5775 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TB_SETPRESSEDIMAGELIST, nIndex, (LPARAM)hImageList));
5777 #endif // (_WIN32_WINNT >= 0x0600) 5780 BOOL EnableButton(
int nID, BOOL bEnable = TRUE)
5782 ATLASSERT(::IsWindow(m_hWnd));
5783 return (BOOL)::SendMessage(m_hWnd, TB_ENABLEBUTTON, nID, MAKELPARAM(bEnable, 0));
5786 BOOL CheckButton(
int nID, BOOL bCheck = TRUE)
5788 ATLASSERT(::IsWindow(m_hWnd));
5789 return (BOOL)::SendMessage(m_hWnd, TB_CHECKBUTTON, nID, MAKELPARAM(bCheck, 0));
5792 BOOL PressButton(
int nID, BOOL bPress = TRUE)
5794 ATLASSERT(::IsWindow(m_hWnd));
5795 return (BOOL)::SendMessage(m_hWnd, TB_PRESSBUTTON, nID, MAKELPARAM(bPress, 0));
5798 BOOL HideButton(
int nID, BOOL bHide = TRUE)
5800 ATLASSERT(::IsWindow(m_hWnd));
5801 return (BOOL)::SendMessage(m_hWnd, TB_HIDEBUTTON, nID, MAKELPARAM(bHide, 0));
5804 BOOL Indeterminate(
int nID, BOOL bIndeterminate = TRUE)
5806 ATLASSERT(::IsWindow(m_hWnd));
5807 return (BOOL)::SendMessage(m_hWnd, TB_INDETERMINATE, nID, MAKELPARAM(bIndeterminate, 0));
5810 int AddBitmap(
int nNumButtons, UINT nBitmapID)
5812 ATLASSERT(::IsWindow(m_hWnd));
5813 TBADDBITMAP tbab = { 0 };
5814 tbab.hInst = ModuleHelper::GetResourceInstance();
5815 ATLASSERT(tbab.hInst != NULL);
5816 tbab.nID = nBitmapID;
5817 return (
int)::SendMessage(m_hWnd, TB_ADDBITMAP, (WPARAM)nNumButtons, (LPARAM)&tbab);
5820 int AddBitmap(
int nNumButtons, HBITMAP hBitmap)
5822 ATLASSERT(::IsWindow(m_hWnd));
5823 TBADDBITMAP tbab = { 0 };
5825 tbab.nID = (UINT_PTR)hBitmap;
5826 return (
int)::SendMessage(m_hWnd, TB_ADDBITMAP, (WPARAM)nNumButtons, (LPARAM)&tbab);
5829 BOOL AddButtons(
int nNumButtons, LPTBBUTTON lpButtons)
5831 ATLASSERT(::IsWindow(m_hWnd));
5832 return (BOOL)::SendMessage(m_hWnd, TB_ADDBUTTONS, nNumButtons, (LPARAM)lpButtons);
5835 BOOL InsertButton(
int nIndex, LPTBBUTTON lpButton)
5837 ATLASSERT(::IsWindow(m_hWnd));
5838 return (BOOL)::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)lpButton);
5841 BOOL InsertButton(
int nIndex,
int iCommand, BYTE Style, BYTE State,
int iBitmap,
5842 INT_PTR iString, DWORD_PTR lParam)
5844 ATLASSERT(::IsWindow(m_hWnd));
5845 TBBUTTON tbb = { 0 };
5846 tbb.fsStyle = Style;
5847 tbb.fsState = State;
5848 tbb.idCommand = iCommand;
5849 tbb.iBitmap = iBitmap;
5850 tbb.iString = iString;
5851 tbb.dwData = lParam;
5852 return (BOOL)::SendMessage(m_hWnd, TB_INSERTBUTTON, nIndex, (LPARAM)&tbb);
5855 BOOL InsertButton(
int nIndex,
int iCommand, BYTE Style, BYTE State,
int iBitmap,
5856 LPCTSTR lpszItem, DWORD_PTR lParam)
5858 return InsertButton(nIndex, iCommand, Style, State, iBitmap, (INT_PTR)lpszItem, lParam);
5861 BOOL AddButton(LPTBBUTTON lpButton)
5863 return InsertButton(-1, lpButton);
5866 BOOL AddButton(
int iCommand, BYTE Style, BYTE State,
int iBitmap, INT_PTR iString, DWORD_PTR lParam)
5868 return InsertButton(-1, iCommand, Style, State, iBitmap, iString, lParam);
5871 BOOL AddButton(
int iCommand, BYTE Style, BYTE State,
int iBitmap, LPCTSTR lpszItem, DWORD_PTR lParam)
5873 return InsertButton(-1, iCommand, Style, State, iBitmap, lpszItem, lParam);
5876 BOOL DeleteButton(
int nIndex)
5878 ATLASSERT(::IsWindow(m_hWnd));
5879 return (BOOL)::SendMessage(m_hWnd, TB_DELETEBUTTON, nIndex, 0L);
5882 UINT CommandToIndex(UINT nID)
const 5884 ATLASSERT(::IsWindow(m_hWnd));
5885 return (UINT)::SendMessage(m_hWnd, TB_COMMANDTOINDEX, nID, 0L);
5889 void SaveState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
5891 ATLASSERT(::IsWindow(m_hWnd));
5892 TBSAVEPARAMS tbs = { 0 };
5894 tbs.pszSubKey = lpszSubKey;
5895 tbs.pszValueName = lpszValueName;
5896 ::SendMessage(m_hWnd, TB_SAVERESTORE, (WPARAM)TRUE, (LPARAM)&tbs);
5899 void RestoreState(HKEY hKeyRoot, LPCTSTR lpszSubKey, LPCTSTR lpszValueName)
5901 ATLASSERT(::IsWindow(m_hWnd));
5902 TBSAVEPARAMS tbs = { 0 };
5904 tbs.pszSubKey = lpszSubKey;
5905 tbs.pszValueName = lpszValueName;
5906 ::SendMessage(m_hWnd, TB_SAVERESTORE, (WPARAM)FALSE, (LPARAM)&tbs);
5911 ATLASSERT(::IsWindow(m_hWnd));
5912 ::SendMessage(m_hWnd, TB_CUSTOMIZE, 0, 0L);
5914 #endif // !_WIN32_WCE 5916 int AddString(UINT nStringID)
5918 ATLASSERT(::IsWindow(m_hWnd));
5919 return (
int)::SendMessage(m_hWnd, TB_ADDSTRING, (WPARAM)ModuleHelper::GetResourceInstance(), (LPARAM)nStringID);
5922 int AddStrings(LPCTSTR lpszStrings)
5924 ATLASSERT(::IsWindow(m_hWnd));
5925 return (
int)::SendMessage(m_hWnd, TB_ADDSTRING, 0, (LPARAM)lpszStrings);
5930 ATLASSERT(::IsWindow(m_hWnd));
5931 ::SendMessage(m_hWnd, TB_AUTOSIZE, 0, 0L);
5934 BOOL ChangeBitmap(
int nID,
int nBitmap)
5936 ATLASSERT(::IsWindow(m_hWnd));
5937 return (BOOL)::SendMessage(m_hWnd, TB_CHANGEBITMAP, nID, MAKELPARAM(nBitmap, 0));
5940 int LoadImages(
int nBitmapID)
5942 ATLASSERT(::IsWindow(m_hWnd));
5943 return (
int)::SendMessage(m_hWnd, TB_LOADIMAGES, nBitmapID, (LPARAM)ModuleHelper::GetResourceInstance());
5946 int LoadStdImages(
int nBitmapID)
5948 ATLASSERT(::IsWindow(m_hWnd));
5949 return (
int)::SendMessage(m_hWnd, TB_LOADIMAGES, nBitmapID, (LPARAM)HINST_COMMCTRL);
5952 BOOL ReplaceBitmap(LPTBREPLACEBITMAP ptbrb)
5954 ATLASSERT(::IsWindow(m_hWnd));
5955 return (BOOL)::SendMessage(m_hWnd, TB_REPLACEBITMAP, 0, (LPARAM)ptbrb);
5958 #if (_WIN32_IE >= 0x0400) 5959 int HitTest(LPPOINT lpPoint)
const 5961 ATLASSERT(::IsWindow(m_hWnd));
5962 return (
int)::SendMessage(m_hWnd, TB_HITTEST, 0, (LPARAM)lpPoint);
5966 BOOL InsertMarkHitTest(LPPOINT lpPoint, LPTBINSERTMARK lptbim)
const 5968 ATLASSERT(::IsWindow(m_hWnd));
5969 return (BOOL)::SendMessage(m_hWnd, TB_INSERTMARKHITTEST, (WPARAM)lpPoint, (LPARAM)lptbim);
5972 BOOL InsertMarkHitTest(
int x,
int y, LPTBINSERTMARK lptbim)
const 5974 ATLASSERT(::IsWindow(m_hWnd));
5975 POINT pt = { x, y };
5976 return (BOOL)::SendMessage(m_hWnd, TB_INSERTMARKHITTEST, (WPARAM)&pt, (LPARAM)lptbim);
5979 BOOL MapAccelerator(TCHAR chAccel,
int& nID)
const 5981 ATLASSERT(::IsWindow(m_hWnd));
5982 return (BOOL)::SendMessage(m_hWnd, TB_MAPACCELERATOR, (WPARAM)chAccel, (LPARAM)&nID);
5985 BOOL MarkButton(
int nID, BOOL bHighlight = TRUE)
5987 ATLASSERT(::IsWindow(m_hWnd));
5988 return (BOOL)::SendMessage(m_hWnd, TB_MARKBUTTON, nID, MAKELPARAM(bHighlight, 0));
5991 BOOL MoveButton(
int nOldPos,
int nNewPos)
5993 ATLASSERT(::IsWindow(m_hWnd));
5994 return (BOOL)::SendMessage(m_hWnd, TB_MOVEBUTTON, nOldPos, nNewPos);
5997 HRESULT GetObject(REFIID iid, LPVOID* ppvObject)
5999 ATLASSERT(::IsWindow(m_hWnd));
6000 return (HRESULT)::SendMessage(m_hWnd, TB_GETOBJECT, (WPARAM)&iid, (LPARAM)ppvObject);
6002 #endif // !_WIN32_WCE 6003 #endif // (_WIN32_IE >= 0x0400) 6012 template <
class TBase>
6026 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6027 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6030 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6034 static LPCTSTR GetWndClassName()
6036 return STATUSCLASSNAME;
6039 int GetParts(
int nParts,
int* pParts)
const 6041 ATLASSERT(::IsWindow(m_hWnd));
6042 return (
int)::SendMessage(m_hWnd, SB_GETPARTS, nParts, (LPARAM)pParts);
6045 BOOL SetParts(
int nParts,
int* pWidths)
6047 ATLASSERT(::IsWindow(m_hWnd));
6048 return (BOOL)::SendMessage(m_hWnd, SB_SETPARTS, nParts, (LPARAM)pWidths);
6051 int GetTextLength(
int nPane,
int* pType = NULL)
const 6053 ATLASSERT(::IsWindow(m_hWnd));
6054 ATLASSERT(nPane < 256);
6055 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L);
6057 *pType = (int)(
short)HIWORD(dwRet);
6058 return (
int)(short)LOWORD(dwRet);
6061 int GetText(
int nPane, LPTSTR lpszText,
int* pType = NULL)
const 6063 ATLASSERT(::IsWindow(m_hWnd));
6064 ATLASSERT(nPane < 256);
6065 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, SB_GETTEXT, (WPARAM)nPane, (LPARAM)lpszText);
6067 *pType = (int)(
short)HIWORD(dwRet);
6068 return (
int)(short)LOWORD(dwRet);
6072 BOOL GetTextBSTR(
int nPane, BSTR& bstrText,
int* pType = NULL)
const 6075 ATLASSERT(::IsWindow(m_hWnd));
6076 ATLASSERT(nPane < 256);
6077 ATLASSERT(bstrText == NULL);
6078 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L));
6083 LPTSTR lpstrText = buff.Allocate(nLength + 1);
6084 if(lpstrText == NULL)
6087 if(!GetText(nPane, lpstrText, pType))
6090 bstrText = ::SysAllocString(T2OLE(lpstrText));
6091 return (bstrText != NULL) ? TRUE : FALSE;
6093 #endif // !_ATL_NO_COM 6095 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 6096 int GetText(
int nPane, _CSTRING_NS::CString& strText,
int* pType = NULL)
const 6098 ATLASSERT(::IsWindow(m_hWnd));
6099 ATLASSERT(nPane < 256);
6100 int nLength = (int)(
short)LOWORD(::SendMessage(m_hWnd, SB_GETTEXTLENGTH, (WPARAM)nPane, 0L));
6104 LPTSTR lpstr = strText.GetBufferSetLength(nLength);
6107 return GetText(nPane, lpstr, pType);
6109 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 6111 BOOL SetText(
int nPane, LPCTSTR lpszText,
int nType = 0)
6113 ATLASSERT(::IsWindow(m_hWnd));
6114 ATLASSERT(nPane < 256);
6115 return (BOOL)::SendMessage(m_hWnd, SB_SETTEXT, (nPane | nType), (LPARAM)lpszText);
6118 BOOL GetRect(
int nPane, LPRECT lpRect)
const 6120 ATLASSERT(::IsWindow(m_hWnd));
6121 ATLASSERT(nPane < 256);
6122 return (BOOL)::SendMessage(m_hWnd, SB_GETRECT, nPane, (LPARAM)lpRect);
6125 BOOL GetBorders(
int* pBorders)
const 6127 ATLASSERT(::IsWindow(m_hWnd));
6128 return (BOOL)::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)pBorders);
6131 BOOL GetBorders(
int& nHorz,
int& nVert,
int& nSpacing)
const 6133 ATLASSERT(::IsWindow(m_hWnd));
6134 int borders[3] = { 0, 0, 0 };
6135 BOOL bResult = (BOOL)::SendMessage(m_hWnd, SB_GETBORDERS, 0, (LPARAM)&borders);
6140 nSpacing = borders[2];
6145 void SetMinHeight(
int nMin)
6147 ATLASSERT(::IsWindow(m_hWnd));
6148 ::SendMessage(m_hWnd, SB_SETMINHEIGHT, nMin, 0L);
6151 BOOL SetSimple(BOOL bSimple = TRUE)
6153 ATLASSERT(::IsWindow(m_hWnd));
6154 return (BOOL)::SendMessage(m_hWnd, SB_SIMPLE, bSimple, 0L);
6157 BOOL IsSimple()
const 6159 ATLASSERT(::IsWindow(m_hWnd));
6160 return (BOOL)::SendMessage(m_hWnd, SB_ISSIMPLE, 0, 0L);
6163 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6164 BOOL GetUnicodeFormat()
const 6166 ATLASSERT(::IsWindow(m_hWnd));
6167 return (BOOL)::SendMessage(m_hWnd, SB_GETUNICODEFORMAT, 0, 0L);
6170 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6172 ATLASSERT(::IsWindow(m_hWnd));
6173 return (BOOL)::SendMessage(m_hWnd, SB_SETUNICODEFORMAT, bUnicode, 0L);
6176 void GetTipText(
int nPane, LPTSTR lpstrText,
int nSize)
const 6178 ATLASSERT(::IsWindow(m_hWnd));
6179 ATLASSERT(nPane < 256);
6180 ::SendMessage(m_hWnd, SB_GETTIPTEXT, MAKEWPARAM(nPane, nSize), (LPARAM)lpstrText);
6183 void SetTipText(
int nPane, LPCTSTR lpstrText)
6185 ATLASSERT(::IsWindow(m_hWnd));
6186 ATLASSERT(nPane < 256);
6187 ::SendMessage(m_hWnd, SB_SETTIPTEXT, nPane, (LPARAM)lpstrText);
6189 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6191 #if ((_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 0x0500)) 6192 COLORREF SetBkColor(COLORREF clrBk)
6194 ATLASSERT(::IsWindow(m_hWnd));
6195 return (COLORREF)::SendMessage(m_hWnd, SB_SETBKCOLOR, 0, (LPARAM)clrBk);
6198 HICON GetIcon(
int nPane)
const 6200 ATLASSERT(::IsWindow(m_hWnd));
6201 ATLASSERT(nPane < 256);
6202 return (HICON)::SendMessage(m_hWnd, SB_GETICON, nPane, 0L);
6205 BOOL SetIcon(
int nPane, HICON hIcon)
6207 ATLASSERT(::IsWindow(m_hWnd));
6208 ATLASSERT(nPane < 256);
6209 return (BOOL)::SendMessage(m_hWnd, SB_SETICON, nPane, (LPARAM)hIcon);
6211 #endif // ((_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE)) || (defined(_WIN32_WCE) && (_WIN32_WCE >= 0x0500)) 6220 template <
class TBase>
6225 CTabCtrlT(HWND hWnd = NULL) : TBase(hWnd)
6234 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6235 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6238 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6242 static LPCTSTR GetWndClassName()
6244 return WC_TABCONTROL;
6249 ATLASSERT(::IsWindow(m_hWnd));
6250 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TCM_GETIMAGELIST, 0, 0L));
6253 CImageList SetImageList(HIMAGELIST hImageList)
6255 ATLASSERT(::IsWindow(m_hWnd));
6256 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, TCM_SETIMAGELIST, 0, (LPARAM)hImageList));
6259 int GetItemCount()
const 6261 ATLASSERT(::IsWindow(m_hWnd));
6262 return (
int)::SendMessage(m_hWnd, TCM_GETITEMCOUNT, 0, 0L);
6265 BOOL GetItem(
int nItem, LPTCITEM pTabCtrlItem)
const 6267 ATLASSERT(::IsWindow(m_hWnd));
6268 return (BOOL)::SendMessage(m_hWnd, TCM_GETITEM, nItem, (LPARAM)pTabCtrlItem);
6271 BOOL SetItem(
int nItem, LPTCITEM pTabCtrlItem)
6273 ATLASSERT(::IsWindow(m_hWnd));
6274 return (BOOL)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)pTabCtrlItem);
6277 int SetItem(
int nItem, UINT mask, LPCTSTR lpszItem, DWORD dwState, DWORD dwStateMask,
int iImage, LPARAM lParam)
6279 ATLASSERT(::IsWindow(m_hWnd));
6282 tci.pszText = (LPTSTR) lpszItem;
6283 tci.dwState = dwState;
6284 tci.dwStateMask = dwStateMask;
6285 tci.iImage = iImage;
6286 tci.lParam = lParam;
6287 return (
int)::SendMessage(m_hWnd, TCM_SETITEM, nItem, (LPARAM)&tci);
6290 BOOL GetItemRect(
int nItem, LPRECT lpRect)
const 6292 ATLASSERT(::IsWindow(m_hWnd));
6293 return (BOOL)::SendMessage(m_hWnd, TCM_GETITEMRECT, nItem, (LPARAM)lpRect);
6296 int GetCurSel()
const 6298 ATLASSERT(::IsWindow(m_hWnd));
6299 return (
int)::SendMessage(m_hWnd, TCM_GETCURSEL, 0, 0L);
6302 int SetCurSel(
int nItem)
6304 ATLASSERT(::IsWindow(m_hWnd));
6305 return (
int)::SendMessage(m_hWnd, TCM_SETCURSEL, nItem, 0L);
6308 SIZE SetItemSize(SIZE size)
6310 ATLASSERT(::IsWindow(m_hWnd));
6311 DWORD dwSize = (DWORD)::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(size.cx, size.cy));
6312 SIZE sizeRet = { GET_X_LPARAM(dwSize), GET_Y_LPARAM(dwSize) };
6316 void SetItemSize(
int cx,
int cy)
6318 ATLASSERT(::IsWindow(m_hWnd));
6319 ::SendMessage(m_hWnd, TCM_SETITEMSIZE, 0, MAKELPARAM(cx, cy));
6322 void SetPadding(SIZE size)
6324 ATLASSERT(::IsWindow(m_hWnd));
6325 ::SendMessage(m_hWnd, TCM_SETPADDING, 0, MAKELPARAM(size.cx, size.cy));
6328 int GetRowCount()
const 6330 ATLASSERT(::IsWindow(m_hWnd));
6331 return (
int)::SendMessage(m_hWnd, TCM_GETROWCOUNT, 0, 0L);
6335 CToolTipCtrl GetTooltips()
const 6337 ATLASSERT(::IsWindow(m_hWnd));
6338 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TCM_GETTOOLTIPS, 0, 0L));
6341 void SetTooltips(HWND hWndToolTip)
6343 ATLASSERT(::IsWindow(m_hWnd));
6344 ::SendMessage(m_hWnd, TCM_SETTOOLTIPS, (WPARAM)hWndToolTip, 0L);
6346 #endif // !_WIN32_WCE 6348 int GetCurFocus()
const 6350 ATLASSERT(::IsWindow(m_hWnd));
6351 return (
int)::SendMessage(m_hWnd, TCM_GETCURFOCUS, 0, 0L);
6354 void SetCurFocus(
int nItem)
6356 ATLASSERT(::IsWindow(m_hWnd));
6357 ::SendMessage(m_hWnd, TCM_SETCURFOCUS, nItem, 0L);
6360 BOOL SetItemExtra(
int cbExtra)
6362 ATLASSERT(::IsWindow(m_hWnd));
6363 ATLASSERT(GetItemCount() == 0);
6364 return (BOOL)::SendMessage(m_hWnd, TCM_SETITEMEXTRA, cbExtra, 0L);
6367 int SetMinTabWidth(
int nWidth = -1)
6369 ATLASSERT(::IsWindow(m_hWnd));
6370 return (
int)::SendMessage(m_hWnd, TCM_SETMINTABWIDTH, 0, nWidth);
6373 #if (_WIN32_IE >= 0x0400) 6374 DWORD GetExtendedStyle()
const 6376 ATLASSERT(::IsWindow(m_hWnd));
6377 return (DWORD)::SendMessage(m_hWnd, TCM_GETEXTENDEDSTYLE, 0, 0L);
6380 DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyle)
6382 ATLASSERT(::IsWindow(m_hWnd));
6383 return (DWORD)::SendMessage(m_hWnd, TCM_SETEXTENDEDSTYLE, dwExMask, dwExStyle);
6387 BOOL GetUnicodeFormat()
const 6389 ATLASSERT(::IsWindow(m_hWnd));
6390 return (BOOL)::SendMessage(m_hWnd, TCM_GETUNICODEFORMAT, 0, 0L);
6393 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6395 ATLASSERT(::IsWindow(m_hWnd));
6396 return (BOOL)::SendMessage(m_hWnd, TCM_SETUNICODEFORMAT, bUnicode, 0L);
6398 #endif // !_WIN32_WCE 6399 #endif // (_WIN32_IE >= 0x0400) 6402 int InsertItem(
int nItem, LPTCITEM pTabCtrlItem)
6404 ATLASSERT(::IsWindow(m_hWnd));
6405 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)pTabCtrlItem);
6408 int InsertItem(
int nItem, UINT mask, LPCTSTR lpszItem,
int iImage, LPARAM lParam)
6410 ATLASSERT(::IsWindow(m_hWnd));
6413 tci.pszText = (LPTSTR) lpszItem;
6414 tci.iImage = iImage;
6415 tci.lParam = lParam;
6416 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)&tci);
6419 int InsertItem(
int nItem, LPCTSTR lpszItem)
6421 ATLASSERT(::IsWindow(m_hWnd));
6423 tci.mask = TCIF_TEXT;
6424 tci.pszText = (LPTSTR) lpszItem;
6425 return (
int)::SendMessage(m_hWnd, TCM_INSERTITEM, nItem, (LPARAM)&tci);
6428 int AddItem(LPTCITEM pTabCtrlItem)
6430 return InsertItem(GetItemCount(), pTabCtrlItem);
6433 int AddItem(UINT mask, LPCTSTR lpszItem,
int iImage, LPARAM lParam)
6435 return InsertItem(GetItemCount(), mask, lpszItem, iImage, lParam);
6438 int AddItem(LPCTSTR lpszItem)
6440 return InsertItem(GetItemCount(), lpszItem);
6443 BOOL DeleteItem(
int nItem)
6445 ATLASSERT(::IsWindow(m_hWnd));
6446 return (BOOL)::SendMessage(m_hWnd, TCM_DELETEITEM, nItem, 0L);
6449 BOOL DeleteAllItems()
6451 ATLASSERT(::IsWindow(m_hWnd));
6452 return (BOOL)::SendMessage(m_hWnd, TCM_DELETEALLITEMS, 0, 0L);
6455 void AdjustRect(BOOL bLarger, LPRECT lpRect)
6457 ATLASSERT(::IsWindow(m_hWnd));
6458 ::SendMessage(m_hWnd, TCM_ADJUSTRECT, bLarger, (LPARAM)lpRect);
6461 void RemoveImage(
int nImage)
6463 ATLASSERT(::IsWindow(m_hWnd));
6464 ::SendMessage(m_hWnd, TCM_REMOVEIMAGE, nImage, 0L);
6467 int HitTest(TC_HITTESTINFO* pHitTestInfo)
const 6469 ATLASSERT(::IsWindow(m_hWnd));
6470 return (
int)::SendMessage(m_hWnd, TCM_HITTEST, 0, (LPARAM)pHitTestInfo);
6473 void DeselectAll(BOOL bExcludeFocus = TRUE)
6475 ATLASSERT(::IsWindow(m_hWnd));
6476 ::SendMessage(m_hWnd, TCM_DESELECTALL, bExcludeFocus, 0L);
6479 #if (_WIN32_IE >= 0x0400) 6480 BOOL HighlightItem(
int nIndex, BOOL bHighlight = TRUE)
6482 ATLASSERT(::IsWindow(m_hWnd));
6483 return (BOOL)::SendMessage(m_hWnd, TCM_HIGHLIGHTITEM, nIndex, MAKELPARAM(bHighlight, 0));
6485 #endif // (_WIN32_IE >= 0x0400) 6494 template <
class TBase>
6508 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6509 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6512 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6516 static LPCTSTR GetWndClassName()
6518 return TRACKBAR_CLASS;
6521 int GetLineSize()
const 6523 ATLASSERT(::IsWindow(m_hWnd));
6524 return (
int)::SendMessage(m_hWnd, TBM_GETLINESIZE, 0, 0L);
6527 int SetLineSize(
int nSize)
6529 ATLASSERT(::IsWindow(m_hWnd));
6530 return (
int)::SendMessage(m_hWnd, TBM_SETLINESIZE, 0, nSize);
6533 int GetPageSize()
const 6535 ATLASSERT(::IsWindow(m_hWnd));
6536 return (
int)::SendMessage(m_hWnd, TBM_GETPAGESIZE, 0, 0L);
6539 int SetPageSize(
int nSize)
6541 ATLASSERT(::IsWindow(m_hWnd));
6542 return (
int)::SendMessage(m_hWnd, TBM_SETPAGESIZE, 0, nSize);
6545 int GetRangeMin()
const 6547 ATLASSERT(::IsWindow(m_hWnd));
6548 return (
int)::SendMessage(m_hWnd, TBM_GETRANGEMIN, 0, 0L);
6551 void SetRangeMin(
int nMin, BOOL bRedraw = FALSE)
6553 ATLASSERT(::IsWindow(m_hWnd));
6554 ::SendMessage(m_hWnd, TBM_SETRANGEMIN, bRedraw, nMin);
6557 int GetRangeMax()
const 6559 ATLASSERT(::IsWindow(m_hWnd));
6560 return (
int)::SendMessage(m_hWnd, TBM_GETRANGEMAX, 0, 0L);
6563 void SetRangeMax(
int nMax, BOOL bRedraw = FALSE)
6565 ATLASSERT(::IsWindow(m_hWnd));
6566 ::SendMessage(m_hWnd, TBM_SETRANGEMAX, bRedraw, nMax);
6569 void GetRange(
int& nMin,
int& nMax)
const 6571 nMin = GetRangeMin();
6572 nMax = GetRangeMax();
6575 void SetRange(
int nMin,
int nMax, BOOL bRedraw = TRUE)
6577 ATLASSERT(::IsWindow(m_hWnd));
6578 ::SendMessage(m_hWnd, TBM_SETRANGE, bRedraw, MAKELPARAM(nMin, nMax));
6581 int GetSelStart()
const 6583 ATLASSERT(::IsWindow(m_hWnd));
6584 return (
int)::SendMessage(m_hWnd, TBM_GETSELSTART, 0, 0L);
6587 void SetSelStart(
int nMin)
6589 ATLASSERT(::IsWindow(m_hWnd));
6590 ::SendMessage(m_hWnd, TBM_SETSELSTART, 0, (LPARAM)nMin);
6593 int GetSelEnd()
const 6595 ATLASSERT(::IsWindow(m_hWnd));
6596 return (
int)::SendMessage(m_hWnd, TBM_GETSELEND, 0, 0L);
6599 void SetSelEnd(
int nMax)
6601 ATLASSERT(::IsWindow(m_hWnd));
6602 ::SendMessage(m_hWnd, TBM_SETSELEND, 0, (LPARAM)nMax);
6605 void GetSelection(
int& nMin,
int& nMax)
const 6607 nMin = GetSelStart();
6611 void SetSelection(
int nMin,
int nMax)
6617 void GetChannelRect(LPRECT lprc)
const 6619 ATLASSERT(::IsWindow(m_hWnd));
6620 ::SendMessage(m_hWnd, TBM_GETCHANNELRECT, 0, (LPARAM)lprc);
6623 void GetThumbRect(LPRECT lprc)
const 6625 ATLASSERT(::IsWindow(m_hWnd));
6626 ::SendMessage(m_hWnd, TBM_GETTHUMBRECT, 0, (LPARAM)lprc);
6631 ATLASSERT(::IsWindow(m_hWnd));
6632 return (
int)::SendMessage(m_hWnd, TBM_GETPOS, 0, 0L);
6635 void SetPos(
int nPos)
6637 ATLASSERT(::IsWindow(m_hWnd));
6638 ::SendMessage(m_hWnd, TBM_SETPOS, TRUE, nPos);
6641 UINT GetNumTics()
const 6643 ATLASSERT(::IsWindow(m_hWnd));
6644 return (UINT)::SendMessage(m_hWnd, TBM_GETNUMTICS, 0, 0L);
6647 DWORD* GetTicArray()
const 6649 ATLASSERT(::IsWindow(m_hWnd));
6650 return (DWORD*)::SendMessage(m_hWnd, TBM_GETPTICS, 0, 0L);
6653 int GetTic(
int nTic)
const 6655 ATLASSERT(::IsWindow(m_hWnd));
6656 return (
int)::SendMessage(m_hWnd, TBM_GETTIC, nTic, 0L);
6659 BOOL SetTic(
int nTic)
6661 ATLASSERT(::IsWindow(m_hWnd));
6662 return (BOOL)::SendMessage(m_hWnd, TBM_SETTIC, 0, nTic);
6665 int GetTicPos(
int nTic)
const 6667 ATLASSERT(::IsWindow(m_hWnd));
6668 return (
int)::SendMessage(m_hWnd, TBM_GETTICPOS, nTic, 0L);
6671 void SetTicFreq(
int nFreq)
6673 ATLASSERT(::IsWindow(m_hWnd));
6674 ::SendMessage(m_hWnd, TBM_SETTICFREQ, nFreq, 0L);
6677 int GetThumbLength()
const 6679 ATLASSERT(::IsWindow(m_hWnd));
6680 return (
int)::SendMessage(m_hWnd, TBM_GETTHUMBLENGTH, 0, 0L);
6683 void SetThumbLength(
int nLength)
6685 ATLASSERT(::IsWindow(m_hWnd));
6686 ::SendMessage(m_hWnd, TBM_SETTHUMBLENGTH, nLength, 0L);
6689 void SetSel(
int nStart,
int nEnd, BOOL bRedraw = TRUE)
6691 ATLASSERT(::IsWindow(m_hWnd));
6692 ATLASSERT((GetStyle() & TBS_ENABLESELRANGE) != 0);
6693 ::SendMessage(m_hWnd, TBM_SETSEL, bRedraw, MAKELPARAM(nStart, nEnd));
6696 ATL::CWindow GetBuddy(BOOL bLeft = TRUE)
const 6698 ATLASSERT(::IsWindow(m_hWnd));
6699 return ATL::CWindow((HWND)::SendMessage(m_hWnd, TBM_GETBUDDY, bLeft, 0L));
6702 ATL::CWindow SetBuddy(HWND hWndBuddy, BOOL bLeft = TRUE)
6704 ATLASSERT(::IsWindow(m_hWnd));
6705 return ATL::CWindow((HWND)::SendMessage(m_hWnd, TBM_SETBUDDY, bLeft, (LPARAM)hWndBuddy));
6709 CToolTipCtrl GetToolTips()
const 6711 ATLASSERT(::IsWindow(m_hWnd));
6712 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, TBM_GETTOOLTIPS, 0, 0L));
6715 void SetToolTips(HWND hWndTT)
6717 ATLASSERT(::IsWindow(m_hWnd));
6718 ::SendMessage(m_hWnd, TBM_SETTOOLTIPS, (WPARAM)hWndTT, 0L);
6721 int SetTipSide(
int nSide)
6723 ATLASSERT(::IsWindow(m_hWnd));
6724 return (
int)::SendMessage(m_hWnd, TBM_SETTIPSIDE, nSide, 0L);
6726 #endif // !_WIN32_WCE 6728 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6729 BOOL GetUnicodeFormat()
const 6731 ATLASSERT(::IsWindow(m_hWnd));
6732 return (BOOL)::SendMessage(m_hWnd, TBM_GETUNICODEFORMAT, 0, 0L);
6735 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6737 ATLASSERT(::IsWindow(m_hWnd));
6738 return (BOOL)::SendMessage(m_hWnd, TBM_SETUNICODEFORMAT, bUnicode, 0L);
6740 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 6743 void ClearSel(BOOL bRedraw = FALSE)
6745 ATLASSERT(::IsWindow(m_hWnd));
6746 ::SendMessage(m_hWnd, TBM_CLEARSEL, bRedraw, 0L);
6751 ATLASSERT(::IsWindow(m_hWnd));
6752 ::SendMessage(m_hWnd, TBM_SETPOS, FALSE, 0L);
6755 void ClearTics(BOOL bRedraw = FALSE)
6757 ATLASSERT(::IsWindow(m_hWnd));
6758 ::SendMessage(m_hWnd, TBM_CLEARTICS, bRedraw, 0L);
6768 template <
class TBase>
6782 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6783 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6786 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6790 static LPCTSTR GetWndClassName()
6792 return UPDOWN_CLASS;
6795 UINT GetAccel(
int nAccel, UDACCEL* pAccel)
const 6797 ATLASSERT(::IsWindow(m_hWnd));
6798 return (UINT)LOWORD(::SendMessage(m_hWnd, UDM_GETACCEL, nAccel, (LPARAM)pAccel));
6801 BOOL SetAccel(
int nAccel, UDACCEL* pAccel)
6803 ATLASSERT(::IsWindow(m_hWnd));
6804 return (BOOL)LOWORD(::SendMessage(m_hWnd, UDM_SETACCEL, nAccel, (LPARAM)pAccel));
6807 UINT GetBase()
const 6809 ATLASSERT(::IsWindow(m_hWnd));
6810 return (UINT)LOWORD(::SendMessage(m_hWnd, UDM_GETBASE, 0, 0L));
6813 int SetBase(
int nBase)
6815 ATLASSERT(::IsWindow(m_hWnd));
6816 return (
int)::SendMessage(m_hWnd, UDM_SETBASE, nBase, 0L);
6819 ATL::CWindow GetBuddy()
const 6821 ATLASSERT(::IsWindow(m_hWnd));
6822 return ATL::CWindow((HWND)::SendMessage(m_hWnd, UDM_GETBUDDY, 0, 0L));
6825 ATL::CWindow SetBuddy(HWND hWndBuddy)
6827 ATLASSERT(::IsWindow(m_hWnd));
6828 return ATL::CWindow((HWND)::SendMessage(m_hWnd, UDM_SETBUDDY, (WPARAM)hWndBuddy, 0L));
6831 int GetPos(LPBOOL lpbError = NULL)
const 6833 ATLASSERT(::IsWindow(m_hWnd));
6834 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, UDM_GETPOS, 0, 0L);
6837 if(lpbError != NULL)
6838 *lpbError = (HIWORD(dwRet) != 0) ? TRUE : FALSE;
6839 return (
int)(short)LOWORD(dwRet);
6842 int SetPos(
int nPos)
6844 ATLASSERT(::IsWindow(m_hWnd));
6845 return (
int)(short)LOWORD(::SendMessage(m_hWnd, UDM_SETPOS, 0, MAKELPARAM(nPos, 0)));
6848 DWORD GetRange()
const 6850 ATLASSERT(::IsWindow(m_hWnd));
6851 return (DWORD)::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0L);
6854 void GetRange(
int& nLower,
int& nUpper)
const 6856 ATLASSERT(::IsWindow(m_hWnd));
6857 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, UDM_GETRANGE, 0, 0L);
6858 nLower = (int)(
short)HIWORD(dwRet);
6859 nUpper = (int)(
short)LOWORD(dwRet);
6862 void SetRange(
int nLower,
int nUpper)
6864 ATLASSERT(::IsWindow(m_hWnd));
6865 ::SendMessage(m_hWnd, UDM_SETRANGE, 0, MAKELPARAM(nUpper, nLower));
6868 #if (_WIN32_IE >= 0x0400) 6869 void SetRange32(
int nLower,
int nUpper)
6871 ATLASSERT(::IsWindow(m_hWnd));
6872 ::SendMessage(m_hWnd, UDM_SETRANGE32, nLower, nUpper);
6875 void GetRange32(
int& nLower,
int& nUpper)
const 6877 ATLASSERT(::IsWindow(m_hWnd));
6878 ::SendMessage(m_hWnd, UDM_GETRANGE32, (WPARAM)&nLower, (LPARAM)&nUpper);
6882 BOOL GetUnicodeFormat()
const 6884 ATLASSERT(::IsWindow(m_hWnd));
6885 return (BOOL)::SendMessage(m_hWnd, UDM_GETUNICODEFORMAT, 0, 0L);
6888 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
6890 ATLASSERT(::IsWindow(m_hWnd));
6891 return (BOOL)::SendMessage(m_hWnd, UDM_SETUNICODEFORMAT, bUnicode, 0L);
6893 #endif // !_WIN32_WCE 6894 #endif // (_WIN32_IE >= 0x0400) 6896 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 6897 int GetPos32(LPBOOL lpbError = NULL)
const 6899 ATLASSERT(::IsWindow(m_hWnd));
6902 return (
int)::SendMessage(m_hWnd, UDM_GETPOS32, 0, (LPARAM)lpbError);
6905 int SetPos32(
int nPos)
6907 ATLASSERT(::IsWindow(m_hWnd));
6908 return (
int)::SendMessage(m_hWnd, UDM_SETPOS32, 0, (LPARAM)nPos);
6910 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 6919 template <
class TBase>
6933 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
6934 DWORD dwStyle = 0, DWORD dwExStyle = 0,
6937 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
6941 static LPCTSTR GetWndClassName()
6943 return PROGRESS_CLASS;
6946 DWORD SetRange(
int nLower,
int nUpper)
6948 ATLASSERT(::IsWindow(m_hWnd));
6949 return (DWORD)::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper));
6952 int SetPos(
int nPos)
6954 ATLASSERT(::IsWindow(m_hWnd));
6955 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_SETPOS, nPos, 0L));
6958 int OffsetPos(
int nPos)
6960 ATLASSERT(::IsWindow(m_hWnd));
6961 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_DELTAPOS, nPos, 0L));
6964 int SetStep(
int nStep)
6966 ATLASSERT(::IsWindow(m_hWnd));
6967 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_SETSTEP, nStep, 0L));
6972 ATLASSERT(::IsWindow(m_hWnd));
6973 return (UINT)::SendMessage(m_hWnd, PBM_GETPOS, 0, 0L);
6976 void GetRange(PPBRANGE pPBRange)
const 6978 ATLASSERT(::IsWindow(m_hWnd));
6979 ATLASSERT(pPBRange != NULL);
6980 ::SendMessage(m_hWnd, PBM_GETRANGE, TRUE, (LPARAM)pPBRange);
6983 void GetRange(
int& nLower,
int& nUpper)
const 6985 ATLASSERT(::IsWindow(m_hWnd));
6986 PBRANGE range = { 0 };
6987 ::SendMessage(m_hWnd, PBM_GETRANGE, TRUE, (LPARAM)&range);
6988 nLower = range.iLow;
6989 nUpper = range.iHigh;
6992 int GetRangeLimit(BOOL bLowLimit)
const 6994 ATLASSERT(::IsWindow(m_hWnd));
6995 return (
int)::SendMessage(m_hWnd, PBM_GETRANGE, bLowLimit, (LPARAM)NULL);
6998 DWORD SetRange32(
int nMin,
int nMax)
7000 ATLASSERT(::IsWindow(m_hWnd));
7001 return (DWORD)::SendMessage(m_hWnd, PBM_SETRANGE32, nMin, nMax);
7004 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 7005 COLORREF SetBarColor(COLORREF clr)
7007 ATLASSERT(::IsWindow(m_hWnd));
7008 return (COLORREF)::SendMessage(m_hWnd, PBM_SETBARCOLOR, 0, (LPARAM)clr);
7011 COLORREF SetBkColor(COLORREF clr)
7013 ATLASSERT(::IsWindow(m_hWnd));
7014 return (COLORREF)::SendMessage(m_hWnd, PBM_SETBKCOLOR, 0, (LPARAM)clr);
7016 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 7018 #if (_WIN32_WINNT >= 0x0501) && defined(PBM_SETMARQUEE) 7019 BOOL SetMarquee(BOOL bMarquee, UINT uUpdateTime = 0U)
7021 ATLASSERT(::IsWindow(m_hWnd));
7022 return (BOOL)::SendMessage(m_hWnd, PBM_SETMARQUEE, (WPARAM)bMarquee, (LPARAM)uUpdateTime);
7024 #endif // (_WIN32_WINNT >= 0x0501) && defined(PBM_SETMARQUEE) 7026 #if (_WIN32_WINNT >= 0x0600) 7029 ATLASSERT(::IsWindow(m_hWnd));
7030 return (
int)::SendMessage(m_hWnd, PBM_GETSTEP, 0, 0L);
7033 COLORREF GetBkColor()
const 7035 ATLASSERT(::IsWindow(m_hWnd));
7036 return (COLORREF)::SendMessage(m_hWnd, PBM_GETBKCOLOR, 0, 0L);
7039 COLORREF GetBarColor()
const 7041 ATLASSERT(::IsWindow(m_hWnd));
7042 return (COLORREF)::SendMessage(m_hWnd, PBM_GETBARCOLOR, 0, 0L);
7045 int GetState()
const 7047 ATLASSERT(::IsWindow(m_hWnd));
7048 return (
int)::SendMessage(m_hWnd, PBM_GETSTATE, 0, 0L);
7051 int SetState(
int nState)
7053 ATLASSERT(::IsWindow(m_hWnd));
7054 return (
int)::SendMessage(m_hWnd, PBM_SETSTATE, nState, 0L);
7056 #endif // (_WIN32_WINNT >= 0x0600) 7061 ATLASSERT(::IsWindow(m_hWnd));
7062 return (
int)(short)LOWORD(::SendMessage(m_hWnd, PBM_STEPIT, 0, 0L));
7074 template <
class TBase>
7088 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7089 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7092 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7096 static LPCTSTR GetWndClassName()
7098 return HOTKEY_CLASS;
7101 DWORD GetHotKey()
const 7103 ATLASSERT(::IsWindow(m_hWnd));
7104 return (DWORD)::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L);
7107 void GetHotKey(WORD &wVirtualKeyCode, WORD &wModifiers)
const 7109 ATLASSERT(::IsWindow(m_hWnd));
7110 DWORD dw = (DWORD)::SendMessage(m_hWnd, HKM_GETHOTKEY, 0, 0L);
7111 wVirtualKeyCode = LOBYTE(LOWORD(dw));
7112 wModifiers = HIBYTE(LOWORD(dw));
7115 void SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
7117 ATLASSERT(::IsWindow(m_hWnd));
7118 ::SendMessage(m_hWnd, HKM_SETHOTKEY, MAKEWORD(wVirtualKeyCode, wModifiers), 0L);
7121 void SetRules(WORD wInvalidComb, WORD wModifiers)
7123 ATLASSERT(::IsWindow(m_hWnd));
7124 ::SendMessage(m_hWnd, HKM_SETRULES, wInvalidComb, MAKELPARAM(wModifiers, 0));
7130 #endif // !_WIN32_WCE 7138 template <
class TBase>
7152 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7153 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7156 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7160 static LPCTSTR GetWndClassName()
7162 return ANIMATE_CLASS;
7168 ATLASSERT(::IsWindow(m_hWnd));
7169 return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, (LPARAM)FileName.m_lpstr);
7172 BOOL Play(UINT nFrom, UINT nTo, UINT nRep)
7174 ATLASSERT(::IsWindow(m_hWnd));
7175 return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, nRep, MAKELPARAM(nFrom, nTo));
7180 ATLASSERT(::IsWindow(m_hWnd));
7181 return (BOOL)::SendMessage(m_hWnd, ACM_STOP, 0, 0L);
7186 ATLASSERT(::IsWindow(m_hWnd));
7187 return (BOOL)::SendMessage(m_hWnd, ACM_OPEN, 0, 0L);
7192 ATLASSERT(::IsWindow(m_hWnd));
7193 return (BOOL)::SendMessage(m_hWnd, ACM_PLAY, 0, MAKELPARAM(nTo, nTo));
7197 BOOL IsPlaying()
const 7199 #ifndef ACM_ISPLAYING 7200 const UINT ACM_ISPLAYING = (WM_USER+104);
7202 ATLASSERT(::IsWindow(m_hWnd));
7203 return (BOOL)::SendMessage(m_hWnd, ACM_ISPLAYING, 0, 0L);
7209 #endif // !_WIN32_WCE 7218 #if (_RICHEDIT_VER == 0x0100) 7219 #undef RICHEDIT_CLASS 7220 #define RICHEDIT_CLASS L"RICHEDIT" 7221 #endif // (_RICHEDIT_VER == 0x0100) 7224 template <
class TBase>
7238 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
7239 DWORD dwStyle = 0, DWORD dwExStyle = 0,
7242 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
7246 static LPCTSTR GetWndClassName()
7248 return RICHEDIT_CLASS;
7251 static LPCTSTR GetLibraryName()
7253 #if (_RICHEDIT_VER >= 0x0200) 7254 return _T(
"RICHED20.DLL");
7256 return _T(
"RICHED32.DLL");
7260 int GetLineCount()
const 7262 ATLASSERT(::IsWindow(m_hWnd));
7263 return (
int)::SendMessage(m_hWnd, EM_GETLINECOUNT, 0, 0L);
7266 BOOL GetModify()
const 7268 ATLASSERT(::IsWindow(m_hWnd));
7269 return (BOOL)::SendMessage(m_hWnd, EM_GETMODIFY, 0, 0L);
7272 void SetModify(BOOL bModified = TRUE)
7274 ATLASSERT(::IsWindow(m_hWnd));
7275 ::SendMessage(m_hWnd, EM_SETMODIFY, bModified, 0L);
7278 void GetRect(LPRECT lpRect)
const 7280 ATLASSERT(::IsWindow(m_hWnd));
7281 ::SendMessage(m_hWnd, EM_GETRECT, 0, (LPARAM)lpRect);
7284 DWORD GetOptions()
const 7286 ATLASSERT(::IsWindow(m_hWnd));
7287 return (DWORD)::SendMessage(m_hWnd, EM_GETOPTIONS, 0, 0L);
7290 DWORD SetOptions(WORD wOperation, DWORD dwOptions)
7292 ATLASSERT(::IsWindow(m_hWnd));
7293 return (DWORD)::SendMessage(m_hWnd, EM_SETOPTIONS, wOperation, dwOptions);
7297 int GetLine(
int nIndex, LPTSTR lpszBuffer)
const 7299 ATLASSERT(::IsWindow(m_hWnd));
7300 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
7303 int GetLine(
int nIndex, LPTSTR lpszBuffer,
int nMaxLength)
const 7305 ATLASSERT(::IsWindow(m_hWnd));
7306 *(LPWORD)lpszBuffer = (WORD)nMaxLength;
7307 return (
int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
7310 BOOL CanUndo()
const 7312 ATLASSERT(::IsWindow(m_hWnd));
7313 return (BOOL)::SendMessage(m_hWnd, EM_CANUNDO, 0, 0L);
7316 BOOL CanPaste(UINT nFormat = 0)
const 7318 ATLASSERT(::IsWindow(m_hWnd));
7319 return (BOOL)::SendMessage(m_hWnd, EM_CANPASTE, nFormat, 0L);
7322 void GetSel(LONG& nStartChar, LONG& nEndChar)
const 7324 ATLASSERT(::IsWindow(m_hWnd));
7325 CHARRANGE cr = { 0, 0 };
7326 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7327 nStartChar = cr.cpMin;
7328 nEndChar = cr.cpMax;
7331 void GetSel(CHARRANGE &cr)
const 7333 ATLASSERT(::IsWindow(m_hWnd));
7334 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7337 int SetSel(LONG nStartChar, LONG nEndChar)
7339 ATLASSERT(::IsWindow(m_hWnd));
7340 CHARRANGE cr = { nStartChar, nEndChar };
7341 return (
int)::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
7344 int SetSel(CHARRANGE &cr)
7346 ATLASSERT(::IsWindow(m_hWnd));
7347 return (
int)::SendMessage(m_hWnd, EM_EXSETSEL, 0, (LPARAM)&cr);
7352 return SetSel(0, -1);
7357 return SetSel(-1, 0);
7360 DWORD GetDefaultCharFormat(CHARFORMAT& cf)
const 7362 ATLASSERT(::IsWindow(m_hWnd));
7363 cf.cbSize =
sizeof(CHARFORMAT);
7364 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 0, (LPARAM)&cf);
7367 DWORD GetSelectionCharFormat(CHARFORMAT& cf)
const 7369 ATLASSERT(::IsWindow(m_hWnd));
7370 cf.cbSize =
sizeof(CHARFORMAT);
7371 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 1, (LPARAM)&cf);
7374 DWORD GetEventMask()
const 7376 ATLASSERT(::IsWindow(m_hWnd));
7377 return (DWORD)::SendMessage(m_hWnd, EM_GETEVENTMASK, 0, 0L);
7380 LONG GetLimitText()
const 7382 ATLASSERT(::IsWindow(m_hWnd));
7383 return (LONG)::SendMessage(m_hWnd, EM_GETLIMITTEXT, 0, 0L);
7386 DWORD GetParaFormat(PARAFORMAT& pf)
const 7388 ATLASSERT(::IsWindow(m_hWnd));
7389 pf.cbSize =
sizeof(PARAFORMAT);
7390 return (DWORD)::SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, (LPARAM)&pf);
7393 #if (_RICHEDIT_VER >= 0x0200) 7394 LONG GetSelText(LPTSTR lpstrBuff)
const 7396 ATLASSERT(::IsWindow(m_hWnd));
7397 return (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrBuff);
7399 #else // !(_RICHEDIT_VER >= 0x0200) 7401 LONG GetSelText(LPSTR lpstrBuff)
const 7403 ATLASSERT(::IsWindow(m_hWnd));
7404 return (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrBuff);
7406 #endif // !(_RICHEDIT_VER >= 0x0200) 7409 BOOL GetSelTextBSTR(BSTR& bstrText)
const 7412 ATLASSERT(::IsWindow(m_hWnd));
7413 ATLASSERT(bstrText == NULL);
7415 CHARRANGE cr = { 0, 0 };
7416 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7418 #if (_RICHEDIT_VER >= 0x0200) 7420 LPTSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7421 if(lpstrText == NULL)
7423 if(::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText) == 0)
7426 bstrText = ::SysAllocString(T2W(lpstrText));
7427 #else // !(_RICHEDIT_VER >= 0x0200) 7429 LPSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7430 if(lpstrText == NULL)
7432 if(::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText) == 0)
7435 bstrText = ::SysAllocString(A2W(lpstrText));
7436 #endif // !(_RICHEDIT_VER >= 0x0200) 7438 return (bstrText != NULL) ? TRUE : FALSE;
7440 #endif // !_ATL_NO_COM 7442 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 7443 LONG GetSelText(_CSTRING_NS::CString& strText)
const 7445 ATLASSERT(::IsWindow(m_hWnd));
7447 CHARRANGE cr = { 0, 0 };
7448 ::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
7450 #if (_RICHEDIT_VER >= 0x0200) 7452 LPTSTR lpstrText = strText.GetBufferSetLength(cr.cpMax - cr.cpMin);
7453 if(lpstrText != NULL)
7455 lLen = (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText);
7456 strText.ReleaseBuffer();
7458 #else // !(_RICHEDIT_VER >= 0x0200) 7460 LPSTR lpstrText = buff.Allocate(cr.cpMax - cr.cpMin + 1);
7461 if(lpstrText == NULL)
7463 LONG lLen = (LONG)::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpstrText);
7468 strText = A2T(lpstrText);
7469 #endif // !(_RICHEDIT_VER >= 0x0200) 7473 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 7475 WORD GetSelectionType()
const 7477 ATLASSERT(::IsWindow(m_hWnd));
7478 return (WORD)::SendMessage(m_hWnd, EM_SELECTIONTYPE, 0, 0L);
7481 COLORREF SetBackgroundColor(COLORREF cr)
7483 ATLASSERT(::IsWindow(m_hWnd));
7484 return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, 0, cr);
7487 COLORREF SetBackgroundColor()
7489 ATLASSERT(::IsWindow(m_hWnd));
7490 return (COLORREF)::SendMessage(m_hWnd, EM_SETBKGNDCOLOR, 1, 0);
7493 BOOL SetCharFormat(CHARFORMAT& cf, WORD wFlags)
7495 ATLASSERT(::IsWindow(m_hWnd));
7496 cf.cbSize =
sizeof(CHARFORMAT);
7497 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, (WPARAM)wFlags, (LPARAM)&cf);
7500 BOOL SetDefaultCharFormat(CHARFORMAT& cf)
7502 ATLASSERT(::IsWindow(m_hWnd));
7503 cf.cbSize =
sizeof(CHARFORMAT);
7504 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, 0, (LPARAM)&cf);
7507 BOOL SetSelectionCharFormat(CHARFORMAT& cf)
7509 ATLASSERT(::IsWindow(m_hWnd));
7510 cf.cbSize =
sizeof(CHARFORMAT);
7511 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
7514 BOOL SetWordCharFormat(CHARFORMAT& cf)
7516 ATLASSERT(::IsWindow(m_hWnd));
7517 cf.cbSize =
sizeof(CHARFORMAT);
7518 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cf);
7521 DWORD SetEventMask(DWORD dwEventMask)
7523 ATLASSERT(::IsWindow(m_hWnd));
7524 return (DWORD)::SendMessage(m_hWnd, EM_SETEVENTMASK, 0, dwEventMask);
7527 BOOL SetParaFormat(PARAFORMAT& pf)
7529 ATLASSERT(::IsWindow(m_hWnd));
7530 pf.cbSize =
sizeof(PARAFORMAT);
7531 return (BOOL)::SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
7534 BOOL SetTargetDevice(HDC hDC,
int cxLineWidth)
7536 ATLASSERT(::IsWindow(m_hWnd));
7537 return (BOOL)::SendMessage(m_hWnd, EM_SETTARGETDEVICE, (WPARAM)hDC, cxLineWidth);
7540 int GetTextLength()
const 7542 ATLASSERT(::IsWindow(m_hWnd));
7543 return (
int)::SendMessage(m_hWnd, WM_GETTEXTLENGTH, 0, 0L);
7546 BOOL SetReadOnly(BOOL bReadOnly = TRUE)
7548 ATLASSERT(::IsWindow(m_hWnd));
7549 return (BOOL)::SendMessage(m_hWnd, EM_SETREADONLY, bReadOnly, 0L);
7552 int GetFirstVisibleLine()
const 7554 ATLASSERT(::IsWindow(m_hWnd));
7555 return (
int)::SendMessage(m_hWnd, EM_GETFIRSTVISIBLELINE, 0, 0L);
7558 EDITWORDBREAKPROCEX GetWordBreakProcEx()
const 7560 ATLASSERT(::IsWindow(m_hWnd));
7561 return (EDITWORDBREAKPROCEX)::SendMessage(m_hWnd, EM_GETWORDBREAKPROCEX, 0, 0L);
7564 EDITWORDBREAKPROCEX SetWordBreakProcEx(EDITWORDBREAKPROCEX pfnEditWordBreakProcEx)
7566 ATLASSERT(::IsWindow(m_hWnd));
7567 return (EDITWORDBREAKPROCEX)::SendMessage(m_hWnd, EM_SETWORDBREAKPROCEX, 0, (LPARAM)pfnEditWordBreakProcEx);
7570 int GetTextRange(TEXTRANGE* pTextRange)
const 7572 ATLASSERT(::IsWindow(m_hWnd));
7573 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)pTextRange);
7576 #if (_RICHEDIT_VER >= 0x0200) 7577 int GetTextRange(LONG nStartChar, LONG nEndChar, LPTSTR lpstrText)
const 7579 ATLASSERT(::IsWindow(m_hWnd));
7580 TEXTRANGE tr = { 0 };
7581 tr.chrg.cpMin = nStartChar;
7582 tr.chrg.cpMax = nEndChar;
7583 tr.lpstrText = lpstrText;
7584 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
7586 #else // !(_RICHEDIT_VER >= 0x0200) 7588 int GetTextRange(LONG nStartChar, LONG nEndChar, LPSTR lpstrText)
const 7590 ATLASSERT(::IsWindow(m_hWnd));
7591 TEXTRANGE tr = { 0 };
7592 tr.chrg.cpMin = nStartChar;
7593 tr.chrg.cpMax = nEndChar;
7594 tr.lpstrText = lpstrText;
7595 return (
int)::SendMessage(m_hWnd, EM_GETTEXTRANGE, 0, (LPARAM)&tr);
7597 #endif // !(_RICHEDIT_VER >= 0x0200) 7599 #if (_RICHEDIT_VER >= 0x0200) 7600 DWORD GetDefaultCharFormat(CHARFORMAT2& cf)
const 7602 ATLASSERT(::IsWindow(m_hWnd));
7603 cf.cbSize =
sizeof(CHARFORMAT2);
7604 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 0, (LPARAM)&cf);
7607 BOOL SetCharFormat(CHARFORMAT2& cf, WORD wFlags)
7609 ATLASSERT(::IsWindow(m_hWnd));
7610 cf.cbSize =
sizeof(CHARFORMAT2);
7611 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, (WPARAM)wFlags, (LPARAM)&cf);
7614 BOOL SetDefaultCharFormat(CHARFORMAT2& cf)
7616 ATLASSERT(::IsWindow(m_hWnd));
7617 cf.cbSize =
sizeof(CHARFORMAT2);
7618 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, 0, (LPARAM)&cf);
7621 DWORD GetSelectionCharFormat(CHARFORMAT2& cf)
const 7623 ATLASSERT(::IsWindow(m_hWnd));
7624 cf.cbSize =
sizeof(CHARFORMAT2);
7625 return (DWORD)::SendMessage(m_hWnd, EM_GETCHARFORMAT, 1, (LPARAM)&cf);
7628 BOOL SetSelectionCharFormat(CHARFORMAT2& cf)
7630 ATLASSERT(::IsWindow(m_hWnd));
7631 cf.cbSize =
sizeof(CHARFORMAT2);
7632 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf);
7635 BOOL SetWordCharFormat(CHARFORMAT2& cf)
7637 ATLASSERT(::IsWindow(m_hWnd));
7638 cf.cbSize =
sizeof(CHARFORMAT2);
7639 return (BOOL)::SendMessage(m_hWnd, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cf);
7642 DWORD GetParaFormat(PARAFORMAT2& pf)
const 7644 ATLASSERT(::IsWindow(m_hWnd));
7645 pf.cbSize =
sizeof(PARAFORMAT2);
7646 return (DWORD)::SendMessage(m_hWnd, EM_GETPARAFORMAT, 0, (LPARAM)&pf);
7649 BOOL SetParaFormat(PARAFORMAT2& pf)
7651 ATLASSERT(::IsWindow(m_hWnd));
7652 pf.cbSize =
sizeof(PARAFORMAT2);
7653 return (BOOL)::SendMessage(m_hWnd, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
7656 TEXTMODE GetTextMode()
const 7658 ATLASSERT(::IsWindow(m_hWnd));
7659 return (TEXTMODE)::SendMessage(m_hWnd, EM_GETTEXTMODE, 0, 0L);
7662 BOOL SetTextMode(TEXTMODE enumTextMode)
7664 ATLASSERT(::IsWindow(m_hWnd));
7665 return !(BOOL)::SendMessage(m_hWnd, EM_SETTEXTMODE, enumTextMode, 0L);
7668 UNDONAMEID GetUndoName()
const 7670 ATLASSERT(::IsWindow(m_hWnd));
7671 return (UNDONAMEID)::SendMessage(m_hWnd, EM_GETUNDONAME, 0, 0L);
7674 UNDONAMEID GetRedoName()
const 7676 ATLASSERT(::IsWindow(m_hWnd));
7677 return (UNDONAMEID)::SendMessage(m_hWnd, EM_GETREDONAME, 0, 0L);
7680 BOOL CanRedo()
const 7682 ATLASSERT(::IsWindow(m_hWnd));
7683 return (BOOL)::SendMessage(m_hWnd, EM_CANREDO, 0, 0L);
7686 BOOL GetAutoURLDetect()
const 7688 ATLASSERT(::IsWindow(m_hWnd));
7689 return (BOOL)::SendMessage(m_hWnd, EM_GETAUTOURLDETECT, 0, 0L);
7692 BOOL SetAutoURLDetect(BOOL bAutoDetect = TRUE)
7694 ATLASSERT(::IsWindow(m_hWnd));
7695 return !(BOOL)::SendMessage(m_hWnd, EM_AUTOURLDETECT, bAutoDetect, 0L);
7699 BOOL EnableAutoURLDetect(BOOL bEnable = TRUE) {
return SetAutoURLDetect(bEnable); }
7701 UINT SetUndoLimit(UINT uUndoLimit)
7703 ATLASSERT(::IsWindow(m_hWnd));
7704 return (UINT)::SendMessage(m_hWnd, EM_SETUNDOLIMIT, uUndoLimit, 0L);
7707 void SetPalette(HPALETTE hPalette)
7709 ATLASSERT(::IsWindow(m_hWnd));
7710 ::SendMessage(m_hWnd, EM_SETPALETTE, (WPARAM)hPalette, 0L);
7713 int GetTextEx(GETTEXTEX* pGetTextEx, LPTSTR lpstrText)
const 7715 ATLASSERT(::IsWindow(m_hWnd));
7716 return (
int)::SendMessage(m_hWnd, EM_GETTEXTEX, (WPARAM)pGetTextEx, (LPARAM)lpstrText);
7719 int GetTextEx(LPTSTR lpstrText,
int nTextLen, DWORD dwFlags = GT_DEFAULT, UINT uCodePage = CP_ACP, LPCSTR lpDefaultChar = NULL, LPBOOL lpUsedDefChar = NULL)
const 7721 ATLASSERT(::IsWindow(m_hWnd));
7722 GETTEXTEX gte = { 0 };
7723 gte.cb = nTextLen *
sizeof(TCHAR);
7724 gte.codepage = uCodePage;
7725 gte.flags = dwFlags;
7726 gte.lpDefaultChar = lpDefaultChar;
7727 gte.lpUsedDefChar = lpUsedDefChar;
7728 return (
int)::SendMessage(m_hWnd, EM_GETTEXTEX, (WPARAM)>e, (LPARAM)lpstrText);
7731 int GetTextLengthEx(GETTEXTLENGTHEX* pGetTextLengthEx)
const 7733 ATLASSERT(::IsWindow(m_hWnd));
7734 return (
int)::SendMessage(m_hWnd, EM_GETTEXTLENGTHEX, (WPARAM)pGetTextLengthEx, 0L);
7737 int GetTextLengthEx(DWORD dwFlags = GTL_DEFAULT, UINT uCodePage = CP_ACP)
const 7739 ATLASSERT(::IsWindow(m_hWnd));
7740 GETTEXTLENGTHEX gtle = { 0 };
7741 gtle.codepage = uCodePage;
7742 gtle.flags = dwFlags;
7743 return (
int)::SendMessage(m_hWnd, EM_GETTEXTLENGTHEX, (WPARAM)>le, 0L);
7745 #endif // (_RICHEDIT_VER >= 0x0200) 7747 #if (_RICHEDIT_VER >= 0x0300) 7748 int SetTextEx(SETTEXTEX* pSetTextEx, LPCTSTR lpstrText)
7750 ATLASSERT(::IsWindow(m_hWnd));
7751 return (
int)::SendMessage(m_hWnd, EM_SETTEXTEX, (WPARAM)pSetTextEx, (LPARAM)lpstrText);
7754 int SetTextEx(LPCTSTR lpstrText, DWORD dwFlags = ST_DEFAULT, UINT uCodePage = CP_ACP)
7756 ATLASSERT(::IsWindow(m_hWnd));
7757 SETTEXTEX ste = { 0 };
7758 ste.flags = dwFlags;
7759 ste.codepage = uCodePage;
7760 return (
int)::SendMessage(m_hWnd, EM_SETTEXTEX, (WPARAM)&ste, (LPARAM)lpstrText);
7763 int GetEditStyle()
const 7765 ATLASSERT(::IsWindow(m_hWnd));
7766 return (
int)::SendMessage(m_hWnd, EM_GETEDITSTYLE, 0, 0L);
7769 int SetEditStyle(
int nStyle,
int nMask = -1)
7771 ATLASSERT(::IsWindow(m_hWnd));
7774 return (
int)::SendMessage(m_hWnd, EM_SETEDITSTYLE, nStyle, nMask);
7777 BOOL SetFontSize(
int nFontSizeDelta)
7779 ATLASSERT(::IsWindow(m_hWnd));
7780 ATLASSERT(nFontSizeDelta >= -1637 && nFontSizeDelta <= 1638);
7781 return (BOOL)::SendMessage(m_hWnd, EM_SETFONTSIZE, nFontSizeDelta, 0L);
7784 void GetScrollPos(LPPOINT lpPoint)
const 7786 ATLASSERT(::IsWindow(m_hWnd));
7787 ATLASSERT(lpPoint != NULL);
7788 ::SendMessage(m_hWnd, EM_GETSCROLLPOS, 0, (LPARAM)lpPoint);
7791 void SetScrollPos(LPPOINT lpPoint)
7793 ATLASSERT(::IsWindow(m_hWnd));
7794 ATLASSERT(lpPoint != NULL);
7795 ::SendMessage(m_hWnd, EM_SETSCROLLPOS, 0, (LPARAM)lpPoint);
7798 BOOL GetZoom(
int& nNum,
int& nDen)
const 7800 ATLASSERT(::IsWindow(m_hWnd));
7801 return (BOOL)::SendMessage(m_hWnd, EM_GETZOOM, (WPARAM)&nNum, (LPARAM)&nDen);
7804 BOOL SetZoom(
int nNum,
int nDen)
7806 ATLASSERT(::IsWindow(m_hWnd));
7807 ATLASSERT(nNum >= 0 && nNum <= 64);
7808 ATLASSERT(nDen >= 0 && nDen <= 64);
7809 return (BOOL)::SendMessage(m_hWnd, EM_SETZOOM, nNum, nDen);
7814 ATLASSERT(::IsWindow(m_hWnd));
7815 return (BOOL)::SendMessage(m_hWnd, EM_SETZOOM, 0, 0L);
7817 #endif // (_RICHEDIT_VER >= 0x0300) 7820 void LimitText(LONG nChars = 0)
7822 ATLASSERT(::IsWindow(m_hWnd));
7823 ::SendMessage(m_hWnd, EM_EXLIMITTEXT, 0, nChars);
7826 int LineFromChar(LONG nIndex)
const 7828 ATLASSERT(::IsWindow(m_hWnd));
7829 return (
int)::SendMessage(m_hWnd, EM_EXLINEFROMCHAR, 0, nIndex);
7832 POINT PosFromChar(LONG nChar)
const 7834 ATLASSERT(::IsWindow(m_hWnd));
7835 POINT point = { 0, 0 };
7836 ::SendMessage(m_hWnd, EM_POSFROMCHAR, (WPARAM)&point, nChar);
7840 int CharFromPos(POINT pt)
const 7842 ATLASSERT(::IsWindow(m_hWnd));
7843 POINTL ptl = { pt.x, pt.y };
7844 return (
int)::SendMessage(m_hWnd, EM_CHARFROMPOS, 0, (LPARAM)&ptl);
7847 void EmptyUndoBuffer()
7849 ATLASSERT(::IsWindow(m_hWnd));
7850 ::SendMessage(m_hWnd, EM_EMPTYUNDOBUFFER, 0, 0L);
7853 int LineIndex(
int nLine = -1)
const 7855 ATLASSERT(::IsWindow(m_hWnd));
7856 return (
int)::SendMessage(m_hWnd, EM_LINEINDEX, nLine, 0L);
7859 int LineLength(
int nLine = -1)
const 7861 ATLASSERT(::IsWindow(m_hWnd));
7862 return (
int)::SendMessage(m_hWnd, EM_LINELENGTH, nLine, 0L);
7865 BOOL LineScroll(
int nLines,
int nChars = 0)
7867 ATLASSERT(::IsWindow(m_hWnd));
7868 return (BOOL)::SendMessage(m_hWnd, EM_LINESCROLL, nChars, nLines);
7871 void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE)
7873 ATLASSERT(::IsWindow(m_hWnd));
7874 ::SendMessage(m_hWnd, EM_REPLACESEL, (WPARAM) bCanUndo, (LPARAM)lpszNewText);
7877 void SetRect(LPCRECT lpRect)
7879 ATLASSERT(::IsWindow(m_hWnd));
7880 ::SendMessage(m_hWnd, EM_SETRECT, 0, (LPARAM)lpRect);
7883 BOOL DisplayBand(LPRECT pDisplayRect)
7885 ATLASSERT(::IsWindow(m_hWnd));
7886 return (BOOL)::SendMessage(m_hWnd, EM_DISPLAYBAND, 0, (LPARAM)pDisplayRect);
7889 LONG FindText(DWORD dwFlags, FINDTEXT& ft)
const 7891 ATLASSERT(::IsWindow(m_hWnd));
7892 #if (_RICHEDIT_VER >= 0x0200) && defined(_UNICODE) 7893 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTW, dwFlags, (LPARAM)&ft);
7895 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXT, dwFlags, (LPARAM)&ft);
7899 LONG FindText(DWORD dwFlags, FINDTEXTEX& ft)
const 7901 ATLASSERT(::IsWindow(m_hWnd));
7902 #if (_RICHEDIT_VER >= 0x0200) && defined(_UNICODE) 7903 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTEXW, dwFlags, (LPARAM)&ft);
7905 return (LONG)::SendMessage(m_hWnd, EM_FINDTEXTEX, dwFlags, (LPARAM)&ft);
7909 LONG FormatRange(FORMATRANGE& fr, BOOL bDisplay = TRUE)
7911 ATLASSERT(::IsWindow(m_hWnd));
7912 return (LONG)::SendMessage(m_hWnd, EM_FORMATRANGE, bDisplay, (LPARAM)&fr);
7915 LONG FormatRange(FORMATRANGE* pFormatRange, BOOL bDisplay = TRUE)
7917 ATLASSERT(::IsWindow(m_hWnd));
7918 return (LONG)::SendMessage(m_hWnd, EM_FORMATRANGE, bDisplay, (LPARAM)pFormatRange);
7921 void HideSelection(BOOL bHide = TRUE, BOOL bChangeStyle = FALSE)
7923 ATLASSERT(::IsWindow(m_hWnd));
7924 ::SendMessage(m_hWnd, EM_HIDESELECTION, bHide, bChangeStyle);
7927 void PasteSpecial(UINT uClipFormat, DWORD dwAspect = 0, HMETAFILE hMF = 0)
7929 ATLASSERT(::IsWindow(m_hWnd));
7930 REPASTESPECIAL reps = { dwAspect, (DWORD_PTR)hMF };
7931 ::SendMessage(m_hWnd, EM_PASTESPECIAL, uClipFormat, (LPARAM)&reps);
7934 void RequestResize()
7936 ATLASSERT(::IsWindow(m_hWnd));
7937 ::SendMessage(m_hWnd, EM_REQUESTRESIZE, 0, 0L);
7940 LONG StreamIn(UINT uFormat, EDITSTREAM& es)
7942 ATLASSERT(::IsWindow(m_hWnd));
7943 return (LONG)::SendMessage(m_hWnd, EM_STREAMIN, uFormat, (LPARAM)&es);
7946 LONG StreamOut(UINT uFormat, EDITSTREAM& es)
7948 ATLASSERT(::IsWindow(m_hWnd));
7949 return (LONG)::SendMessage(m_hWnd, EM_STREAMOUT, uFormat, (LPARAM)&es);
7952 DWORD FindWordBreak(
int nCode, LONG nStartChar)
7954 ATLASSERT(::IsWindow(m_hWnd));
7955 return (DWORD)::SendMessage(m_hWnd, EM_FINDWORDBREAK, nCode, nStartChar);
7961 ATLASSERT(::IsWindow(m_hWnd));
7962 ::SendMessage(m_hWnd, EM_SCROLLCARET, 0, 0L);
7965 int InsertText(
long nInsertAfterChar, LPCTSTR lpstrText, BOOL bCanUndo = FALSE)
7967 int nRet = SetSel(nInsertAfterChar, nInsertAfterChar);
7968 ReplaceSel(lpstrText, bCanUndo);
7972 int AppendText(LPCTSTR lpstrText, BOOL bCanUndo = FALSE)
7974 return InsertText(GetWindowTextLength(), lpstrText, bCanUndo);
7980 ATLASSERT(::IsWindow(m_hWnd));
7981 return (BOOL)::SendMessage(m_hWnd, EM_UNDO, 0, 0L);
7986 ATLASSERT(::IsWindow(m_hWnd));
7987 ::SendMessage(m_hWnd, WM_CLEAR, 0, 0L);
7992 ATLASSERT(::IsWindow(m_hWnd));
7993 ::SendMessage(m_hWnd, WM_COPY, 0, 0L);
7998 ATLASSERT(::IsWindow(m_hWnd));
7999 ::SendMessage(m_hWnd, WM_CUT, 0, 0L);
8004 ATLASSERT(::IsWindow(m_hWnd));
8005 ::SendMessage(m_hWnd, WM_PASTE, 0, 0L);
8009 IRichEditOle* GetOleInterface()
const 8011 ATLASSERT(::IsWindow(m_hWnd));
8012 IRichEditOle *pRichEditOle = NULL;
8013 ::SendMessage(m_hWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pRichEditOle);
8014 return pRichEditOle;
8017 BOOL SetOleCallback(IRichEditOleCallback* pCallback)
8019 ATLASSERT(::IsWindow(m_hWnd));
8020 return (BOOL)::SendMessage(m_hWnd, EM_SETOLECALLBACK, 0, (LPARAM)pCallback);
8023 #if (_RICHEDIT_VER >= 0x0200) 8026 ATLASSERT(::IsWindow(m_hWnd));
8027 return (BOOL)::SendMessage(m_hWnd, EM_REDO, 0, 0L);
8030 void StopGroupTyping()
8032 ATLASSERT(::IsWindow(m_hWnd));
8033 ::SendMessage(m_hWnd, EM_STOPGROUPTYPING, 0, 0L);
8036 void ShowScrollBar(
int nBarType, BOOL bVisible = TRUE)
8038 ATLASSERT(::IsWindow(m_hWnd));
8039 ::SendMessage(m_hWnd, EM_SHOWSCROLLBAR, nBarType, bVisible);
8041 #endif // (_RICHEDIT_VER >= 0x0200) 8043 #if (_RICHEDIT_VER >= 0x0300) 8044 BOOL SetTabStops(
int nTabStops, LPINT rgTabStops)
8046 ATLASSERT(::IsWindow(m_hWnd));
8047 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, nTabStops, (LPARAM)rgTabStops);
8052 ATLASSERT(::IsWindow(m_hWnd));
8053 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 0, 0L);
8056 BOOL SetTabStops(
const int& cxEachStop)
8058 ATLASSERT(::IsWindow(m_hWnd));
8059 return (BOOL)::SendMessage(m_hWnd, EM_SETTABSTOPS, 1, (LPARAM)(LPINT)&cxEachStop);
8061 #endif // (_RICHEDIT_VER >= 0x0300) 8066 #endif // !_WIN32_WCE 8100 #if (_RICHEDIT_VER >= 0x0200) 8101 COMMAND_ID_HANDLER(ID_EDIT_REDO, OnEditRedo)
8102 #endif // (_RICHEDIT_VER >= 0x0200) 8105 #if (_RICHEDIT_VER >= 0x0200) 8106 LRESULT OnEditRedo(WORD , WORD , HWND , BOOL& )
8108 T* pT =
static_cast<T*
>(
this);
8112 #endif // (_RICHEDIT_VER >= 0x0200) 8116 {
return HasSelection(); }
8118 BOOL CanCopy()
const 8119 {
return HasSelection(); }
8121 BOOL CanClear()
const 8122 {
return HasSelection(); }
8125 BOOL HasSelection()
const 8127 const T* pT =
static_cast<const T*
>(
this);
8128 return (pT->GetSelectionType() != SEL_EMPTY);
8132 #endif // _WIN32_WCE 8140 template <
class TBase>
8154 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8155 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8158 HWND hWnd = TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8167 ATLASSERT(::IsWindow(m_hWnd));
8168 ATLASSERT((GetStyle() & (LBS_MULTIPLESEL | LBS_EXTENDEDSEL)) == 0);
8169 return ::MakeDragList(m_hWnd);
8172 int LBItemFromPt(POINT pt, BOOL bAutoScroll = TRUE)
8174 ATLASSERT(::IsWindow(m_hWnd));
8175 return ::LBItemFromPt(m_hWnd, pt, bAutoScroll);
8178 void DrawInsert(
int nItem)
8180 ATLASSERT(::IsWindow(m_hWnd));
8181 ::DrawInsert(GetParent(), m_hWnd, nItem);
8184 static UINT GetDragListMessage()
8186 static UINT uDragListMessage = 0;
8187 if(uDragListMessage == 0)
8190 if(FAILED(lock.Lock()))
8192 ATLTRACE2(atlTraceUI, 0, _T(
"ERROR : Unable to lock critical section in CDragListBox::GetDragListMessage.\n"));
8197 if(uDragListMessage == 0)
8198 uDragListMessage = ::RegisterWindowMessage(DRAGLISTMSGSTRING);
8202 ATLASSERT(uDragListMessage != 0);
8203 return uDragListMessage;
8214 MESSAGE_HANDLER(CDragListBox::GetDragListMessage(), OnDragListNotify)
8217 LRESULT OnDragListNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
8220 ATLASSERT(uMsg == CDragListBox::GetDragListMessage());
8221 T* pT =
static_cast<T*
>(
this);
8222 LPDRAGLISTINFO lpDragListInfo = (LPDRAGLISTINFO)lParam;
8224 switch(lpDragListInfo->uNotification)
8227 lRet = (LPARAM)pT->OnBeginDrag((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8230 pT->OnCancelDrag((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8233 lRet = (LPARAM)pT->OnDragging((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8236 pT->OnDropped((
int)wParam, lpDragListInfo->hWnd, lpDragListInfo->ptCursor);
8239 ATLTRACE2(atlTraceUI, 0, _T(
"Unknown DragListBox notification\n"));
8247 BOOL OnBeginDrag(
int , HWND , POINT )
8252 void OnCancelDrag(
int , HWND , POINT )
8257 int OnDragging(
int , HWND , POINT )
8262 void OnDropped(
int , HWND , POINT )
8268 #endif // _WIN32_WCE 8274 template <
class TBase>
8288 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8289 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8292 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8296 static LPCTSTR GetWndClassName()
8298 return REBARCLASSNAME;
8301 UINT GetBandCount()
const 8303 ATLASSERT(::IsWindow(m_hWnd));
8304 return (UINT)::SendMessage(m_hWnd, RB_GETBANDCOUNT, 0, 0L);
8307 BOOL GetBandInfo(
int nBand, LPREBARBANDINFO lprbbi)
const 8309 ATLASSERT(::IsWindow(m_hWnd));
8310 return (BOOL)::SendMessage(m_hWnd, RB_GETBANDINFO, nBand, (LPARAM)lprbbi);
8313 BOOL SetBandInfo(
int nBand, LPREBARBANDINFO lprbbi)
8315 ATLASSERT(::IsWindow(m_hWnd));
8316 return (BOOL)::SendMessage(m_hWnd, RB_SETBANDINFO, nBand, (LPARAM)lprbbi);
8319 BOOL GetBarInfo(LPREBARINFO lprbi)
const 8321 ATLASSERT(::IsWindow(m_hWnd));
8322 return (BOOL)::SendMessage(m_hWnd, RB_GETBARINFO, 0, (LPARAM)lprbi);
8325 BOOL SetBarInfo(LPREBARINFO lprbi)
8327 ATLASSERT(::IsWindow(m_hWnd));
8328 return (BOOL)::SendMessage(m_hWnd, RB_SETBARINFO, 0, (LPARAM)lprbi);
8333 ATLASSERT(::IsWindow(m_hWnd));
8334 REBARINFO rbi = { 0 };
8335 rbi.cbSize =
sizeof(REBARINFO);
8336 rbi.fMask = RBIM_IMAGELIST;
8337 BOOL bRet = (BOOL)::SendMessage(m_hWnd, RB_GETBARINFO, 0, (LPARAM)&rbi);
8338 return CImageList((bRet != FALSE) ? rbi.himl : NULL);
8341 BOOL SetImageList(HIMAGELIST hImageList)
8343 ATLASSERT(::IsWindow(m_hWnd));
8344 REBARINFO rbi = { 0 };
8345 rbi.cbSize =
sizeof(REBARINFO);
8346 rbi.fMask = RBIM_IMAGELIST;
8347 rbi.himl = hImageList;
8348 return (BOOL)::SendMessage(m_hWnd, RB_SETBARINFO, 0, (LPARAM)&rbi);
8351 UINT GetRowCount()
const 8353 ATLASSERT(::IsWindow(m_hWnd));
8354 return (UINT)::SendMessage(m_hWnd, RB_GETROWCOUNT, 0, 0L);
8357 UINT GetRowHeight(
int nBand)
const 8359 ATLASSERT(::IsWindow(m_hWnd));
8360 return (UINT)::SendMessage(m_hWnd, RB_GETROWHEIGHT, nBand, 0L);
8363 #if (_WIN32_IE >= 0x0400) 8364 COLORREF GetTextColor()
const 8366 ATLASSERT(::IsWindow(m_hWnd));
8367 return (COLORREF)::SendMessage(m_hWnd, RB_GETTEXTCOLOR, 0, 0L);
8370 COLORREF SetTextColor(COLORREF clr)
8372 ATLASSERT(::IsWindow(m_hWnd));
8373 return (COLORREF)::SendMessage(m_hWnd, RB_SETTEXTCOLOR, 0, (LPARAM)clr);
8376 COLORREF GetBkColor()
const 8378 ATLASSERT(::IsWindow(m_hWnd));
8379 return (COLORREF)::SendMessage(m_hWnd, RB_GETBKCOLOR, 0, 0L);
8382 COLORREF SetBkColor(COLORREF clr)
8384 ATLASSERT(::IsWindow(m_hWnd));
8385 return (COLORREF)::SendMessage(m_hWnd, RB_SETBKCOLOR, 0, (LPARAM)clr);
8388 UINT GetBarHeight()
const 8390 ATLASSERT(::IsWindow(m_hWnd));
8391 return (UINT)::SendMessage(m_hWnd, RB_GETBARHEIGHT, 0, 0L);
8394 BOOL GetRect(
int nBand, LPRECT lpRect)
const 8396 ATLASSERT(::IsWindow(m_hWnd));
8397 return (BOOL)::SendMessage(m_hWnd, RB_GETRECT, nBand, (LPARAM)lpRect);
8401 CToolTipCtrl GetToolTips()
const 8403 ATLASSERT(::IsWindow(m_hWnd));
8404 return CToolTipCtrl((HWND)::SendMessage(m_hWnd, RB_GETTOOLTIPS, 0, 0L));
8407 void SetToolTips(HWND hwndToolTip)
8409 ATLASSERT(::IsWindow(m_hWnd));
8410 ::SendMessage(m_hWnd, RB_SETTOOLTIPS, (WPARAM)hwndToolTip, 0L);
8412 #endif // !_WIN32_WCE 8414 void GetBandBorders(
int nBand, LPRECT lpRect)
const 8416 ATLASSERT(::IsWindow(m_hWnd));
8417 ATLASSERT(lpRect != NULL);
8418 ::SendMessage(m_hWnd, RB_GETBANDBORDERS, nBand, (LPARAM)lpRect);
8422 BOOL GetColorScheme(LPCOLORSCHEME lpColorScheme)
const 8424 ATLASSERT(::IsWindow(m_hWnd));
8425 ATLASSERT(lpColorScheme != NULL);
8426 return (BOOL)::SendMessage(m_hWnd, RB_GETCOLORSCHEME, 0, (LPARAM)lpColorScheme);
8429 void SetColorScheme(LPCOLORSCHEME lpColorScheme)
8431 ATLASSERT(::IsWindow(m_hWnd));
8432 ATLASSERT(lpColorScheme != NULL);
8433 ::SendMessage(m_hWnd, RB_SETCOLORSCHEME, 0, (LPARAM)lpColorScheme);
8436 HPALETTE GetPalette()
const 8438 ATLASSERT(::IsWindow(m_hWnd));
8439 return (HPALETTE)::SendMessage(m_hWnd, RB_GETPALETTE, 0, 0L);
8442 HPALETTE SetPalette(HPALETTE hPalette)
8444 ATLASSERT(::IsWindow(m_hWnd));
8445 return (HPALETTE)::SendMessage(m_hWnd, RB_SETPALETTE, 0, (LPARAM)hPalette);
8448 BOOL GetUnicodeFormat()
const 8450 ATLASSERT(::IsWindow(m_hWnd));
8451 return (BOOL)::SendMessage(m_hWnd, RB_GETUNICODEFORMAT, 0, 0L);
8454 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
8456 ATLASSERT(::IsWindow(m_hWnd));
8457 return (BOOL)::SendMessage(m_hWnd, RB_SETUNICODEFORMAT, bUnicode, 0L);
8459 #endif // !_WIN32_WCE 8460 #endif // (_WIN32_IE >= 0x0400) 8462 #if (_WIN32_WINNT >= 0x0501) 8465 typedef struct _MARGINS* PMARGINS;
8466 #endif // !_UXTHEME_H_ 8467 void GetBandMargins(PMARGINS pMargins)
const 8469 ATLASSERT(::IsWindow(m_hWnd));
8470 ::SendMessage(m_hWnd, RB_GETBANDMARGINS, 0, (LPARAM)pMargins);
8473 void SetWindowTheme(LPCWSTR lpstrTheme)
8475 ATLASSERT(::IsWindow(m_hWnd));
8476 ::SendMessage(m_hWnd, RB_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
8478 #endif // (_WIN32_WINNT >= 0x0501) 8480 #if (_WIN32_IE >= 0x0600) 8481 DWORD GetExtendedStyle()
const 8483 ATLASSERT(::IsWindow(m_hWnd));
8484 return (DWORD)::SendMessage(m_hWnd, RB_GETEXTENDEDSTYLE, 0, 0L);
8487 DWORD SetExtendedStyle(DWORD dwStyle, DWORD dwMask)
8489 ATLASSERT(::IsWindow(m_hWnd));
8490 return (DWORD)::SendMessage(m_hWnd, RB_SETEXTENDEDSTYLE, dwMask, dwStyle);
8492 #endif // (_WIN32_IE >= 0x0600) 8495 BOOL InsertBand(
int nBand, LPREBARBANDINFO lprbbi)
8497 ATLASSERT(::IsWindow(m_hWnd));
8498 return (BOOL)::SendMessage(m_hWnd, RB_INSERTBAND, nBand, (LPARAM)lprbbi);
8501 BOOL AddBand(LPREBARBANDINFO lprbbi)
8503 return InsertBand(-1, lprbbi);
8506 BOOL DeleteBand(
int nBand)
8508 ATLASSERT(::IsWindow(m_hWnd));
8509 return (BOOL)::SendMessage(m_hWnd, RB_DELETEBAND, nBand, 0L);
8512 ATL::CWindow SetNotifyWnd(HWND hWnd)
8514 ATLASSERT(::IsWindow(m_hWnd));
8515 return ATL::CWindow((HWND)::SendMessage(m_hWnd, RB_SETPARENT, (WPARAM)hWnd, 0L));
8518 #if (_WIN32_IE >= 0x0400) 8519 void BeginDrag(
int nBand, DWORD dwPos)
8521 ATLASSERT(::IsWindow(m_hWnd));
8522 ::SendMessage(m_hWnd, RB_BEGINDRAG, nBand, dwPos);
8525 void BeginDrag(
int nBand,
int xPos,
int yPos)
8527 ATLASSERT(::IsWindow(m_hWnd));
8528 ::SendMessage(m_hWnd, RB_BEGINDRAG, nBand, MAKELPARAM(xPos, yPos));
8533 ATLASSERT(::IsWindow(m_hWnd));
8534 ::SendMessage(m_hWnd, RB_ENDDRAG, 0, 0L);
8537 void DragMove(DWORD dwPos)
8539 ATLASSERT(::IsWindow(m_hWnd));
8540 ::SendMessage(m_hWnd, RB_DRAGMOVE, 0, dwPos);
8543 void DragMove(
int xPos,
int yPos)
8545 ATLASSERT(::IsWindow(m_hWnd));
8546 ::SendMessage(m_hWnd, RB_DRAGMOVE, 0, MAKELPARAM(xPos, yPos));
8550 void GetDropTarget(IDropTarget** ppDropTarget)
const 8552 ATLASSERT(::IsWindow(m_hWnd));
8553 ::SendMessage(m_hWnd, RB_GETDROPTARGET, 0, (LPARAM)ppDropTarget);
8555 #endif // !_WIN32_WCE 8557 void MaximizeBand(
int nBand, BOOL bIdeal = FALSE)
8559 ATLASSERT(::IsWindow(m_hWnd));
8560 ::SendMessage(m_hWnd, RB_MAXIMIZEBAND, nBand, bIdeal);
8563 void MinimizeBand(
int nBand)
8565 ATLASSERT(::IsWindow(m_hWnd));
8566 ::SendMessage(m_hWnd, RB_MINIMIZEBAND, nBand, 0L);
8569 BOOL SizeToRect(LPRECT lpRect)
8571 ATLASSERT(::IsWindow(m_hWnd));
8572 return (BOOL)::SendMessage(m_hWnd, RB_SIZETORECT, 0, (LPARAM)lpRect);
8575 int IdToIndex(UINT uBandID)
const 8577 ATLASSERT(::IsWindow(m_hWnd));
8578 return (
int)::SendMessage(m_hWnd, RB_IDTOINDEX, uBandID, 0L);
8581 int HitTest(LPRBHITTESTINFO lprbht)
const 8583 ATLASSERT(::IsWindow(m_hWnd));
8584 return (
int)::SendMessage(m_hWnd, RB_HITTEST, 0, (LPARAM)lprbht);
8587 BOOL ShowBand(
int nBand, BOOL bShow)
8589 ATLASSERT(::IsWindow(m_hWnd));
8590 return (BOOL)::SendMessage(m_hWnd, RB_SHOWBAND, nBand, bShow);
8594 BOOL MoveBand(
int nBand,
int nNewPos)
8596 ATLASSERT(::IsWindow(m_hWnd));
8597 ATLASSERT(nNewPos >= 0 && nNewPos <= ((
int)GetBandCount() - 1));
8598 return (BOOL)::SendMessage(m_hWnd, RB_MOVEBAND, nBand, nNewPos);
8600 #endif // !_WIN32_WCE 8601 #endif // (_WIN32_IE >= 0x0400) 8603 #if (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 8604 void PushChevron(
int nBand, LPARAM lAppValue)
8606 ATLASSERT(::IsWindow(m_hWnd));
8607 ::SendMessage(m_hWnd, RB_PUSHCHEVRON, nBand, lAppValue);
8609 #endif // (_WIN32_IE >= 0x0500) && !defined(_WIN32_WCE) 8612 #if (_WIN32_IE >= 0x0400) 8613 void LockBands(
bool bLock)
8615 int nBandCount = GetBandCount();
8616 for(
int i =0; i < nBandCount; i++)
8618 REBARBANDINFO rbbi = { RunTimeHelper::SizeOf_REBARBANDINFO() };
8619 rbbi.fMask = RBBIM_STYLE;
8620 BOOL bRet = GetBandInfo(i, &rbbi);
8623 if((rbbi.fStyle & RBBS_GRIPPERALWAYS) == 0)
8625 rbbi.fStyle |= RBBS_GRIPPERALWAYS;
8626 bRet = SetBandInfo(i, &rbbi);
8628 rbbi.fStyle &= ~RBBS_GRIPPERALWAYS;
8632 rbbi.fStyle |= RBBS_NOGRIPPER;
8634 rbbi.fStyle &= ~RBBS_NOGRIPPER;
8636 bRet = SetBandInfo(i, &rbbi);
8640 #endif // (_WIN32_IE >= 0x0400) 8642 #if (_WIN32_WINNT >= 0x0600) 8643 BOOL SetBandWidth(
int nBand,
int cxWidth)
8645 ATLASSERT(::IsWindow(m_hWnd));
8646 return (BOOL)::SendMessage(m_hWnd, RB_SETBANDWIDTH, nBand, cxWidth);
8648 #endif // (_WIN32_WINNT >= 0x0600) 8659 template <
class TBase>
8673 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8674 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8677 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8681 static LPCTSTR GetWndClassName()
8683 return WC_COMBOBOXEX;
8688 ATLASSERT(::IsWindow(m_hWnd));
8689 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, CBEM_GETIMAGELIST, 0, 0L));
8692 CImageList SetImageList(HIMAGELIST hImageList)
8694 ATLASSERT(::IsWindow(m_hWnd));
8695 return CImageList((HIMAGELIST)::SendMessage(m_hWnd, CBEM_SETIMAGELIST, 0, (LPARAM)hImageList));
8698 #if (_WIN32_IE >= 0x0400) 8699 DWORD GetExtendedStyle()
const 8701 ATLASSERT(::IsWindow(m_hWnd));
8702 return (DWORD)::SendMessage(m_hWnd, CBEM_GETEXTENDEDSTYLE, 0, 0L);
8705 DWORD SetExtendedStyle(DWORD dwExMask, DWORD dwExStyle)
8707 ATLASSERT(::IsWindow(m_hWnd));
8708 return (DWORD)::SendMessage(m_hWnd, CBEM_SETEXTENDEDSTYLE, dwExMask, dwExStyle);
8711 BOOL GetUnicodeFormat()
const 8713 ATLASSERT(::IsWindow(m_hWnd));
8714 return (BOOL)::SendMessage(m_hWnd, CBEM_GETUNICODEFORMAT, 0, 0L);
8717 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
8719 ATLASSERT(::IsWindow(m_hWnd));
8720 return (BOOL)::SendMessage(m_hWnd, CBEM_SETUNICODEFORMAT, bUnicode, 0L);
8722 #endif // (_WIN32_IE >= 0x0400) 8724 #if (_WIN32_WINNT >= 0x0501) 8725 void SetWindowTheme(LPCWSTR lpstrTheme)
8727 ATLASSERT(::IsWindow(m_hWnd));
8728 ::SendMessage(m_hWnd, CBEM_SETWINDOWTHEME, 0, (LPARAM)lpstrTheme);
8730 #endif // (_WIN32_WINNT >= 0x0501) 8733 int InsertItem(
const COMBOBOXEXITEM* lpcCBItem)
8735 ATLASSERT(::IsWindow(m_hWnd));
8736 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)lpcCBItem);
8739 int InsertItem(UINT nMask,
int nIndex, LPCTSTR lpszItem,
int nImage,
int nSelImage,
8740 int iIndent,
int iOverlay, LPARAM lParam)
8742 ATLASSERT(::IsWindow(m_hWnd));
8743 COMBOBOXEXITEM cbex = { 0 };
8745 cbex.iItem = nIndex;
8746 cbex.pszText = (LPTSTR) lpszItem;
8747 cbex.iImage = nImage;
8748 cbex.iSelectedImage = nSelImage;
8749 cbex.iIndent = iIndent;
8750 cbex.iOverlay = iOverlay;
8751 cbex.lParam = lParam;
8752 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)&cbex);
8755 int InsertItem(
int nIndex, LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent, LPARAM lParam = 0)
8757 ATLASSERT(::IsWindow(m_hWnd));
8758 COMBOBOXEXITEM cbex = { 0 };
8759 cbex.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE | CBEIF_INDENT | CBEIF_LPARAM;
8760 cbex.iItem = nIndex;
8761 cbex.pszText = (LPTSTR) lpszItem;
8762 cbex.iImage = nImage;
8763 cbex.iSelectedImage = nSelImage;
8764 cbex.iIndent = iIndent;
8765 cbex.lParam = lParam;
8766 return (
int)::SendMessage(m_hWnd, CBEM_INSERTITEM, 0, (LPARAM)&cbex);
8769 int AddItem(UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent,
int iOverlay, LPARAM lParam)
8771 return InsertItem(nMask, -1, lpszItem, nImage, nSelImage, iIndent, iOverlay, lParam);
8774 int AddItem(LPCTSTR lpszItem,
int nImage,
int nSelImage,
int iIndent, LPARAM lParam = 0)
8776 return InsertItem(-1, lpszItem, nImage, nSelImage, iIndent, lParam);
8779 int DeleteItem(
int nIndex)
8781 ATLASSERT(::IsWindow(m_hWnd));
8782 return (
int)::SendMessage(m_hWnd, CBEM_DELETEITEM, nIndex, 0L);
8785 BOOL GetItem(PCOMBOBOXEXITEM pCBItem)
const 8787 ATLASSERT(::IsWindow(m_hWnd));
8788 return (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)pCBItem);
8791 BOOL SetItem(
const COMBOBOXEXITEM* lpcCBItem)
8793 ATLASSERT(::IsWindow(m_hWnd));
8794 return (BOOL)::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM)lpcCBItem);
8797 int SetItem(
int nIndex, UINT nMask, LPCTSTR lpszItem,
int nImage,
int nSelImage,
8798 int iIndent,
int iOverlay, LPARAM lParam)
8800 ATLASSERT(::IsWindow(m_hWnd));
8801 COMBOBOXEXITEM cbex = { 0 };
8803 cbex.iItem = nIndex;
8804 cbex.pszText = (LPTSTR) lpszItem;
8805 cbex.iImage = nImage;
8806 cbex.iSelectedImage = nSelImage;
8807 cbex.iIndent = iIndent;
8808 cbex.iOverlay = iOverlay;
8809 cbex.lParam = lParam;
8810 return (
int)::SendMessage(m_hWnd, CBEM_SETITEM, 0, (LPARAM)&cbex);
8813 BOOL GetItemText(
int nIndex, LPTSTR lpszItem,
int nLen)
const 8815 ATLASSERT(::IsWindow(m_hWnd));
8816 ATLASSERT(lpszItem != NULL);
8818 COMBOBOXEXITEM cbex = { 0 };
8819 cbex.mask = CBEIF_TEXT;
8820 cbex.iItem = nIndex;
8821 cbex.pszText = lpszItem;
8822 cbex.cchTextMax = nLen;
8824 return (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
8828 BOOL GetItemText(
int nIndex, BSTR& bstrText)
const 8831 ATLASSERT(::IsWindow(m_hWnd));
8832 ATLASSERT(bstrText == NULL);
8834 COMBOBOXEXITEM cbex = { 0 };
8835 cbex.mask = CBEIF_TEXT;
8836 cbex.iItem = nIndex;
8838 LPTSTR lpstrText = NULL;
8840 for(
int nLen = 256; ; nLen *= 2)
8842 ATLTRY(lpstrText =
new TCHAR[nLen]);
8843 if(lpstrText == NULL)
8845 lpstrText[0] = NULL;
8846 cbex.pszText = lpstrText;
8847 cbex.cchTextMax = nLen;
8848 bRet = (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
8849 if(!bRet || (lstrlen(cbex.pszText) < nLen - 1))
8851 delete [] lpstrText;
8855 if(lpstrText != NULL)
8858 bstrText = ::SysAllocString(T2OLE(lpstrText));
8859 delete [] lpstrText;
8862 return (bstrText != NULL) ? TRUE : FALSE;
8864 #endif // !_ATL_NO_COM 8866 #if defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 8867 BOOL GetItemText(
int nIndex, _CSTRING_NS::CString& strText)
const 8869 ATLASSERT(::IsWindow(m_hWnd));
8871 COMBOBOXEXITEM cbex = { 0 };
8872 cbex.mask = CBEIF_TEXT;
8873 cbex.iItem = nIndex;
8877 for(
int nLen = 256; ; nLen *= 2)
8879 cbex.pszText = strText.GetBufferSetLength(nLen);
8880 if(cbex.pszText == NULL)
8885 cbex.cchTextMax = nLen;
8886 bRet = (BOOL)::SendMessage(m_hWnd, CBEM_GETITEM, 0, (LPARAM)&cbex);
8887 if(!bRet || (lstrlen(cbex.pszText) < nLen - 1))
8890 strText.ReleaseBuffer();
8893 #endif // defined(_WTL_USE_CSTRING) || defined(__ATLSTR_H__) 8895 BOOL SetItemText(
int nIndex, LPCTSTR lpszItem)
8897 ATLASSERT(::IsWindow(m_hWnd));
8898 return SetItem(nIndex, CBEIF_TEXT, lpszItem, 0, 0, 0, 0, 0);
8901 CComboBox GetComboCtrl()
const 8903 ATLASSERT(::IsWindow(m_hWnd));
8904 return CComboBox((HWND)::SendMessage(m_hWnd, CBEM_GETCOMBOCONTROL, 0, 0L));
8907 CEdit GetEditCtrl()
const 8909 ATLASSERT(::IsWindow(m_hWnd));
8910 return CEdit((HWND)::SendMessage(m_hWnd, CBEM_GETEDITCONTROL, 0, 0L));
8913 BOOL HasEditChanged()
const 8915 ATLASSERT(::IsWindow(m_hWnd));
8916 return (BOOL)::SendMessage(m_hWnd, CBEM_HASEDITCHANGED, 0, 0L);
8920 int AddString(LPCTSTR )
8926 int InsertString(
int , LPCTSTR )
8932 int Dir(UINT , LPCTSTR )
8938 int FindString(
int , LPCTSTR )
const 8947 #endif // !_WIN32_WCE 8953 template <
class TBase>
8967 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
8968 DWORD dwStyle = 0, DWORD dwExStyle = 0,
8971 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
8975 static LPCTSTR GetWndClassName()
8977 return MONTHCAL_CLASS;
8980 COLORREF GetColor(
int nColorType)
const 8982 ATLASSERT(::IsWindow(m_hWnd));
8983 return (COLORREF)::SendMessage(m_hWnd, MCM_GETCOLOR, nColorType, 0L);
8986 COLORREF SetColor(
int nColorType, COLORREF clr)
8988 ATLASSERT(::IsWindow(m_hWnd));
8989 return (COLORREF)::SendMessage(m_hWnd, MCM_SETCOLOR, nColorType, clr);
8992 BOOL GetCurSel(LPSYSTEMTIME lpSysTime)
const 8994 ATLASSERT(::IsWindow(m_hWnd));
8995 return (BOOL)::SendMessage(m_hWnd, MCM_GETCURSEL, 0, (LPARAM)lpSysTime);
8998 BOOL SetCurSel(LPSYSTEMTIME lpSysTime)
9000 ATLASSERT(::IsWindow(m_hWnd));
9001 return (BOOL)::SendMessage(m_hWnd, MCM_SETCURSEL, 0, (LPARAM)lpSysTime);
9004 int GetFirstDayOfWeek(BOOL* pbLocaleVal = NULL)
const 9006 ATLASSERT(::IsWindow(m_hWnd));
9007 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, MCM_GETFIRSTDAYOFWEEK, 0, 0L);
9008 if(pbLocaleVal != NULL)
9009 *pbLocaleVal = (BOOL)HIWORD(dwRet);
9010 return (
int)(short)LOWORD(dwRet);
9013 int SetFirstDayOfWeek(
int nDay, BOOL* pbLocaleVal = NULL)
9015 ATLASSERT(::IsWindow(m_hWnd));
9016 DWORD dwRet = (DWORD)::SendMessage(m_hWnd, MCM_SETFIRSTDAYOFWEEK, 0, nDay);
9017 if(pbLocaleVal != NULL)
9018 *pbLocaleVal = (BOOL)HIWORD(dwRet);
9019 return (
int)(short)LOWORD(dwRet);
9022 int GetMaxSelCount()
const 9024 ATLASSERT(::IsWindow(m_hWnd));
9025 return (
int)::SendMessage(m_hWnd, MCM_GETMAXSELCOUNT, 0, 0L);
9028 BOOL SetMaxSelCount(
int nMax)
9030 ATLASSERT(::IsWindow(m_hWnd));
9031 return (BOOL)::SendMessage(m_hWnd, MCM_SETMAXSELCOUNT, nMax, 0L);
9034 int GetMonthDelta()
const 9036 ATLASSERT(::IsWindow(m_hWnd));
9037 return (
int)::SendMessage(m_hWnd, MCM_GETMONTHDELTA, 0, 0L);
9040 int SetMonthDelta(
int nDelta)
9042 ATLASSERT(::IsWindow(m_hWnd));
9043 return (
int)::SendMessage(m_hWnd, MCM_SETMONTHDELTA, nDelta, 0L);
9046 DWORD GetRange(LPSYSTEMTIME lprgSysTimeArray)
const 9048 ATLASSERT(::IsWindow(m_hWnd));
9049 return (DWORD)::SendMessage(m_hWnd, MCM_GETRANGE, 0, (LPARAM)lprgSysTimeArray);
9052 BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lprgSysTimeArray)
9054 ATLASSERT(::IsWindow(m_hWnd));
9055 return (BOOL)::SendMessage(m_hWnd, MCM_SETRANGE, dwFlags, (LPARAM)lprgSysTimeArray);
9058 BOOL GetSelRange(LPSYSTEMTIME lprgSysTimeArray)
const 9060 ATLASSERT(::IsWindow(m_hWnd));
9061 return (BOOL)::SendMessage(m_hWnd, MCM_GETSELRANGE, 0, (LPARAM)lprgSysTimeArray);
9064 BOOL SetSelRange(LPSYSTEMTIME lprgSysTimeArray)
9066 ATLASSERT(::IsWindow(m_hWnd));
9067 return (BOOL)::SendMessage(m_hWnd, MCM_SETSELRANGE, 0, (LPARAM)lprgSysTimeArray);
9070 BOOL GetToday(LPSYSTEMTIME lpSysTime)
const 9072 ATLASSERT(::IsWindow(m_hWnd));
9073 return (BOOL)::SendMessage(m_hWnd, MCM_GETTODAY, 0, (LPARAM)lpSysTime);
9076 void SetToday(LPSYSTEMTIME lpSysTime)
9078 ATLASSERT(::IsWindow(m_hWnd));
9079 ::SendMessage(m_hWnd, MCM_SETTODAY, 0, (LPARAM)lpSysTime);
9082 BOOL GetMinReqRect(LPRECT lpRectInfo)
const 9084 ATLASSERT(::IsWindow(m_hWnd));
9085 return (BOOL)::SendMessage(m_hWnd, MCM_GETMINREQRECT, 0, (LPARAM)lpRectInfo);
9088 int GetMaxTodayWidth()
const 9090 ATLASSERT(::IsWindow(m_hWnd));
9091 return (
int)::SendMessage(m_hWnd, MCM_GETMAXTODAYWIDTH, 0, 0L);
9094 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9095 BOOL GetUnicodeFormat()
const 9097 ATLASSERT(::IsWindow(m_hWnd));
9098 return (BOOL)::SendMessage(m_hWnd, MCM_GETUNICODEFORMAT, 0, 0L);
9101 BOOL SetUnicodeFormat(BOOL bUnicode = TRUE)
9103 ATLASSERT(::IsWindow(m_hWnd));
9104 return (BOOL)::SendMessage(m_hWnd, MCM_SETUNICODEFORMAT, bUnicode, 0L);
9106 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9108 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9109 DWORD GetCurrentView()
const 9111 ATLASSERT(::IsWindow(m_hWnd));
9112 return (DWORD)::SendMessage(m_hWnd, MCM_GETCURRENTVIEW, 0, 0L);
9115 BOOL SetCurrentView(DWORD dwView)
9117 ATLASSERT(::IsWindow(m_hWnd));
9118 return (BOOL)::SendMessage(m_hWnd, MCM_SETCURRENTVIEW, 0, dwView);
9121 DWORD GetCalendarCount()
const 9123 ATLASSERT(::IsWindow(m_hWnd));
9124 return (DWORD)::SendMessage(m_hWnd, MCM_GETCALENDARCOUNT, 0, 0L);
9127 BOOL GetCalendarGridInfo(PMCGRIDINFO pGridInfo)
const 9129 ATLASSERT(::IsWindow(m_hWnd));
9130 return (BOOL)::SendMessage(m_hWnd, MCM_GETCALENDARGRIDINFO, 0, (LPARAM)pGridInfo);
9133 CALID GetCALID()
const 9135 ATLASSERT(::IsWindow(m_hWnd));
9136 return (CALID)::SendMessage(m_hWnd, MCM_GETCALID, 0, 0L);
9139 void SetCALID(CALID calid)
9141 ATLASSERT(::IsWindow(m_hWnd));
9142 ::SendMessage(m_hWnd, MCM_SETCALID, (LPARAM)calid, 0L);
9145 int GetCalendarBorder()
const 9147 ATLASSERT(::IsWindow(m_hWnd));
9148 return (
int)::SendMessage(m_hWnd, MCM_GETCALENDARBORDER, 0, 0L);
9151 void SetCalendarBorder(
int cxyBorder, BOOL bSet = TRUE)
9153 ATLASSERT(::IsWindow(m_hWnd));
9154 ::SendMessage(m_hWnd, MCM_SETCALENDARBORDER, (WPARAM)bSet, (LPARAM)cxyBorder);
9156 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9159 int GetMonthRange(DWORD dwFlags, LPSYSTEMTIME lprgSysTimeArray)
const 9161 ATLASSERT(::IsWindow(m_hWnd));
9162 return (
int)::SendMessage(m_hWnd, MCM_GETMONTHRANGE, dwFlags, (LPARAM)lprgSysTimeArray);
9165 BOOL SetDayState(
int nMonths, LPMONTHDAYSTATE lpDayStateArray)
9167 ATLASSERT(::IsWindow(m_hWnd));
9168 return (BOOL)::SendMessage(m_hWnd, MCM_SETDAYSTATE, nMonths, (LPARAM)lpDayStateArray);
9171 DWORD HitTest(PMCHITTESTINFO pMCHitTest)
const 9173 ATLASSERT(::IsWindow(m_hWnd));
9174 return (DWORD)::SendMessage(m_hWnd, MCM_HITTEST, 0, (LPARAM)pMCHitTest);
9177 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9178 void SizeRectToMin(LPRECT lpRect)
9180 ATLASSERT(::IsWindow(m_hWnd));
9181 ::SendMessage(m_hWnd, MCM_SIZERECTTOMIN, 0, (LPARAM)lpRect);
9183 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9192 template <
class TBase>
9206 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9207 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9210 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9214 static LPCTSTR GetWndClassName()
9216 return DATETIMEPICK_CLASS;
9219 BOOL SetFormat(LPCTSTR lpszFormat)
9221 ATLASSERT(::IsWindow(m_hWnd));
9222 return (BOOL)::SendMessage(m_hWnd, DTM_SETFORMAT, 0, (LPARAM)lpszFormat);
9225 COLORREF GetMonthCalColor(
int nColorType)
const 9227 ATLASSERT(::IsWindow(m_hWnd));
9228 return (COLORREF)::SendMessage(m_hWnd, DTM_GETMCCOLOR, nColorType, 0L);
9231 COLORREF SetMonthCalColor(
int nColorType, COLORREF clr)
9233 ATLASSERT(::IsWindow(m_hWnd));
9234 return (COLORREF)::SendMessage(m_hWnd, DTM_SETMCCOLOR, nColorType, clr);
9237 DWORD GetRange(LPSYSTEMTIME lpSysTimeArray)
const 9239 ATLASSERT(::IsWindow(m_hWnd));
9240 return (DWORD)::SendMessage(m_hWnd, DTM_GETRANGE, 0, (LPARAM)lpSysTimeArray);
9243 BOOL SetRange(DWORD dwFlags, LPSYSTEMTIME lpSysTimeArray)
9245 ATLASSERT(::IsWindow(m_hWnd));
9246 return (BOOL)::SendMessage(m_hWnd, DTM_SETRANGE, dwFlags, (LPARAM)lpSysTimeArray);
9249 DWORD GetSystemTime(LPSYSTEMTIME lpSysTime)
const 9251 ATLASSERT(::IsWindow(m_hWnd));
9252 return (DWORD)::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)lpSysTime);
9255 BOOL SetSystemTime(DWORD dwFlags, LPSYSTEMTIME lpSysTime)
9257 ATLASSERT(::IsWindow(m_hWnd));
9258 return (BOOL)::SendMessage(m_hWnd, DTM_SETSYSTEMTIME, dwFlags, (LPARAM)lpSysTime);
9261 CMonthCalendarCtrl GetMonthCal()
const 9263 ATLASSERT(::IsWindow(m_hWnd));
9264 return CMonthCalendarCtrl((HWND)::SendMessage(m_hWnd, DTM_GETMONTHCAL, 0, 0L));
9267 #if (_WIN32_IE >= 0x0400) 9270 ATLASSERT(::IsWindow(m_hWnd));
9271 return CFontHandle((HFONT)::SendMessage(m_hWnd, DTM_GETMCFONT, 0, 0L));
9274 void SetMonthCalFont(HFONT hFont, BOOL bRedraw = TRUE)
9276 ATLASSERT(::IsWindow(m_hWnd));
9277 ::SendMessage(m_hWnd, DTM_SETMCFONT, (WPARAM)hFont, MAKELPARAM(bRedraw, 0));
9279 #endif // (_WIN32_IE >= 0x0400) 9281 #if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9282 DWORD GetMonthCalStyle()
const 9284 ATLASSERT(::IsWindow(m_hWnd));
9285 return (DWORD)::SendMessage(m_hWnd, DTM_GETMCSTYLE, 0, 0L);
9288 DWORD SetMonthCalStyle(DWORD dwStyle)
9290 ATLASSERT(::IsWindow(m_hWnd));
9291 return (DWORD)::SendMessage(m_hWnd, DTM_SETMCSTYLE, 0, (LPARAM)dwStyle);
9294 void GetDateTimePickerInfo(LPDATETIMEPICKERINFO lpPickerInfo)
const 9296 ATLASSERT(::IsWindow(m_hWnd));
9297 ::SendMessage(m_hWnd, DTM_GETDATETIMEPICKERINFO, 0, (LPARAM)lpPickerInfo);
9300 BOOL GetIdealSize(LPSIZE lpSize)
const 9302 ATLASSERT(::IsWindow(m_hWnd));
9303 return (BOOL)::SendMessage(m_hWnd, DTM_GETIDEALSIZE, 0, (LPARAM)lpSize);
9306 void CloseMonthCal()
9308 ATLASSERT(::IsWindow(m_hWnd));
9309 ::SendMessage(m_hWnd, DTM_CLOSEMONTHCAL, 0, 0L);
9311 #endif // defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_LONGHORN) 9320 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9323 class CFlatScrollBarImpl
9327 BOOL FlatSB_Initialize()
9329 T* pT =
static_cast<T*
>(
this);
9330 ATLASSERT(::IsWindow(pT->m_hWnd));
9331 return ::InitializeFlatSB(pT->m_hWnd);
9334 HRESULT FlatSB_Uninitialize()
9336 T* pT =
static_cast<T*
>(
this);
9337 ATLASSERT(::IsWindow(pT->m_hWnd));
9338 return ::UninitializeFlatSB(pT->m_hWnd);
9342 BOOL FlatSB_GetScrollProp(UINT uIndex, LPINT lpnValue)
const 9344 const T* pT =
static_cast<const T*
>(
this);
9345 ATLASSERT(::IsWindow(pT->m_hWnd));
9346 return ::FlatSB_GetScrollProp(pT->m_hWnd, uIndex, lpnValue);
9349 BOOL FlatSB_SetScrollProp(UINT uIndex,
int nValue, BOOL bRedraw = TRUE)
9351 T* pT =
static_cast<T*
>(
this);
9352 ATLASSERT(::IsWindow(pT->m_hWnd));
9353 return ::FlatSB_SetScrollProp(pT->m_hWnd, uIndex, nValue, bRedraw);
9357 int FlatSB_GetScrollPos(
int nBar)
const 9359 const T* pT =
static_cast<const T*
>(
this);
9360 ATLASSERT(::IsWindow(pT->m_hWnd));
9361 return ::FlatSB_GetScrollPos(pT->m_hWnd, nBar);
9364 int FlatSB_SetScrollPos(
int nBar,
int nPos, BOOL bRedraw = TRUE)
9366 T* pT =
static_cast<T*
>(
this);
9367 ATLASSERT(::IsWindow(pT->m_hWnd));
9368 return ::FlatSB_SetScrollPos(pT->m_hWnd, nBar, nPos, bRedraw);
9371 BOOL FlatSB_GetScrollRange(
int nBar, LPINT lpMinPos, LPINT lpMaxPos)
const 9373 const T* pT =
static_cast<const T*
>(
this);
9374 ATLASSERT(::IsWindow(pT->m_hWnd));
9375 return ::FlatSB_GetScrollRange(pT->m_hWnd, nBar, lpMinPos, lpMaxPos);
9378 BOOL FlatSB_SetScrollRange(
int nBar,
int nMinPos,
int nMaxPos, BOOL bRedraw = TRUE)
9380 T* pT =
static_cast<T*
>(
this);
9381 ATLASSERT(::IsWindow(pT->m_hWnd));
9382 return ::FlatSB_SetScrollRange(pT->m_hWnd, nBar, nMinPos, nMaxPos, bRedraw);
9385 BOOL FlatSB_GetScrollInfo(
int nBar, LPSCROLLINFO lpScrollInfo)
const 9387 const T* pT =
static_cast<const T*
>(
this);
9388 ATLASSERT(::IsWindow(pT->m_hWnd));
9389 return ::FlatSB_GetScrollInfo(pT->m_hWnd, nBar, lpScrollInfo);
9392 int FlatSB_SetScrollInfo(
int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
9394 T* pT =
static_cast<T*
>(
this);
9395 ATLASSERT(::IsWindow(pT->m_hWnd));
9396 return ::FlatSB_SetScrollInfo(pT->m_hWnd, nBar, lpScrollInfo, bRedraw);
9400 BOOL FlatSB_ShowScrollBar(UINT nBar, BOOL bShow = TRUE)
9402 T* pT =
static_cast<T*
>(
this);
9403 ATLASSERT(::IsWindow(pT->m_hWnd));
9404 return ::FlatSB_ShowScrollBar(pT->m_hWnd, nBar, bShow);
9407 BOOL FlatSB_EnableScrollBar(UINT uSBFlags, UINT uArrowFlags = ESB_ENABLE_BOTH)
9409 T* pT =
static_cast<T*
>(
this);
9410 ATLASSERT(::IsWindow(pT->m_hWnd));
9411 return ::FlatSB_EnableScrollBar(pT->m_hWnd, uSBFlags, uArrowFlags);
9415 template <
class TBase>
9416 class CFlatScrollBarT :
public TBase,
public CFlatScrollBarImpl<CFlatScrollBarT< TBase > >
9419 CFlatScrollBarT(HWND hWnd = NULL) : TBase(hWnd)
9422 CFlatScrollBarT< TBase >& operator =(HWND hWnd)
9429 typedef CFlatScrollBarT<ATL::CWindow> CFlatScrollBar;
9431 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9437 #if (_WIN32_IE >= 0x0400) 9439 template <
class TBase>
9440 class CIPAddressCtrlT :
public TBase
9444 CIPAddressCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9447 CIPAddressCtrlT< TBase >& operator =(HWND hWnd)
9453 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9454 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9457 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9461 static LPCTSTR GetWndClassName()
9463 return WC_IPADDRESS;
9466 BOOL IsBlank()
const 9468 ATLASSERT(::IsWindow(m_hWnd));
9469 return (BOOL)::SendMessage(m_hWnd, IPM_ISBLANK, 0, 0L);
9472 int GetAddress(LPDWORD lpdwAddress)
const 9474 ATLASSERT(::IsWindow(m_hWnd));
9475 return (
int)::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM)lpdwAddress);
9478 void SetAddress(DWORD dwAddress)
9480 ATLASSERT(::IsWindow(m_hWnd));
9481 ::SendMessage(m_hWnd, IPM_SETADDRESS, 0, dwAddress);
9486 ATLASSERT(::IsWindow(m_hWnd));
9487 ::SendMessage(m_hWnd, IPM_CLEARADDRESS, 0, 0L);
9490 void SetRange(
int nField, WORD wRange)
9492 ATLASSERT(::IsWindow(m_hWnd));
9493 ::SendMessage(m_hWnd, IPM_SETRANGE, nField, wRange);
9496 void SetRange(
int nField, BYTE nMin, BYTE nMax)
9498 ATLASSERT(::IsWindow(m_hWnd));
9499 ::SendMessage(m_hWnd, IPM_SETRANGE, nField, MAKEIPRANGE(nMin, nMax));
9502 void SetFocus(
int nField)
9504 ATLASSERT(::IsWindow(m_hWnd));
9505 ::SendMessage(m_hWnd, IPM_SETFOCUS, nField, 0L);
9509 typedef CIPAddressCtrlT<ATL::CWindow> CIPAddressCtrl;
9511 #endif // (_WIN32_IE >= 0x0400) 9517 #if (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9519 template <
class TBase>
9520 class CPagerCtrlT :
public TBase
9524 CPagerCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9527 CPagerCtrlT< TBase >& operator =(HWND hWnd)
9533 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9534 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9537 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9541 static LPCTSTR GetWndClassName()
9543 return WC_PAGESCROLLER;
9546 int GetButtonSize()
const 9548 ATLASSERT(::IsWindow(m_hWnd));
9549 return (
int)::SendMessage(m_hWnd, PGM_GETBUTTONSIZE, 0, 0L);
9552 int SetButtonSize(
int nButtonSize)
9554 ATLASSERT(::IsWindow(m_hWnd));
9555 return (
int)::SendMessage(m_hWnd, PGM_SETBUTTONSIZE, 0, nButtonSize);
9558 DWORD GetButtonState(
int nButton)
const 9560 ATLASSERT(::IsWindow(m_hWnd));
9561 ATLASSERT(nButton == PGB_TOPORLEFT || nButton == PGB_BOTTOMORRIGHT);
9562 return (DWORD)::SendMessage(m_hWnd, PGM_GETBUTTONSTATE, 0, nButton);
9565 COLORREF GetBkColor()
const 9567 ATLASSERT(::IsWindow(m_hWnd));
9568 return (COLORREF)::SendMessage(m_hWnd, PGM_GETBKCOLOR, 0, 0L);
9571 COLORREF SetBkColor(COLORREF clrBk)
9573 ATLASSERT(::IsWindow(m_hWnd));
9574 return (COLORREF)::SendMessage(m_hWnd, PGM_SETBKCOLOR, 0, (LPARAM)clrBk);
9577 int GetBorder()
const 9579 ATLASSERT(::IsWindow(m_hWnd));
9580 return (
int)::SendMessage(m_hWnd, PGM_GETBORDER, 0, 0L);
9583 int SetBorder(
int nBorderSize)
9585 ATLASSERT(::IsWindow(m_hWnd));
9586 return (
int)::SendMessage(m_hWnd, PGM_SETBORDER, 0, nBorderSize);
9591 ATLASSERT(::IsWindow(m_hWnd));
9592 return (
int)::SendMessage(m_hWnd, PGM_GETPOS, 0, 0L);
9595 int SetPos(
int nPos)
9597 ATLASSERT(::IsWindow(m_hWnd));
9598 return (
int)::SendMessage(m_hWnd, PGM_SETPOS, 0, nPos);
9602 void SetChild(HWND hWndChild)
9604 ATLASSERT(::IsWindow(m_hWnd));
9605 ::SendMessage(m_hWnd, PGM_SETCHILD, 0, (LPARAM)hWndChild);
9608 void ForwardMouse(BOOL bForward = TRUE)
9610 ATLASSERT(::IsWindow(m_hWnd));
9611 ::SendMessage(m_hWnd, PGM_FORWARDMOUSE, bForward, 0L);
9616 ATLASSERT(::IsWindow(m_hWnd));
9617 ::SendMessage(m_hWnd, PGM_RECALCSIZE, 0, 0L);
9620 void GetDropTarget(IDropTarget** ppDropTarget)
9622 ATLASSERT(::IsWindow(m_hWnd));
9623 ATLASSERT(ppDropTarget != NULL);
9624 ::SendMessage(m_hWnd, PGM_GETDROPTARGET, 0, (LPARAM)ppDropTarget);
9628 typedef CPagerCtrlT<ATL::CWindow> CPagerCtrl;
9630 #endif // (_WIN32_IE >= 0x0400) && !defined(_WIN32_WCE) 9636 #if (_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE) 9638 template <
class TBase>
9639 class CLinkCtrlT :
public TBase
9643 CLinkCtrlT(HWND hWnd = NULL) : TBase(hWnd)
9646 CLinkCtrlT< TBase >& operator =(HWND hWnd)
9652 HWND Create(HWND hWndParent,
ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL,
9653 DWORD dwStyle = 0, DWORD dwExStyle = 0,
9656 return TBase::Create(GetWndClassName(), hWndParent, rect.m_lpRect, szWindowName, dwStyle, dwExStyle, MenuOrID.m_hMenu, lpCreateParam);
9660 static LPCTSTR GetWndClassName()
9669 int GetIdealHeight(
int cxMaxWidth = 0)
const 9671 ATLASSERT(::IsWindow(m_hWnd));
9672 return (
int)::SendMessage(m_hWnd, LM_GETIDEALHEIGHT, cxMaxWidth, 0L);
9675 BOOL GetItem(PLITEM pLItem)
const 9677 ATLASSERT(::IsWindow(m_hWnd));
9678 return (BOOL)::SendMessage(m_hWnd, LM_GETITEM, 0, (LPARAM)pLItem);
9681 BOOL SetItem(PLITEM pLItem)
9683 ATLASSERT(::IsWindow(m_hWnd));
9684 return (BOOL)::SendMessage(m_hWnd, LM_SETITEM, 0, (LPARAM)pLItem);
9688 int GetIdealSize(SIZE& size,
int cxMaxWidth = 0)
const 9690 #ifndef LM_GETIDEALSIZE 9691 const UINT LM_GETIDEALSIZE = LM_GETIDEALHEIGHT;
9693 ATLASSERT(::IsWindow(m_hWnd));
9694 return (
int)::SendMessage(m_hWnd, LM_GETIDEALSIZE, cxMaxWidth, (LPARAM)&size);
9698 BOOL HitTest(PLHITTESTINFO pLHitTestInfo)
const 9700 ATLASSERT(::IsWindow(m_hWnd));
9701 return (BOOL)::SendMessage(m_hWnd, LM_HITTEST, 0, (LPARAM)pLHitTestInfo);
9705 typedef CLinkCtrlT<ATL::CWindow> CLinkCtrl;
9707 #endif // (_WIN32_WINNT >= 0x0501) && !defined(_WIN32_WCE) 9717 #if (_ATL_VER < 0x0700) 9720 BOOL IsMsgHandled()
const 9722 return m_bHandledCD;
9725 void SetMsgHandled(BOOL bHandled)
9727 m_bHandledCD = bHandled;
9729 #endif // !(_ATL_VER < 0x0700) 9733 NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW, OnCustomDraw)
9735 REFLECTED_NOTIFY_CODE_HANDLER(NM_CUSTOMDRAW, OnCustomDraw)
9739 LRESULT OnCustomDraw(
int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
9741 T* pT =
static_cast<T*
>(
this);
9742 pT->SetMsgHandled(TRUE);
9743 LPNMCUSTOMDRAW lpNMCustomDraw = (LPNMCUSTOMDRAW)pnmh;
9745 switch(lpNMCustomDraw->dwDrawStage)
9748 dwRet = pT->OnPrePaint(idCtrl, lpNMCustomDraw);
9750 case CDDS_POSTPAINT:
9751 dwRet = pT->OnPostPaint(idCtrl, lpNMCustomDraw);
9754 dwRet = pT->OnPreErase(idCtrl, lpNMCustomDraw);
9756 case CDDS_POSTERASE:
9757 dwRet = pT->OnPostErase(idCtrl, lpNMCustomDraw);
9759 case CDDS_ITEMPREPAINT:
9760 dwRet = pT->OnItemPrePaint(idCtrl, lpNMCustomDraw);
9762 case CDDS_ITEMPOSTPAINT:
9763 dwRet = pT->OnItemPostPaint(idCtrl, lpNMCustomDraw);
9765 case CDDS_ITEMPREERASE:
9766 dwRet = pT->OnItemPreErase(idCtrl, lpNMCustomDraw);
9768 case CDDS_ITEMPOSTERASE:
9769 dwRet = pT->OnItemPostErase(idCtrl, lpNMCustomDraw);
9771 #if (_WIN32_IE >= 0x0400) 9772 case (CDDS_ITEMPREPAINT | CDDS_SUBITEM):
9773 dwRet = pT->OnSubItemPrePaint(idCtrl, lpNMCustomDraw);
9775 #endif // (_WIN32_IE >= 0x0400) 9777 pT->SetMsgHandled(FALSE);
9780 bHandled = pT->IsMsgHandled();
9785 DWORD OnPrePaint(
int , LPNMCUSTOMDRAW )
9787 return CDRF_DODEFAULT;
9790 DWORD OnPostPaint(
int , LPNMCUSTOMDRAW )
9792 return CDRF_DODEFAULT;
9795 DWORD OnPreErase(
int , LPNMCUSTOMDRAW )
9797 return CDRF_DODEFAULT;
9800 DWORD OnPostErase(
int , LPNMCUSTOMDRAW )
9802 return CDRF_DODEFAULT;
9805 DWORD OnItemPrePaint(
int , LPNMCUSTOMDRAW )
9807 return CDRF_DODEFAULT;
9810 DWORD OnItemPostPaint(
int , LPNMCUSTOMDRAW )
9812 return CDRF_DODEFAULT;
9815 DWORD OnItemPreErase(
int , LPNMCUSTOMDRAW )
9817 return CDRF_DODEFAULT;
9820 DWORD OnItemPostErase(
int , LPNMCUSTOMDRAW )
9822 return CDRF_DODEFAULT;
9825 #if (_WIN32_IE >= 0x0400) 9826 DWORD OnSubItemPrePaint(
int , LPNMCUSTOMDRAW )
9828 return CDRF_DODEFAULT;
9830 #endif // (_WIN32_IE >= 0x0400) 9841 template <
class TBase>
9842 class CCECommandBarCtrlT :
public TBase
9846 CCECommandBarCtrlT(HWND hWnd = NULL) : TBase(hWnd) { }
9848 CCECommandBarCtrlT< TBase >& operator=(HWND hWnd)
9855 BOOL IsVisible()
const 9857 return IsWindowVisible();
9860 int GetHeight()
const 9862 ATLASSERT(::IsWindow(m_hWnd));
9863 return ::CommandBar_Height(m_hWnd);
9866 HMENU GetMenu(WORD wButton)
const 9868 ATLASSERT(::IsWindow(m_hWnd));
9869 return ::CommandBar_GetMenu(m_hWnd, wButton);
9873 HWND Create(HWND hWndParent,
int nCmdBarID)
9875 m_hWnd = ::CommandBar_Create(ModuleHelper::GetModuleInstance(), hWndParent, nCmdBarID);
9876 ATLASSERT(::IsWindow(m_hWnd));
9885 BOOL Show(BOOL bShow = TRUE)
9887 ATLASSERT(::IsWindow(m_hWnd));
9888 return ::CommandBar_Show(m_hWnd, bShow);
9891 BOOL DrawMenuBar(WORD wButton)
9893 ATLASSERT(::IsWindow(m_hWnd));
9894 return ::CommandBar_DrawMenuBar(m_hWnd, wButton);
9897 BOOL AddAdornments(DWORD dwFlags = 0)
9899 ATLASSERT(::IsWindow(m_hWnd));
9900 return ::CommandBar_AddAdornments(m_hWnd, dwFlags, 0);
9903 int AddBitmap(
int nBitmapID,
int nNumImages)
9905 ATLASSERT(::IsWindow(m_hWnd));
9906 return ::CommandBar_AddBitmap(m_hWnd, ModuleHelper::GetResourceInstance(), nBitmapID, nNumImages, 16, 16);
9909 BOOL AddButtons(UINT uNumButtons, LPTBBUTTON lpButtons)
9911 ATLASSERT(::IsWindow(m_hWnd));
9912 return CommandBar_AddButtons(m_hWnd, uNumButtons, lpButtons);
9915 BOOL AddToolTips(UINT uNumToolTips, LPTSTR lpToolTips)
9917 ATLASSERT(::IsWindow(m_hWnd));
9918 return CommandBar_AddToolTips(m_hWnd, uNumToolTips, lpToolTips);
9921 BOOL InsertButton(
int nButton, LPTBBUTTON lpButton)
9923 ATLASSERT(::IsWindow(m_hWnd));
9924 return CommandBar_InsertButton(m_hWnd, nButton, lpButton);
9927 HWND InsertComboBox(
int nWidth, UINT dwStyle, WORD wComboBoxID, WORD wButton)
9929 ATLASSERT(::IsWindow(m_hWnd));
9930 return ::CommandBar_InsertComboBox(m_hWnd, ModuleHelper::GetModuleInstance(), nWidth, dwStyle, wComboBoxID, wButton);
9933 BOOL InsertMenubar(WORD wMenuID, WORD wButton)
9935 ATLASSERT(::IsWindow(m_hWnd));
9936 return ::CommandBar_InsertMenubar(m_hWnd, ModuleHelper::GetResourceInstance(), wMenuID, wButton);
9941 ATLASSERT(::IsWindow(m_hWnd));
9942 return ::CommandBar_InsertMenubarEx(m_hWnd, ModuleHelper::GetResourceInstance(), (LPTSTR)menu.m_lpstr, wButton);
9945 BOOL IsCommandBarMessage(LPMSG lpMsg)
9947 ATLASSERT(::IsWindow(m_hWnd));
9948 return ::IsCommandBarMessage(m_hWnd, lpMsg);
9952 #if defined(_AYGSHELL_H_) || defined(__AYGSHELL_H__) // PPC MenuBar 9953 typedef CCECommandBarCtrlT<CToolBarCtrl> CMenuBarCtrl;
9955 typedef CCECommandBarCtrlT<CToolBarCtrl> CCECommandBarCtrl;
9956 #endif // defined(_AYGSHELL_H_) || defined(__AYGSHELL_H__) 9961 template <
class TBase>
9962 class CCECommandBandsCtrlT :
public TBase
9966 CCECommandBandsCtrlT(HWND hWnd = NULL) : TBase(hWnd) { }
9968 CCECommandBandsCtrlT< TBase >& operator=(HWND hWnd)
9975 BOOL IsVisible()
const 9977 return IsWindowVisible();
9980 #if (_WIN32_IE >= 0x0400) 9981 UINT GetHeight()
const 9983 ATLASSERT(::IsWindow(m_hWnd));
9984 return CommandBands_Height(m_hWnd);
9986 #endif // (_WIN32_IE >= 0x0400) 9988 HWND GetCommandBar(UINT uBand)
const 9990 ATLASSERT(::IsWindow(m_hWnd));
9991 return ::CommandBands_GetCommandBar(m_hWnd, uBand);
9994 BOOL GetRestoreInformation(UINT uBand, LPCOMMANDBANDSRESTOREINFO pcbr)
const 9996 ATLASSERT(::IsWindow(m_hWnd));
9997 return ::CommandBands_GetRestoreInformation(m_hWnd, uBand, pcbr);
10001 HWND Create(HWND hWndParent, UINT wID, DWORD dwStyles, HIMAGELIST hImageList = NULL)
10003 m_hWnd = ::CommandBands_Create(ModuleHelper::GetModuleInstance(), hWndParent, wID, dwStyles, hImageList);
10004 ATLASSERT(::IsWindow(m_hWnd));
10008 BOOL AddAdornments(DWORD dwFlags = 0, LPREBARBANDINFO prbbi = NULL)
10010 ATLASSERT(::IsWindow(m_hWnd));
10011 return ::CommandBands_AddAdornments(m_hWnd, ModuleHelper::GetModuleInstance(), dwFlags, prbbi);
10014 BOOL AddBands(UINT uBandCount, LPREBARBANDINFO prbbi)
10016 ATLASSERT(::IsWindow(m_hWnd));
10017 return ::CommandBands_AddBands(m_hWnd, ModuleHelper::GetModuleInstance(), uBandCount, prbbi);
10020 BOOL Show(BOOL bShow = TRUE)
10022 ATLASSERT(::IsWindow(m_hWnd));
10023 return ::CommandBands_Show(m_hWnd, bShow);
10027 typedef CCECommandBandsCtrlT<ATL::CWindow> CCECommandBandsCtrl;
10029 #endif // _WIN32_WCE 10033 #endif // __ATLCTRLS_H__
Definition: atlctrls.h:1161
Definition: atlwinx.h:455
Definition: atlctrls.h:109
Definition: atlctrls.h:6769
Definition: atlctrls.h:398
Definition: atlctrls.h:787
Definition: atlctrls.h:4638
Definition: atlapp.h:1231
Definition: nestegg.c:186
Definition: atlctrls.h:3939
Definition: atlctrls.h:8275
Definition: atlctrls.h:6221
Definition: atlctrls.h:7225
Definition: atlctrls.h:8210
Definition: atlctrls.h:8660
Definition: atlctrls.h:9714
Definition: atlctrls.h:4642
Definition: atlctrls.h:6013
Definition: atlctrls.h:2779
Definition: atlctrls.h:6920
Definition: atlctrls.h:7139
Definition: atlctrls.h:1850
Definition: atlapp.h:1317
Definition: atlctrls.h:6495
Definition: atlctrls.h:9193
Definition: atlwinx.h:435
Definition: atlctrls.h:7075
Definition: atlctrls.h:8141
Definition: atlctrls.h:1627
Definition: atlctrls.h:8954
Definition: atlctrls.h:8088