37#define MAX_ITEM_COUNT 1000
38#define WATCH_TIMER_ID 0xFEEDBEEF
39#define WATCH_INTERVAL 300
52 {
L"http://www.", 11 },
133 return s1.CompareNoCase(
s2);
184 if (
list.GetSize() <= 1)
237 static const RANGE s_ranges[] =
239 { 0x0009, 0x0009 }, { 0x0020, 0x002f }, { 0x003a, 0x0040 }, { 0x005b, 0x0060 },
240 { 0x007b, 0x007e }, { 0x00ab, 0x00ab }, { 0x00ad, 0x00ad }, { 0x00bb, 0x00bb },
241 { 0x02c7, 0x02c7 }, { 0x02c9, 0x02c9 }, { 0x055d, 0x055d }, { 0x060c, 0x060c },
242 { 0x2002, 0x200b }, { 0x2013, 0x2014 }, { 0x2016, 0x2016 }, { 0x2018, 0x2018 },
243 { 0x201c, 0x201d }, { 0x2022, 0x2022 }, { 0x2025, 0x2027 }, { 0x2039, 0x203a },
244 { 0x2045, 0x2046 }, { 0x207d, 0x207e }, { 0x208d, 0x208e }, { 0x226a, 0x226b },
245 { 0x2574, 0x2574 }, { 0x3001, 0x3003 }, { 0x3005, 0x3005 }, { 0x3008, 0x3011 },
246 { 0x3014, 0x301b }, { 0x301d, 0x301e }, { 0x3041, 0x3041 }, { 0x3043, 0x3043 },
247 { 0x3045, 0x3045 }, { 0x3047, 0x3047 }, { 0x3049, 0x3049 }, { 0x3063, 0x3063 },
248 { 0x3083, 0x3083 }, { 0x3085, 0x3085 }, { 0x3087, 0x3087 }, { 0x308e, 0x308e },
249 { 0x309b, 0x309e }, { 0x30a1, 0x30a1 }, { 0x30a3, 0x30a3 }, { 0x30a5, 0x30a5 },
250 { 0x30a7, 0x30a7 }, { 0x30a9, 0x30a9 }, { 0x30c3, 0x30c3 }, { 0x30e3, 0x30e3 },
251 { 0x30e5, 0x30e5 }, { 0x30e7, 0x30e7 }, { 0x30ee, 0x30ee }, { 0x30f5, 0x30f6 },
252 { 0x30fc, 0x30fe }, { 0xfd3e, 0xfd3f }, { 0xfe30, 0xfe31 }, { 0xfe33, 0xfe44 },
253 { 0xfe4f, 0xfe51 }, { 0xfe59, 0xfe5e }, { 0xff08, 0xff09 }, { 0xff0c, 0xff0c },
254 { 0xff0e, 0xff0e }, { 0xff1c, 0xff1c }, { 0xff1e, 0xff1e }, { 0xff3b, 0xff3b },
255 { 0xff3d, 0xff3d }, { 0xff40, 0xff40 }, { 0xff5b, 0xff5e }, { 0xff61, 0xff64 },
256 { 0xff67, 0xff70 }, { 0xff9e, 0xff9f }, { 0xffe9, 0xffe9 }, { 0xffeb, 0xffeb },
346 if (hwndGotFocus !=
m_hwndEdit && hwndGotFocus != m_hWnd)
391 _AtlBaseModule.GetModuleInstance(),
NULL);
395 SetExtendedListViewStyle(exstyle, exstyle);
450 return HitTest(&hittest);
477 TRACE(
"CACListView::OnButtonUp(%p)\n",
this);
485 TRACE(
"CACListView::OnLButtonDown(%p)\n",
this);
502 TRACE(
"CACListView::OnMRButtonDown(%p)\n",
this);
509 TRACE(
"CACListView::OnMouseWheel(%p)\n",
this);
519 TRACE(
"CACListView::OnNCHitTest(%p)\n",
this);
524 if (hwndTarget != m_hWnd)
539 _AtlBaseModule.GetModuleInstance(),
NULL);
553 _AtlBaseModule.GetModuleInstance(),
NULL);
634 for (
INT delta = cxy / 4; delta < cxy; delta += cxy / 4)
662 , m_bDowner(
TRUE), m_dwOptions(ACO_AUTOAPPEND | ACO_AUTOSUGGEST)
664 , m_hwndEdit(
NULL), m_fnOldEditProc(
NULL), m_fnOldWordBreakProc(
NULL)
675 TRACE(
"CAutoComplete::CreateDropDown(%p): m_hWnd=%p, m_hwndEdit=%p\n",
682 TRACE(
"CAutoComplete::~CAutoComplete(%p)\n",
this);
757 return strText.
Left(ich + 1);
809 for (
INT iItem = 0; iItem < cItems; ++iItem)
827 if (
ChrCmpIW(strCommon[ich], strBody[ich]) != 0)
829 strCommon = strCommon.
Left(ich);
849 if (
ChrCmpIW(strCommon[ich], strItem[ich]) != 0)
851 strCommon = strCommon.
Left(ich);
874 reinterpret_cast<WPARAM>(&ich0),
reinterpret_cast<LPARAM>(&ich1));
875 if (ich0 <= 0 || ich0 != ich1)
900 BOOL bShowScroll = (cItems > cVisibles);
908 TRACE(
"CAutoComplete::OnEditKeyDown(%p, %p)\n",
this,
wParam);
998 TRACE(
"CACEditCtrl::OnEditChar(%p, %p)\n",
this,
wParam);
1038 else if (iItem == 0)
1047 else if (iItem == cItems - 1)
1058 else if (iItem == 0)
1075 else if (iItem == cItems - 1)
1103 TRACE(
"(%p)->Enable(%d)\n",
this, fEnable);
1110 LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete)
1112 TRACE(
"(%p)->Init(0x%08lx, %p, %s, %s)\n",
1171 TRACE(
"(%p) -> (%p)\n",
this, pdwFlag);
1183 TRACE(
"(%p) -> (0x%x)\n",
this, dwFlag);
1187 FIXME(
" ACO_SEARCH not supported\n");
1189 FIXME(
" ACO_FILTERPREFIXES not supported\n");
1191 FIXME(
" ACO_RTLREADING not supported\n");
1206 *pdwFlags = (
dropped ? ACDD_VISIBLE : 0);
1210 *ppwszString =
NULL;
1223 if (*ppwszString ==
NULL)
1234 FIXME(
"(%p): stub\n",
this);
1248 TRACE(
"(%p, %d, %p, %p)\n",
this, celt, rgelt, pceltFetched);
1253 if (celt != 1 || !rgelt || !pceltFetched || !
m_pEnum)
1261 ::CoTaskMemFree(pszText);
1268 TRACE(
"(%p, %d)\n",
this, celt);
1275 TRACE(
"(%p)\n",
this);
1284 TRACE(
"(%p, %p)\n",
this, ppOut);
1321 rcScrollBar = rcClient;
1325 rcScrollBar.
top = 0;
1334 rcSizeBox = rcClient;
1366 if (szValue[0] != 0 && cbValue != 0 &&
1396 TRACE(
"!m_bEditHasFocus\n");
1451 cy = ((rcMon.
bottom -
y) / cyItem) * cyItem;
1459 cy = ((rcEdit.
top - rcMon.
top) / cyItem) * cyItem;
1482 for (
INT iItem = 0; iItem < innerList.
GetSize(); ++iItem)
1487 const CStringW& strTarget = innerList[iItem];
1490 outerList.
Add(strTarget);
1517 innerList.
Add(pszItem);
1524 TRACE(
"CAutoComplete::StartCompletion(%p, %d)\n",
this, bAppendOK);
1540 TRACE(
"CAutoComplete::OnCreate(%p)\n",
this);
1575 TRACE(
"CAutoComplete::OnNCDestroy(%p)\n",
this);
1610 TRACE(
"CAutoComplete::OnExitSizeMove(%p)\n",
this);
1737 TRACE(
"NM_DBLCLK\n");
1757 TRACE(
"LVN_GETDISPINFOA\n");
1762 LV_ITEMA *pItem = &pDispInfo->item;
1763 INT iItem = pItem->iItem;
1774 TRACE(
"LVN_GETDISPINFOW\n");
1779 LV_ITEMW *pItem = &pDispInfo->item;
1780 INT iItem = pItem->iItem;
1791 TRACE(
"LVN_HOTTRACK\n");
1794 TRACE(
"LVN_HOTTRACK: iItem:%d\n", iItem);
1801 TRACE(
"LVN_ITEMACTIVATE\n");
1804 TRACE(
"LVN_ITEMACTIVATE: iItem:%d\n", iItem);
1814 TRACE(
"LVN_ITEMCHANGED\n");
1836 TRACE(
"CAutoComplete::OnNCHitTest(%p)\n",
this);
1853 CRect rcList, rcScrollBar, rcSizeBox;
1860 rcScrollBar.
left, rcScrollBar.
top,
1861 rcScrollBar.
Width(), rcScrollBar.
Height(), uSWP_);
1863 rcSizeBox.
left, rcSizeBox.
top,
1960 TRACE(
"CAutoComplete::OnVScroll(%p)\n",
this);
1978 if (iItem >= cItems)
2094 TRACE(
"m_pEnum->Reset(%p): 0x%08lx\n",
2102 TRACE(
"m_pACList->Expand(%p, %S): 0x%08lx\n",
static const PREFIX_INFO s_prefixes[]
static int RangeCompare(const void *x, const void *y)
static INT partition(list_t &list, INT i, INT j, const CStringW &x)
static unsigned __stdcall AutoCompThreadProc(void *arg)
static INT CALLBACK EditWordBreakProcW(LPWSTR lpch, INT index, INT count, INT code)
static INT pivot(list_t &list, INT i, INT j)
CSimpleArray< CStringW > list_t
static PAC_THREAD InterlockedExchangeThreadData(volatile PAC_THREAD *Target, PAC_THREAD Value)
static LRESULT CALLBACK EditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uSubclassID, DWORD_PTR dwData)
static void DoUniqueAndTrim(list_t &list)
static BOOL DoesMatch(const CStringW &strTarget, const CStringW &strText)
static INT compare1(const CStringW &str1, const CStringW &str2)
static void DoSort(list_t &list)
static BOOL IsWordBreak(WCHAR ch)
static BOOL DropPrefix(const CStringW &str, CStringW &strBody)
static INT DoUnique(list_t &list)
static HHOOK s_hMouseHook
static LRESULT CALLBACK MouseProc(INT nCode, WPARAM wParam, LPARAM lParam)
static void quicksort(list_t &list, INT i, INT j)
bool IsEmpty() const noexcept
int GetLength() const noexcept
int CompareNoCase(_In_z_ PCXSTR psz) const
CStringT Left(int nCount) const
CStringT Mid(int iFirst, int nCount) const
int ReverseFind(_In_ XCHAR ch) const noexcept
LRESULT OnNCHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnMouseWheel(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
INT ItemFromPoint(INT x, INT y)
VOID SelectHere(INT x, INT y)
HWND Create(HWND hwndParent)
static LPCWSTR GetWndClassName()
CAutoComplete * m_pDropDown
CStringW GetItemText(INT iItem)
VOID SetFont(HFONT hFont)
LRESULT OnButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnMRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID SetCurSel(INT iItem)
static LPCWSTR GetWndClassName()
LRESULT OnEraseBkGnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CAutoComplete * m_pDropDown
HWND Create(HWND hwndParent)
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID SetStatus(BOOL bDowner, BOOL bLongList)
LRESULT OnNCHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP Enable(BOOL fEnable) override
LRESULT OnNCHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL IsComboBoxDropped() const
CStringW GetEditText() const
LRESULT EditWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID DoThreadWork(PAC_THREAD pThread)
VOID UpdateDropDownState()
CSimpleArray< CStringW > m_innerList
STDMETHODIMP Reset() override
VOID RepositionDropDown()
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnVScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CStringW m_strQuickComplete
STDMETHODIMP GetOptions(DWORD *pdwFlag) override
BOOL FilterPrefixes() const
LRESULT OnExitSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID SetEditText(LPCWSTR pszText)
LRESULT OnEditChar(WPARAM wParam, LPARAM lParam)
CComPtr< IACList > m_pACList
LRESULT OnDrawItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP Next(ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) override
LRESULT OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CStringW GetQuickEdit(LPCWSTR pszText) const
virtual VOID OnFinalMessage(HWND) override
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID AutoCompThreadProc()
STDMETHODIMP Init(HWND hwndEdit, IUnknown *punkACL, LPCOLESTR pwszRegKeyPath, LPCOLESTR pwszQuickComplete) override
VOID StartCompletion(BOOL bAppendOK)
CSimpleArray< CStringW > m_outerList
LRESULT OnShowWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP ResetEnumerator() override
EDITWORDBREAKPROCW m_fnOldWordBreakProc
BOOL OnEditKeyDown(WPARAM wParam, LPARAM lParam)
STDMETHODIMP Clone(IEnumString **ppOut) override
VOID SelectItem(INT iItem)
LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
VOID SetEditSel(INT ich0, INT ich1)
LRESULT OnNCActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
STDMETHODIMP GetDropDownStatus(DWORD *pdwFlags, LPWSTR *ppwszString) override
LRESULT OnAutoCompFinish(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
CACScrollBar m_hwndScrollBar
BOOL OnListUpDown(UINT vk)
CStringW GetItemText(INT iItem) const
VOID ExtractInnerList(CSimpleArray< CStringW > &outerList, const CSimpleArray< CStringW > &innerList, const CString &strText)
LRESULT OnNCDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnMeasureItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
LRESULT OnNCLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL CanAutoSuggest() const
VOID DoAutoAppend(PAC_THREAD pThread)
VOID FinishCompletion(PAC_THREAD pThread)
CComPtr< IEnumString > m_pEnum
VOID ReLoadInnerList(PAC_THREAD pThread)
CStringW GetStemText(const CStringW &strText) const
STDMETHODIMP SetOptions(DWORD dwFlag) override
VOID CalcRects(BOOL bDowner, RECT &rcListView, RECT &rcScrollBar, RECT &rcSizeBox) const
VOID LoadQuickComplete(LPCWSTR pwszRegKeyPath, LPCWSTR pwszQuickComplete)
STDMETHODIMP Skip(ULONG celt) override
LRESULT OnAutoCompStart(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
BOOL CanAutoAppend() const
int Width() const noexcept
int Height() const noexcept
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem)
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
INT WINAPI StrCmpNIW(LPCWSTR lpszStr, LPCWSTR lpszComp, INT iLen)
LONG WINAPI SHRegGetUSValueW(LPCWSTR pSubKey, LPCWSTR pValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData, BOOL flagIgnoreHKCU, LPVOID pDefaultData, DWORD wDefaultDataSize)
BOOL WINAPI ChrCmpIW(WCHAR ch1, WCHAR ch2)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
int WINAPI StrCmpIW(LPCWSTR lpszStr, LPCWSTR lpszComp)
#define InterlockedExchangePointer(Target, Value)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
VOID WINAPI CoTaskMemFree(LPVOID ptr)
#define IMN_OPENCANDIDATE
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
static DWORD DWORD void LPSTR DWORD cch
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static HANDLE ULONG_PTR dwData
unsigned __int3264 UINT_PTR
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
const GUID IID_IEnumString
#define WS_EX_NOPARENTNOTIFY
_Out_opt_ int _Out_opt_ int * cy
#define LVS_EX_ONECLICKACTIVATE
#define LVS_NOCOLUMNHEADER
#define LVS_OWNERDRAWFIXED
#define LVS_EX_FULLROWSELECT
#define LVS_EX_TRACKSELECT
_CRTIMP uintptr_t __cdecl _beginthreadex(_In_opt_ void *_Security, _In_ unsigned _StackSize, _In_ unsigned(__stdcall *_StartAddress)(void *), _In_opt_ void *_ArgList, _In_ unsigned _InitFlag, _Out_opt_ unsigned *_ThrdAddr)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
CSimpleArray< CStringW > m_outerList
CSimpleArray< CStringW > m_innerList
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetCurrentThreadId(void)
#define SubclassWindow(hwnd, lpfn)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HRGN WINAPI PathToRegion(_In_ HDC)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI EndPath(_In_ HDC)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
BOOL WINAPI BeginPath(_In_ HDC hdc)
HWND WINAPI GetFocus(void)
HWND WINAPI ChildWindowFromPoint(_In_ HWND, _In_ POINT)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
#define SW_SHOWNOACTIVATE
HWND WINAPI GetCapture(void)
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI ShowWindowAsync(_In_ HWND, _In_ int)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define EM_SETWORDBREAKPROC
#define COLOR_HIGHLIGHTTEXT
HDC WINAPI GetDC(_In_opt_ HWND)
int(CALLBACK * EDITWORDBREAKPROCW)(LPWSTR, int, int, int)
#define CB_GETDROPPEDSTATE
HWND WINAPI GetParent(_In_ HWND)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)