ReactOS  0.4.15-dev-5131-g311fcc6
atlwin.h
Go to the documentation of this file.
1 /*
2  * ReactOS ATL
3  *
4  * Copyright 2009 Andrew Hill <ash77@reactos.org>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #pragma once
22 
23 #if defined(__GNUC__) || defined(__clang__)
24 #define GCCU(x) x __attribute__((unused))
25 #define Unused(x)
26 #else
27 #define GCCU(x) (x)
28 #define Unused(x) (x);
29 #endif // __GNUC__
30 
31 #if !defined(_WIN64)
32 #ifdef SetWindowLongPtr
33 #undef SetWindowLongPtr
34 inline LONG_PTR SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong)
35 {
36  return SetWindowLong(hWnd, nIndex, (LONG)dwNewLong);
37 }
38 #endif
39 
40 #ifdef GetWindowLongPtr
41 #undef GetWindowLongPtr
42 inline LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex)
43 {
44  return (LONG_PTR)GetWindowLong(hWnd, nIndex);
45 }
46 #endif
47 #endif // !_WIN64
48 
49 #pragma push_macro("SubclassWindow")
50 #undef SubclassWindow
51 
52 namespace ATL
53 {
54 
55 #ifndef GET_X_LPARAM
56 #define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
57 #endif
58 #ifndef GET_Y_LPARAM
59 #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
60 #endif
61 
62 
65 
66 template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0>
68 {
69 public:
70  static DWORD GetWndStyle(DWORD dwStyle)
71  {
72  if (dwStyle == 0)
73  return t_dwStyle;
74  return dwStyle;
75  }
76 
77  static DWORD GetWndExStyle(DWORD dwExStyle)
78  {
79  if (dwExStyle == 0)
80  return t_dwExStyle;
81  return dwExStyle;
82  }
83 };
84 
88 
89 template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0, class TWinTraits = CControlWinTraits>
91 {
92 public:
93  static DWORD GetWndStyle(DWORD dwStyle)
94  {
95  return dwStyle | t_dwStyle | TWinTraits::GetWndStyle(dwStyle);
96  }
97 
98  static DWORD GetWndExStyle(DWORD dwExStyle)
99  {
100  return dwExStyle | t_dwExStyle | TWinTraits::GetWndExStyle(dwExStyle);
101  }
102 };
103 
105 {
106 public:
108 public:
110  {
111  m_hMenu = hMenu;
112  }
113 
115  {
116  m_hMenu = (HMENU)(UINT_PTR)nID;
117  }
118 };
119 
120 class _U_RECT
121 {
122 public:
124 public:
125  _U_RECT(LPRECT lpRect)
126  {
127  m_lpRect = lpRect;
128  }
129 
131  {
132  m_lpRect = &rc;
133  }
134 };
135 
136 struct _ATL_MSG : public MSG
137 {
138 public:
140 public:
141  _ATL_MSG(HWND hWnd, UINT uMsg, WPARAM wParamIn, LPARAM lParamIn, BOOL bHandledIn = TRUE)
142  {
143  hwnd = hWnd;
144  message = uMsg;
145  wParam = wParamIn;
146  lParam = lParamIn;
147  time = 0;
148  pt.x = 0;
149  pt.y = 0;
150  bHandled = bHandledIn;
151  }
152 };
153 
154 #if defined(_M_IX86)
155 
156 #pragma pack(push,1)
157 struct thunkCode
158 {
159  DWORD m_mov; /* mov dword ptr [esp+4], m_this */
160  DWORD m_this;
161  BYTE m_jmp; /* jmp relproc */
162  DWORD m_relproc;
163 
164  void
165  Init(WNDPROC proc, void *pThis)
166  {
167  m_mov = 0x042444C7;
168  m_this = PtrToUlong(pThis);
169  m_jmp = 0xe9;
170  m_relproc = DWORD(reinterpret_cast<char*>(proc) - (reinterpret_cast<char*>(this) + sizeof(thunkCode)));
171  FlushInstructionCache(GetCurrentProcess(), this, sizeof(thunkCode));
172  }
173 };
174 #pragma pack(pop)
175 
176 #elif defined(_AMD64_)
177 
178 #pragma pack(push,1)
179 struct thunkCode
180 {
181  USHORT m_mov_rcx; /* mov rcx, m_this */
182  ULONG64 m_this;
183  USHORT m_mov_rax; /* mov rax, m_proc */
184  ULONG64 m_proc;
185  USHORT m_jmp; /* jmp rax */
186 
187  void
188  Init(WNDPROC proc, void *pThis)
189  {
190  m_mov_rcx = 0xb948;
191  m_this = (ULONG64)pThis;
192  m_mov_rax = 0xb848;
193  m_proc = (ULONG64)proc;
194  m_jmp = 0xe0ff;
195  FlushInstructionCache(GetCurrentProcess(), this, sizeof(thunkCode));
196  }
197 };
198 #pragma pack(pop)
199 
200 #elif defined(_M_ARM)
201 
202 #pragma pack(push,4)
203 struct thunkCode
204 {
205  DWORD m_mov_r0; /* mov r0, m_this */
206  DWORD m_mov_pc; /* mov pc, m_proc */
207  DWORD m_this;
208  DWORD m_proc;
209 
210  void
211  Init(WNDPROC proc, void *pThis)
212  {
213  m_mov_r0 = 0xE59F0000;
214  m_mov_pc = 0xE59FF000;
215  m_this = (DWORD)pThis;
216  m_proc = (DWORD)proc;
217  FlushInstructionCache(GetCurrentProcess(), this, sizeof(thunkCode));
218  }
219 };
220 #pragma pack(pop)
221 
222 #else
223 #error ARCH not supported
224 #endif
225 
227 {
228 public:
229  thunkCode *m_pthunk;
231 
232 public:
234  {
235  m_pthunk = (thunkCode*)VirtualAlloc(NULL, sizeof(thunkCode), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
236  }
237 
239  {
240  if (m_pthunk != NULL)
242  }
243 
244  BOOL Init(WNDPROC proc, void *pThis)
245  {
246  if (m_pthunk == NULL)
247  return FALSE;
248  m_pthunk->Init(proc, pThis);
249  return TRUE;
250  }
251 
253  {
254  return reinterpret_cast<WNDPROC>(m_pthunk);
255  }
256 };
257 
259 {
260 public:
261  virtual BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID) = 0;
262 };
263 
264 class CWindow
265 {
266 public:
268  static RECT rcDefault;
269 
270 public:
272  {
273  m_hWnd = hWnd;
274  }
275 
276  operator HWND() const
277  {
278  return m_hWnd;
279  }
280 
282  {
283  return NULL;
284  }
285 
287  {
290  }
291 
292  void Attach(HWND hWndNew)
293  {
294  m_hWnd = hWndNew;
295  }
296 
298  {
300  return ::BeginPaint(m_hWnd, lpPaint);
301  }
302 
304  {
307  }
308 
309  BOOL CenterWindow(HWND hWndCenter = NULL)
310  {
312  if (hWndCenter == NULL)
313  hWndCenter = ::GetParent(m_hWnd);
314  if (hWndCenter == NULL)
315  return FALSE;
316  RECT wndCenterRect, wndRect;
317  if (!::GetWindowRect(hWndCenter, &wndCenterRect) || !::GetWindowRect(m_hWnd, &wndRect))
318  return FALSE;
319  int wndCenterWidth = wndCenterRect.right - wndCenterRect.left;
320  int wndCenterHeight = wndCenterRect.bottom - wndCenterRect.top;
321  int wndWidth = wndRect.right - wndRect.left;
322  int wndHeight = wndRect.bottom - wndRect.top;
323  int xPos = wndCenterRect.left + ((wndCenterWidth - wndWidth + 1) >> 1);
324  int yPos = wndCenterRect.top + ((wndCenterHeight - wndHeight + 1) >> 1);
325 
326  if (!(::GetWindowLong(hWndCenter, GWL_STYLE) & WS_CHILD))
327  {
328  MONITORINFO mi;
329  mi.cbSize = sizeof(mi);
330  HMONITOR hMonitor = MonitorFromWindow(hWndCenter, MONITOR_DEFAULTTOPRIMARY);
331  GetMonitorInfo(hMonitor, &mi);
332 
333  if (xPos + wndWidth > mi.rcWork.right)
334  {
335  xPos = mi.rcWork.right - wndWidth;
336  }
337  else if (xPos < mi.rcWork.left)
338  {
339  xPos = mi.rcWork.left;
340  }
341 
342  if (yPos + wndHeight > mi.rcWork.bottom)
343  {
344  yPos = mi.rcWork.bottom - wndHeight;
345  }
346  if (yPos < mi.rcWork.top)
347  {
348  yPos = mi.rcWork.top;
349  }
350  }
352  xPos,
353  yPos,
354  wndWidth, wndHeight, TRUE);
355  }
356 
358  {
361  }
362 
363  BOOL CheckDlgButton(int nIDButton, UINT nCheck)
364  {
366  return ::CheckDlgButton(m_hWnd, nIDButton, nCheck);
367  }
368 
369  BOOL CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
370  {
372  return ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton);
373  }
374 
376  {
379  }
380 
382  {
385  }
386 
387  BOOL ClientToScreen(LPPOINT lpPoint) const
388  {
391  }
392 
393  BOOL ClientToScreen(LPRECT lpRect) const
394  {
395  if (lpRect == NULL)
396  return FALSE;
398  POINT leftTop = {lpRect->left, lpRect->top};
399  POINT rightBottom = {lpRect->right, lpRect->bottom};
400  BOOL success = ::ClientToScreen(m_hWnd, &leftTop) && ::ClientToScreen(m_hWnd, &rightBottom);
401  if (success)
402  {
403  lpRect->left = leftTop.x;
404  lpRect->top = leftTop.y;
405  lpRect->right = rightBottom.x;
406  lpRect->bottom = rightBottom.y;
407  }
408  return success;
409  }
410 
411  HWND Create(LPCTSTR lpstrWndClass, HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL, DWORD dwStyle = 0, DWORD dwExStyle = 0, _U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)
412  {
413  HWND hWnd;
414  ATLASSERT(m_hWnd == NULL);
415  hWnd = ::CreateWindowEx(dwExStyle,
416  lpstrWndClass,
417  szWindowName,
418  dwStyle,
419  rect.m_lpRect->left,
420  rect.m_lpRect->top,
421  rect.m_lpRect->right - rect.m_lpRect->left,
422  rect.m_lpRect->bottom - rect.m_lpRect->top,
423  hWndParent,
424  MenuOrID.m_hMenu,
425  _AtlBaseModule.GetModuleInstance(),
426  lpCreateParam);
427  if (hWnd != NULL)
428  m_hWnd = hWnd;
429  return hWnd;
430  }
431 
433  {
435  return ::CreateCaret(m_hWnd, pBitmap, 0, 0);
436  }
437 
438  BOOL CreateGrayCaret(int nWidth, int nHeight)
439  {
441  return ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight);
442  }
443 
444  BOOL CreateSolidCaret(int nWidth, int nHeight)
445  {
447  return ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight);
448  }
449 
450  HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
451  {
453  return ::DeferWindowPos(hWinPosInfo, m_hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
454  }
455 
457  {
459 
460  if (!::DestroyWindow(m_hWnd))
461  return FALSE;
462 
463  m_hWnd = NULL;
464  return TRUE;
465  }
466 
468  {
469  HWND hWnd = m_hWnd;
470  m_hWnd = NULL;
471  return hWnd;
472  }
473 
474  int DlgDirList(LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
475  {
477  return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox, nIDStaticPath, nFileType);
478  }
479 
480  int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
481  {
483  return ::DlgDirListComboBox(m_hWnd, lpPathSpec, nIDComboBox, nIDStaticPath, nFileType);
484  }
485 
486  BOOL DlgDirSelect(LPTSTR lpString, int nCount, int nIDListBox)
487  {
489  return ::DlgDirSelectEx(m_hWnd, lpString, nCount, nIDListBox);
490  }
491 
492  BOOL DlgDirSelectComboBox(LPTSTR lpString, int nCount, int nIDComboBox)
493  {
495  return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, nCount, nIDComboBox);
496  }
497 
498  void DragAcceptFiles(BOOL bAccept = TRUE)
499  {
501 // FIXME following line requires shellapi.h
502 // ::DragAcceptFiles(m_hWnd, bAccept);
503  }
504 
506  {
509  }
510 
511  BOOL EnableScrollBar(UINT uSBFlags, UINT uArrowFlags = ESB_ENABLE_BOTH)
512  {
514  return ::EnableScrollBar(m_hWnd, uSBFlags, uArrowFlags);
515  }
516 
518  {
521  }
522 
523  void EndPaint(LPPAINTSTRUCT lpPaint)
524  {
526  ::EndPaint(m_hWnd, lpPaint);
527  }
528 
530  {
533  }
534 
535  BOOL GetClientRect(LPRECT lpRect) const
536  {
539  }
540 
542  {
545  }
546 
547  HDC GetDCEx(HRGN hRgnClip, DWORD flags)
548  {
550  return ::GetDCEx(m_hWnd, hRgnClip, flags);
551  }
552 
553 private:
554  typedef struct _IDHWNDPAIR {
555  int nID;
558 
560  {
561  if (::GetWindowLong(hWnd, GWL_ID) == ((PIDHWNDPAIR)lParam)->nID)
562  {
563  ((PIDHWNDPAIR)lParam)->hWnd = hWnd;
564  return FALSE;
565  }
567  return (((PIDHWNDPAIR)lParam)->hWnd == NULL);
568  }
569 
570 public:
571  HWND GetDescendantWindow(int nID) const
572  {
574  IDHWNDPAIR idHWndPair;
575  idHWndPair.nID = nID;
576  idHWndPair.hWnd = NULL;
578  return idHWndPair.hWnd;
579  }
580 
581  HRESULT GetDlgControl(int nID, REFIID iid, void** ppCtrl)
582  {
584  return E_FAIL;//FIXME stub
585  }
586 
587  int GetDlgCtrlID() const
588  {
591  }
592 
593  HRESULT GetDlgHost(int nID, REFIID iid, void** ppHost)
594  {
596  return E_FAIL;//FIXME stub
597  }
598 
599  HWND GetDlgItem(_In_ int nID) const
600  {
603  }
604 
606  _In_ int nID,
607  _Out_opt_ BOOL* lpTrans = NULL,
608  _In_ BOOL bSigned = TRUE) const
609  {
611  return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);
612  }
613 
615  _In_ int nID,
616  _Out_writes_to_(nMaxCount, return + 1) LPTSTR lpStr,
617  _In_ int nMaxCount) const
618  {
621  }
622 
623 #ifdef __ATLSTR_H__
624  UINT GetDlgItemText(_In_ int nID, _Inout_ CSimpleString& strText) const
625  {
626  HWND item = GetDlgItem(nID);
627  if (!item)
628  {
629  strText.Empty();
630  return 0;
631  }
632  return CWindow(item).GetWindowText(strText);
633  }
634 #endif
635 
637  _In_ int nID,
639  {
640  HWND item = GetDlgItem(nID);
641  if (!item)
642  return FALSE;
643  return CWindow(item).GetWindowText(bstrText);
644  }
645 
647  {
650  }
651 
652  HFONT GetFont() const
653  {
655  return (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0);
656  }
657 
658  DWORD GetHotKey() const
659  {
661  return (DWORD)::SendMessage(m_hWnd, WM_GETHOTKEY, 0, 0);
662  }
663 
664  HICON GetIcon(BOOL bBigIcon = TRUE) const
665  {
667  return (HICON)::SendMessage(m_hWnd, WM_GETICON, (WPARAM)bBigIcon, 0);
668  }
669 
671  {
674  }
675 
676  HMENU GetMenu() const
677  {
680  }
681 
682  HWND GetNextDlgGroupItem(HWND hWndCtl, BOOL bPrevious = FALSE) const
683  {
685  return ::GetNextDlgGroupItem(m_hWnd, hWndCtl, bPrevious);
686  }
687 
688  HWND GetNextDlgTabItem(HWND hWndCtl, BOOL bPrevious = FALSE) const
689  {
691  return ::GetNextDlgTabItem(m_hWnd, hWndCtl, bPrevious);
692  }
693 
695  {
697  return CWindow(::GetParent(m_hWnd));
698  }
699 
700  BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo)
701  {
703  return ::GetScrollInfo(m_hWnd, nBar, lpScrollInfo);
704  }
705 
706  BOOL GetScrollPos(int nBar)
707  {
710  }
711 
712  BOOL GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
713  {
715  return ::GetScrollRange(m_hWnd, nBar, lpMinPos, lpMaxPos);
716  }
717 
718  DWORD GetStyle() const
719  {
722  }
723 
725  {
727  return ::GetSystemMenu(m_hWnd, bRevert);
728  }
729 
731  {
733 
735  HWND hWndTmp;
736  while ((hWndTmp = ::GetParent(hWndParent)) != NULL)
737  hWndParent = hWndTmp;
738 
739  return hWndParent;
740  }
741 
743  {
745  return NULL;//FIXME stub
746  }
747 
749  {
752  }
753 
754  BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE)
755  {
757  return ::GetUpdateRect(m_hWnd, lpRect, bErase);
758  }
759 
760  int GetUpdateRgn(HRGN hRgn, BOOL bErase = FALSE)
761  {
764  }
765 
766  HWND GetWindow(UINT nCmd) const
767  {
769  return ::GetWindow(m_hWnd, nCmd);
770  }
771 
773  {
776  }
777 
779  {
782  }
783 
784  LONG GetWindowLong(int nIndex) const
785  {
788  }
789 
790  LONG_PTR GetWindowLongPtr(int nIndex) const
791  {
794  }
795 
797  {
800  }
801 
803  {
805  DWORD processID;
806  ::GetWindowThreadProcessId(m_hWnd, &processID);
807  return processID;
808  }
809 
810  BOOL GetWindowRect(LPRECT lpRect) const
811  {
814  }
815 
816  int GetWindowRgn(HRGN hRgn)
817  {
820  }
821 
823  _Out_writes_to_(nMaxCount, return + 1) LPTSTR lpszStringBuf,
824  _In_ int nMaxCount) const
825  {
827  return ::GetWindowText(m_hWnd, lpszStringBuf, nMaxCount);
828  }
829 
830 #ifdef __ATLSTR_H__
831  int GetWindowText(_Inout_ CSimpleString& strText) const
832  {
833  int len = GetWindowTextLength();
834  len = GetWindowText(strText.GetBuffer(len + 1), len + 1);
835  strText.ReleaseBuffer(len);
836  return len;
837  }
838 #endif
839 
842  {
845  if (!::SysReAllocStringLen(&bstrText, NULL, length))
846  return FALSE;
847  if (::GetWindowTextW(m_hWnd, bstrText, length + 1))
848  return TRUE;
849  ::SysFreeString(bstrText);
850  bstrText = NULL;
851  return FALSE;
852  }
853 
855  {
858  }
859 
861  {
864  }
865 
866  WORD GetWindowWord(int nIndex) const
867  {
869  return (WORD)::GetWindowLong(m_hWnd, nIndex);
870  }
871 
872  void GotoDlgCtrl(HWND hWndCtrl) const
873  {
876  }
877 
879  {
882  }
883 
884  BOOL HiliteMenuItem(HMENU hMenu, UINT uHiliteItem, UINT uHilite)
885  {
887  return ::HiliteMenuItem(m_hWnd, hMenu, uHiliteItem, uHilite);
888  }
889 
891  {
894  }
895 
896  BOOL InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE)
897  {
899  return ::InvalidateRect(m_hWnd, lpRect, bErase);
900  }
901 
902  void InvalidateRgn(HRGN hRgn, BOOL bErase = TRUE)
903  {
905  ::InvalidateRgn(m_hWnd, hRgn, bErase);
906  }
907 
908  BOOL IsChild(const HWND hWnd) const
909  {
912  }
913 
915  {
918  }
919 
920  UINT IsDlgButtonChecked(int nIDButton) const
921  {
924  }
925 
926  BOOL IsIconic() const
927  {
930  }
931 
933  {
935  TCHAR pszType[10]; // Use sizeof("#32770")+3 so that extra characters can be detected.
936  if (!RealGetWindowClass(::GetParent(m_hWnd), pszType, _countof(pszType)))
937  return FALSE;
938  return !_tcscmp(pszType, _T("#32770"));
939  }
940 
941  BOOL IsWindow() const
942  {
944  }
945 
947  {
950  }
951 
953  {
956  }
957 
959  {
962  }
963 
964  BOOL IsZoomed() const
965  {
968  }
969 
971  {
973  return ::KillTimer(m_hWnd, nIDEvent);
974  }
975 
977  {
979  if (bLock)
982  }
983 
984  int MapWindowPoints(HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
985  {
987  return ::MapWindowPoints(m_hWnd, hWndTo, lpPoint, nCount);
988  }
989 
990  int MapWindowPoints(HWND hWndTo, LPRECT lpRect) const
991  {
993  return ::MapWindowPoints(m_hWnd, hWndTo, (LPPOINT)lpRect, sizeof(RECT) / sizeof(POINT));
994  }
995 
996  int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK)
997  {
999  return ::MessageBox(m_hWnd, lpszText, lpszCaption, nType);
1000  }
1001 
1002  BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0)
1003  {
1005  ::SetWindowLong(m_hWnd, GWL_STYLE, (::GetWindowLong(m_hWnd, GWL_STYLE) & ~dwRemove) | dwAdd);
1006  if (nFlags != 0)
1008  return TRUE;
1009  }
1010 
1011  BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0)
1012  {
1014  ::SetWindowLong(m_hWnd, GWL_EXSTYLE, (::GetWindowLong(m_hWnd, GWL_EXSTYLE) & ~dwRemove) | dwAdd);
1015  if (nFlags != 0)
1017  return TRUE;
1018  }
1019 
1020  BOOL MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE)
1021  {
1023  return ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
1024  }
1025 
1026  void NextDlgCtrl() const
1027  {
1030  }
1031 
1033  {
1036  }
1037 
1039  {
1042  }
1043 
1044  void PrevDlgCtrl() const
1045  {
1048  }
1049 
1050  void Print(HDC hDC, DWORD dwFlags) const
1051  {
1054  }
1055 
1057  {
1060  }
1061 
1062  BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL, HRGN hRgnUpdate = NULL, UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE)
1063  {
1065  return ::RedrawWindow(m_hWnd, lpRectUpdate, hRgnUpdate, flags);
1066  }
1067 
1069  {
1072  }
1073 
1074  BOOL ResizeClient(int nWidth, int nHeight, BOOL bRedraw = FALSE)
1075  {
1077  RECT clientRect, wndRect;
1078  ::GetClientRect(m_hWnd, &clientRect);
1079  ::GetWindowRect(m_hWnd, &wndRect);
1080  return ::MoveWindow(m_hWnd, wndRect.left, wndRect.top,
1081  nWidth + (wndRect.right - wndRect.left) - (clientRect.right - clientRect.left),
1082  nHeight + (wndRect.bottom - wndRect.top) - (clientRect.bottom - clientRect.top),
1083  bRedraw);
1084  }
1085 
1086  BOOL ScreenToClient(LPPOINT lpPoint) const
1087  {
1089  return ::ScreenToClient(m_hWnd, lpPoint);
1090  }
1091 
1092  BOOL ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL)
1093  {
1095  return ::ScrollWindow(m_hWnd, xAmount, yAmount, lpRect, lpClipRect);
1096  }
1097 
1098  int ScrollWindowEx(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
1099  {
1101  return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip, hRgnUpdate, lpRectUpdate, flags);
1102  }
1103 
1105  {
1108  }
1109 
1111  {
1114  }
1115 
1117  {
1118  ATLASSERT(::IsWindow(hWnd));
1120  }
1121 
1122 private:
1124  {
1126  return TRUE;
1127  }
1128 
1130  {
1133  return TRUE;
1134  }
1135 
1136 public:
1138  {
1140  MSG msg;
1141  msg.message = message;
1142  msg.wParam = wParam;
1143  msg.lParam = lParam;
1144  if (bDeep)
1146  else
1148  }
1149 
1151  {
1154  }
1155 
1157  {
1160  }
1161 
1163  {
1166  }
1167 
1169  {
1172  }
1173 
1174  int SetDlgCtrlID(int nID)
1175  {
1178  }
1179 
1180  BOOL SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE)
1181  {
1183  return ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned);
1184  }
1185 
1186  BOOL SetDlgItemText(int nID, LPCTSTR lpszString)
1187  {
1189  return ::SetDlgItemText(m_hWnd, nID, lpszString);
1190  }
1191 
1193  {
1196  }
1197 
1198  void SetFont(HFONT hFont, BOOL bRedraw = TRUE)
1199  {
1202  }
1203 
1204  int SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
1205  {
1207  return ::SendMessage(m_hWnd, WM_SETHOTKEY, MAKEWPARAM(wVirtualKeyCode, wModifiers), 0);
1208  }
1209 
1211  {
1213  return (HICON)::SendMessage(m_hWnd, WM_SETICON, (WPARAM)bBigIcon, (LPARAM)hIcon);
1214  }
1215 
1217  {
1219  return ::SetMenu(m_hWnd, hMenu);
1220  }
1221 
1222  HWND SetParent(HWND hWndNewParent)
1223  {
1225  return ::SetParent(m_hWnd, hWndNewParent);
1226  }
1227 
1228  void SetRedraw(BOOL bRedraw = TRUE)
1229  {
1231  ::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)bRedraw, 0);
1232  }
1233 
1234  int SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
1235  {
1237  return ::SetScrollInfo(m_hWnd, nBar, lpScrollInfo, bRedraw);
1238  }
1239 
1240  int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE)
1241  {
1243  return ::SetScrollPos(m_hWnd, nBar, nPos, bRedraw);
1244  }
1245 
1246  BOOL SetScrollRange(int nBar, int nMinPos, int nMaxPos, BOOL bRedraw = TRUE)
1247  {
1249  return ::SetScrollRange(m_hWnd, nBar, nMinPos, nMaxPos, bRedraw);
1250  }
1251 
1252  UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD) = NULL)
1253  {
1255  return ::SetTimer(m_hWnd, nIDEvent, nElapse, reinterpret_cast<TIMERPROC>(lpfnTimer));
1256  }
1257 
1259  {
1261  return ::SetWindowContextHelpId(m_hWnd, dwContextHelpId);
1262  }
1263 
1264  LONG SetWindowLong(int nIndex, LONG dwNewLong)
1265  {
1267  return ::SetWindowLong(m_hWnd, nIndex, dwNewLong);
1268  }
1269 
1270  LONG_PTR SetWindowLongPtr(int nIndex, LONG_PTR dwNewLong)
1271  {
1273  return ::SetWindowLongPtr(m_hWnd, nIndex, dwNewLong);
1274  }
1275 
1277  {
1280  }
1281 
1282  BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
1283  {
1285  return ::SetWindowPos(m_hWnd, hWndInsertAfter, x, y, cx, cy, nFlags);
1286  }
1287 
1288  int SetWindowRgn(HRGN hRgn, BOOL bRedraw = FALSE)
1289  {
1291  return ::SetWindowRgn(m_hWnd, hRgn, bRedraw);
1292  }
1293 
1295  {
1297  return ::SetWindowText(m_hWnd, lpszString);
1298  }
1299 
1300  WORD SetWindowWord(int nIndex, WORD wNewWord)
1301  {
1303  if (nIndex >= -4)
1304  return ::SetWindowLong(m_hWnd, nIndex - 2, MAKELONG(LOWORD(::GetWindowLong(m_hWnd, nIndex - 2)), wNewWord));
1305  else
1306  return ::SetWindowLong(m_hWnd, nIndex, MAKELONG(wNewWord, HIWORD(::GetWindowLong(m_hWnd, nIndex))));
1307  }
1308 
1310  {
1313  }
1314 
1316  {
1319  }
1320 
1322  {
1324  return ::ShowScrollBar(m_hWnd, nBar, bShow);
1325  }
1326 
1327  BOOL ShowWindow(int nCmdShow)
1328  {
1330  return ::ShowWindow(m_hWnd, nCmdShow);
1331  }
1332 
1333  BOOL ShowWindowAsync(int nCmdShow)
1334  {
1336  return ::ShowWindowAsync(m_hWnd, nCmdShow);
1337  }
1338 
1340  {
1343  }
1344 
1346  {
1348  return ::ValidateRect(m_hWnd, lpRect);
1349  }
1350 
1352  {
1355  }
1356 
1358  {
1360  return ::WinHelp(m_hWnd, lpszHelp, nCmd, dwData);
1361  }
1362 };
1363 
1365 
1366 template <class TBase = CWindow>
1367 class CWindowImplRoot : public TBase, public CMessageMap
1368 {
1369 public:
1370  enum { WINSTATE_DESTROYED = 0x00000001 };
1371 
1372 public:
1376 
1378  : m_pCurrentMsg(NULL)
1379  , m_dwState(0)
1380  {
1381  }
1382 
1384  {
1385  }
1386 };
1387 
1388 
1389 template <class TBase = CWindow>
1390 class CDialogImplBaseT : public CWindowImplRoot<TBase>
1391 {
1392 public:
1393  // + Hacks for gcc
1395  // - Hacks for gcc
1396 
1398  {
1399  }
1401  {
1402  return DialogProc;
1403  }
1404 
1406  {
1407  CDialogImplBaseT<TBase>* pThis;
1408  DLGPROC newDlgProc;
1409  DLGPROC GCCU(pOldProc);
1410 
1411  pThis = reinterpret_cast<CDialogImplBaseT<TBase>*>(_AtlWinModule.ExtractCreateWndData());
1412  ATLASSERT(pThis != NULL);
1413  if (pThis == NULL)
1414  return 0;
1415 
1416  pThis->m_thunk.Init((WNDPROC)pThis->GetDialogProc(), pThis);
1417  newDlgProc = reinterpret_cast<DLGPROC>(pThis->m_thunk.GetWNDPROC());
1418  pOldProc = reinterpret_cast<DLGPROC>(::SetWindowLongPtr(hWnd, DWLP_DLGPROC, reinterpret_cast<LONG_PTR>(newDlgProc)));
1419  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1420  pThis->m_hWnd = hWnd;
1421  return newDlgProc(hWnd, uMsg, wParam, lParam);
1422  }
1423 
1425  {
1426  CDialogImplBaseT<TBase>* pThis = reinterpret_cast<CDialogImplBaseT<TBase>*>(hWnd);
1427  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1428  LRESULT lResult = 0;
1429  const _ATL_MSG *previousMessage;
1430  BOOL handled;
1431 
1432  hWnd = pThis->m_hWnd;
1433  previousMessage = pThis->m_pCurrentMsg;
1434  pThis->m_pCurrentMsg = &msg;
1435 
1436  handled = pThis->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, 0);
1437  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1438 
1439  if (handled)
1440  {
1441  if ((pThis->m_dwState & WINSTATE_DESTROYED) == 0)
1442  {
1443  ::SetWindowLongPtr(pThis->m_hWnd, DWLP_MSGRESULT, lResult);
1444  }
1445  }
1446  else
1447  {
1448  if (uMsg == WM_NCDESTROY)
1449  {
1450  pThis->m_dwState |= WINSTATE_DESTROYED;
1451  }
1452  }
1453 
1454  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1455  pThis->m_pCurrentMsg = previousMessage;
1456 
1457  if (previousMessage == NULL && (pThis->m_dwState & WINSTATE_DESTROYED) != 0)
1458  {
1459  pThis->m_dwState &= ~WINSTATE_DESTROYED;
1460  pThis->m_hWnd = NULL;
1461  pThis->OnFinalMessage(hWnd);
1462  }
1463  return lResult;
1464  }
1465 
1466  virtual void OnFinalMessage(HWND)
1467  {
1468  }
1469 };
1470 
1471 
1472 template <class T, class TBase = CWindow>
1473 class CDialogImpl : public CDialogImplBaseT<TBase>
1474 {
1475 public:
1476  // + Hacks for gcc
1479  // - Hacks for gcc
1480 
1482  {
1483  BOOL result;
1484  HWND hWnd;
1485  T* pImpl;
1486 
1487  result = m_thunk.Init(NULL, NULL);
1488  if (result == FALSE)
1489  return NULL;
1490 
1491  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1492 
1493  pImpl = static_cast<T*>(this);
1494  hWnd = ::CreateDialogParam(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(pImpl->IDD), hWndParent, T::StartDialogProc, dwInitParam);
1495  return hWnd;
1496  }
1497 
1499  {
1500  BOOL result;
1501  T* pImpl;
1502 
1503  result = m_thunk.Init(NULL, NULL);
1504  if (result == FALSE)
1505  return -1;
1506 
1507  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1508 
1509  pImpl = static_cast<T*>(this);
1510  return ::DialogBoxParam(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(pImpl->IDD), hWndParent, T::StartDialogProc, dwInitParam);
1511  }
1512 
1513  BOOL EndDialog(_In_ int nRetCode)
1514  {
1515  return ::EndDialog(m_hWnd, nRetCode);
1516  }
1517 
1519  {
1520  return ::DestroyWindow(m_hWnd);
1521  }
1522 };
1523 
1524 template <class TBase = CWindow, class TWinTraits = CControlWinTraits>
1525 class CWindowImplBaseT : public CWindowImplRoot<TBase>
1526 {
1527 public:
1528  // + Hacks for gcc
1532  // - Hacks for gcc
1533 
1535 
1536 public:
1538  {
1540  }
1541 
1542  virtual void OnFinalMessage(HWND /* hWnd */)
1543  {
1544  }
1545 
1547  {
1548  ATLASSERT(m_hWnd == NULL);
1549  ATLASSERT(::IsWindow(hWnd));
1550 
1552  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1553 
1554  BOOL result = m_thunk.Init(GetWindowProc(), this);
1555  if (result == FALSE)
1556  return FALSE;
1557 
1558  WNDPROC newWindowProc = m_thunk.GetWNDPROC();
1559  WNDPROC oldWindowProc = reinterpret_cast<WNDPROC>(
1560  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1561  if (oldWindowProc == NULL)
1562  return FALSE;
1563 
1564  pThis->m_pfnSuperWindowProc = oldWindowProc;
1565  pThis->m_hWnd = hWnd;
1566  return TRUE;
1567  }
1568 
1570  {
1571  ATLASSERT(m_hWnd != NULL);
1572  ATLASSERT(::IsWindow(m_hWnd));
1573 
1575  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1576 
1577  HWND hwndOld = pThis->m_hWnd;
1578  WNDPROC oldWindowProc = m_thunk.GetWNDPROC();
1579  WNDPROC subclassedProc = reinterpret_cast<WNDPROC>(
1580  ::GetWindowLongPtr(hwndOld, GWLP_WNDPROC));
1581  if (!bForce && oldWindowProc != subclassedProc)
1582  return NULL;
1583 
1585  (LONG_PTR)pThis->m_pfnSuperWindowProc);
1587  pThis->m_hWnd = NULL;
1588  return hwndOld;
1589  }
1590 
1592  {
1593  return WindowProc;
1594  }
1595 
1596  static DWORD GetWndStyle(DWORD dwStyle)
1597  {
1598  return TWinTraits::GetWndStyle(dwStyle);
1599  }
1600 
1601  static DWORD GetWndExStyle(DWORD dwExStyle)
1602  {
1603  return TWinTraits::GetWndExStyle(dwExStyle);
1604  }
1605 
1607  {
1609  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1611  }
1612 
1614  {
1616  WNDPROC newWindowProc;
1617  WNDPROC GCCU(pOldProc);
1618 
1619  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(_AtlWinModule.ExtractCreateWndData());
1620  ATLASSERT(pThis != NULL);
1621  if (pThis == NULL)
1622  return 0;
1623 
1624  pThis->m_thunk.Init(pThis->GetWindowProc(), pThis);
1625  newWindowProc = pThis->m_thunk.GetWNDPROC();
1626  pOldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1627  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1628  pThis->m_hWnd = hWnd;
1629  return newWindowProc(hWnd, uMsg, wParam, lParam);
1630  }
1631 
1633  {
1635  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1636  LRESULT lResult;
1637  const _ATL_MSG *previousMessage;
1638  BOOL handled;
1639  LONG_PTR saveWindowProc;
1640 
1641  ATLASSERT(pThis != NULL);
1642  if (pThis == NULL)
1643  return 0;
1644 
1645  ATLASSERT((pThis->m_dwState & WINSTATE_DESTROYED) == 0);
1646  ATLASSERT(pThis->m_hWnd != NULL);
1647  if ((pThis->m_dwState & WINSTATE_DESTROYED) != 0 || pThis->m_hWnd == NULL)
1648  return 0;
1649 
1650  hWnd = pThis->m_hWnd;
1651  previousMessage = pThis->m_pCurrentMsg;
1652  pThis->m_pCurrentMsg = &msg;
1653 
1654  handled = pThis->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, 0);
1655  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1656 
1657  if (handled == FALSE)
1658  {
1659  if (uMsg == WM_NCDESTROY)
1660  {
1661  saveWindowProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);
1662  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1663  if (pThis->m_pfnSuperWindowProc != ::DefWindowProc && saveWindowProc == ::GetWindowLongPtr(hWnd, GWLP_WNDPROC))
1664  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(pThis->m_pfnSuperWindowProc));
1665  pThis->m_dwState |= WINSTATE_DESTROYED;
1666  }
1667  else
1668  {
1669  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1670  }
1671  }
1672  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1673  pThis->m_pCurrentMsg = previousMessage;
1674  if (previousMessage == NULL && (pThis->m_dwState & WINSTATE_DESTROYED) != 0)
1675  {
1676  pThis->m_dwState &= ~WINSTATE_DESTROYED;
1677  pThis->m_hWnd = NULL;
1678  pThis->OnFinalMessage(hWnd);
1679  }
1680  return lResult;
1681  }
1682 
1683  HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle,
1684  _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
1685  {
1686  HWND hWnd;
1687 
1688  ATLASSERT(m_hWnd == NULL);
1689  ATLASSERT(atom != 0);
1690  if (atom == 0)
1691  return NULL;
1692  if (m_thunk.Init(NULL, NULL) == FALSE)
1693  {
1695  return NULL;
1696  }
1697 
1698  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1699  if (MenuOrID.m_hMenu == NULL && (dwStyle & WS_CHILD) != 0)
1700  MenuOrID.m_hMenu = (HMENU)(UINT_PTR)this;
1701  if (rect.m_lpRect == NULL)
1702  rect.m_lpRect = &TBase::rcDefault;
1703 
1704  hWnd = ::CreateWindowEx(dwExStyle, MAKEINTATOM(atom), szWindowName, dwStyle, rect.m_lpRect->left,
1705  rect.m_lpRect->top, rect.m_lpRect->right - rect.m_lpRect->left, rect.m_lpRect->bottom - rect.m_lpRect->top,
1706  hWndParent, MenuOrID.m_hMenu, _AtlBaseModule.GetModuleInstance(), lpCreateParam);
1707 
1708  ATLASSERT(m_hWnd == hWnd);
1709 
1710  return hWnd;
1711  }
1712 };
1713 
1714 
1715 template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits>
1716 class CWindowImpl : public CWindowImplBaseT<TBase, TWinTraits>
1717 {
1718 public:
1719  // + Hacks for gcc
1721  // - Hacks for gcc
1722 
1724  {
1725  return NULL;
1726  }
1727 
1728  HWND Create(HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL, DWORD dwStyle = 0,
1729  DWORD dwExStyle = 0, _U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)
1730  {
1732  ATOM atom;
1733 
1734  ATLASSERT(m_hWnd == NULL);
1735  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1736 
1737  if (T::GetWndClassInfo().m_lpszOrigName == NULL)
1738  T::GetWndClassInfo().m_lpszOrigName = pThis->GetWndClassName();
1739  atom = T::GetWndClassInfo().Register(&pThis->m_pfnSuperWindowProc);
1740 
1741  if (szWindowName == NULL)
1742  szWindowName = T::GetWndCaption();
1743  dwStyle = T::GetWndStyle(dwStyle);
1744  dwExStyle = T::GetWndExStyle(dwExStyle);
1745 
1746  return CWindowImplBaseT<TBase, TWinTraits>::Create(hWndParent, rect, szWindowName, dwStyle,
1747  dwExStyle, MenuOrID, atom, lpCreateParam);
1748  }
1749 };
1750 
1751 template <class TBase = CWindow, class TWinTraits = CControlWinTraits>
1752 class CContainedWindowT : public TBase
1753 {
1754 public:
1755  // + Hacks for gcc
1756  using TBase::m_hWnd;
1757  // - Hacks for gcc
1758 
1765 
1766 public:
1768  {
1769  m_lpszClassName = TBase::GetWndClassName();
1771  m_pObject = pObject;
1772  m_dwMsgMapID = dwMsgMapID;
1773  m_pCurrentMsg = NULL;
1774  }
1775 
1776  CContainedWindowT(LPCTSTR lpszClassName, CMessageMap *pObject, DWORD dwMsgMapID = 0)
1777  {
1778  m_lpszClassName = lpszClassName;
1780  m_pObject = pObject;
1781  m_dwMsgMapID = dwMsgMapID;
1782  m_pCurrentMsg = NULL;
1783  }
1784 
1786  {
1788  }
1789 
1791  {
1792  ATLASSERT(m_hWnd == NULL);
1793  ATLASSERT(::IsWindow(hWnd));
1794 
1795  CContainedWindowT<TBase>* pThis;
1796  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(this);
1797 
1798  BOOL result = m_thunk.Init(WindowProc, pThis);
1799  if (result == FALSE)
1800  return FALSE;
1801 
1802  WNDPROC newWindowProc = m_thunk.GetWNDPROC();
1803  WNDPROC oldWindowProc = reinterpret_cast<WNDPROC>(
1804  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1805  if (oldWindowProc == NULL)
1806  return FALSE;
1807 
1808  pThis->m_pfnSuperWindowProc = oldWindowProc;
1809  pThis->m_hWnd = hWnd;
1810  return TRUE;
1811  }
1812 
1814  {
1815  ATLASSERT(m_hWnd != NULL);
1816  ATLASSERT(::IsWindow(m_hWnd));
1817 
1818  CContainedWindowT<TBase>* pThis;
1819  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(this);
1820  HWND hwndOld = pThis->m_hWnd;
1821 
1822  WNDPROC subclassedProc = reinterpret_cast<WNDPROC>(
1823  ::GetWindowLongPtr(hwndOld, GWLP_WNDPROC));
1824  if (!bForce && m_thunk.GetWNDPROC() != subclassedProc)
1825  return NULL;
1826 
1828  (LONG_PTR)pThis->m_pfnSuperWindowProc);
1830  pThis->m_hWnd = NULL;
1831  return hwndOld;
1832  }
1833 
1835  {
1836  CContainedWindowT<TBase>* pThis;
1837  WNDPROC newWindowProc;
1838  WNDPROC GCCU(pOldProc);
1839 
1840  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(_AtlWinModule.ExtractCreateWndData());
1841  ATLASSERT(pThis != NULL);
1842  if (pThis == NULL)
1843  return 0;
1844  pThis->m_thunk.Init(WindowProc, pThis);
1845  newWindowProc = pThis->m_thunk.GetWNDPROC();
1846  pOldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1847  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1848  pThis->m_hWnd = hWnd;
1849  return newWindowProc(hWnd, uMsg, wParam, lParam);
1850  }
1851 
1853  {
1854  CContainedWindowT<TBase>* pThis = reinterpret_cast<CContainedWindowT<TBase>*>(hWnd);
1855  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1856  LRESULT lResult;
1857  const _ATL_MSG *previousMessage;
1858  BOOL handled;
1859  LONG_PTR saveWindowProc;
1860 
1861  ATLASSERT(pThis != NULL && pThis->m_hWnd != NULL && pThis->m_pObject != NULL);
1862  if (pThis == NULL || pThis->m_hWnd == NULL || pThis->m_pObject == NULL)
1863  return 0;
1864 
1865  hWnd = pThis->m_hWnd;
1866  previousMessage = pThis->m_pCurrentMsg;
1867  pThis->m_pCurrentMsg = &msg;
1868 
1869  handled = pThis->m_pObject->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, pThis->m_dwMsgMapID);
1870  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1871 
1872  pThis->m_pCurrentMsg = previousMessage;
1873  if (handled == FALSE)
1874  {
1875  if (uMsg == WM_NCDESTROY)
1876  {
1877  saveWindowProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);
1878  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1879  if (pThis->m_pfnSuperWindowProc != ::DefWindowProc && saveWindowProc == ::GetWindowLongPtr(hWnd, GWLP_WNDPROC))
1880  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(pThis->m_pfnSuperWindowProc));
1881  pThis->m_hWnd = NULL;
1882  }
1883  else
1884  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1885  }
1886  return lResult;
1887  }
1888 
1889 };
1891 
1892 #define BEGIN_MSG_MAP(theClass) \
1893 public: \
1894  BOOL ProcessWindowMessage(HWND GCCU(hWnd), UINT GCCU(uMsg), WPARAM GCCU(wParam), LPARAM GCCU(lParam), LRESULT &GCCU(lResult), DWORD dwMsgMapID = 0) \
1895  { \
1896  BOOL GCCU(bHandled) = TRUE; \
1897  Unused(hWnd); \
1898  Unused(uMsg); \
1899  Unused(wParam); \
1900  Unused(lParam); \
1901  Unused(lResult); \
1902  Unused(bHandled); \
1903  switch(dwMsgMapID) \
1904  { \
1905  case 0:
1906 
1907 #define ALT_MSG_MAP(map) \
1908  break; \
1909  case map:
1910 
1911 #define END_MSG_MAP() \
1912  break; \
1913  default: \
1914  ATLASSERT(FALSE); \
1915  break; \
1916  } \
1917  return FALSE; \
1918  }
1919 
1920 #define MESSAGE_HANDLER(msg, func) \
1921  if (uMsg == msg) \
1922  { \
1923  bHandled = TRUE; \
1924  lResult = func(uMsg, wParam, lParam, bHandled); \
1925  if (bHandled) \
1926  return TRUE; \
1927  }
1928 
1929 #define MESSAGE_RANGE_HANDLER(msgFirst, msgLast, func) \
1930  if (uMsg >= msgFirst && uMsg <= msgLast) \
1931  { \
1932  bHandled = TRUE; \
1933  lResult = func(uMsg, wParam, lParam, bHandled); \
1934  if (bHandled) \
1935  return TRUE; \
1936  }
1937 
1938 #define COMMAND_HANDLER(id, code, func) \
1939  if (uMsg == WM_COMMAND && id == LOWORD(wParam) && code == HIWORD(wParam)) \
1940  { \
1941  bHandled = TRUE; \
1942  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1943  if (bHandled) \
1944  return TRUE; \
1945  }
1946 
1947 #define COMMAND_ID_HANDLER(id, func) \
1948  if (uMsg == WM_COMMAND && id == LOWORD(wParam)) \
1949  { \
1950  bHandled = TRUE; \
1951  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1952  if (bHandled) \
1953  return TRUE; \
1954  }
1955 
1956 #define COMMAND_CODE_HANDLER(code, func) \
1957  if (uMsg == WM_COMMAND && code == HIWORD(wParam)) \
1958  { \
1959  bHandled = TRUE; \
1960  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1961  if (bHandled) \
1962  return TRUE; \
1963  }
1964 
1965 #define COMMAND_RANGE_HANDLER(idFirst, idLast, func) \
1966  if (uMsg == WM_COMMAND && LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) \
1967  { \
1968  bHandled = TRUE; \
1969  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1970  if (bHandled) \
1971  return TRUE; \
1972  }
1973 
1974 #define NOTIFY_CODE_HANDLER(cd, func) \
1975  if (uMsg == WM_NOTIFY && cd == ((LPNMHDR)lParam)->code) \
1976  { \
1977  bHandled = TRUE; \
1978  lResult = func((int)wParam, (LPNMHDR)lParam, bHandled); \
1979  if (bHandled) \
1980  return TRUE; \
1981  }
1982 
1983 #define NOTIFY_HANDLER(id, cd, func) \
1984  if (uMsg == WM_NOTIFY && id == ((LPNMHDR)lParam)->idFrom && cd == ((LPNMHDR)lParam)->code) \
1985  { \
1986  bHandled = TRUE; \
1987  lResult = func((int)wParam, (LPNMHDR)lParam, bHandled); \
1988  if (bHandled) \
1989  return TRUE; \
1990  }
1991 
1992 #define CHAIN_MSG_MAP(theChainClass) \
1993  { \
1994  if (theChainClass::ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult)) \
1995  return TRUE; \
1996  }
1997 
1998 #define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd) \
1999 static ATL::CWndClassInfo& GetWndClassInfo() \
2000 { \
2001  static ATL::CWndClassInfo wc = \
2002  { \
2003  { sizeof(WNDCLASSEX), style, StartWindowProc, \
2004  0, 0, NULL, NULL, NULL, (HBRUSH)(bkgnd + 1), NULL, WndClassName, NULL }, \
2005  NULL, NULL, IDC_ARROW, TRUE, 0, _T("") \
2006  }; \
2007  return wc; \
2008 }
2009 
2011 {
2018  TCHAR m_szAutoName[sizeof("ATL:") + sizeof(void *) * 2]; // == 4 characters + NULL + number of hexadecimal digits describing a pointer.
2019 
2021  {
2022  if (m_wc.hInstance == NULL)
2023  m_wc.hInstance = _AtlBaseModule.GetModuleInstance();
2024  if (m_atom == 0)
2025  {
2026  if (m_bSystemCursor)
2028  else
2029  m_wc.hCursor = ::LoadCursor(_AtlBaseModule.GetResourceInstance(), m_lpszCursorID);
2030 
2032  }
2033 
2034  return m_atom;
2035  }
2036 };
2037 
2038 }; // namespace ATL
2039 
2040 #pragma pop_macro("SubclassWindow")
2041 
BOOL ChangeClipboardChain(HWND hWndNewNext)
Definition: atlwin.h:357
BOOL IsDialogMessage(LPMSG lpMsg)
Definition: atlwin.h:914
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
CWinTraits< WS_OVERLAPPEDWINDOW|WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, WS_EX_MDICHILD > CMDIChildWinTraits
Definition: atlwin.h:87
BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo)
Definition: atlwin.h:700
#define CallWindowProc
Definition: winuser.h:5725
BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
Definition: atlwin.h:1011
HWND Create(HWND hWndParent, LPARAM dwInitParam=NULL)
Definition: atlwin.h:1481
BOOL WINAPI GetScrollRange(_In_ HWND, _In_ int, _Out_ LPINT, _Out_ LPINT)
BOOL IsWindowEnabled() const
Definition: atlwin.h:946
BOOL WINAPI ValidateRgn(_In_ HWND, _In_opt_ HRGN)
#define WM_SETHOTKEY
Definition: winuser.h:1642
HWND UnsubclassWindow(BOOL bForce=FALSE)
Definition: atlwin.h:1569
#define MAKEINTRESOURCE
Definition: winuser.h:591
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
int MapWindowPoints(HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
Definition: atlwin.h:984
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
FxObject * pObject
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
BOOL GetScrollPos(int nBar)
Definition: atlwin.h:706
UINT ArrangeIconicWindows()
Definition: atlwin.h:286
Definition: tftpd.h:59
static HICON
Definition: imagelist.c:84
struct ATL::CWindow::_IDHWNDPAIR IDHWNDPAIR
#define REFIID
Definition: guiddef.h:118
#define MAKEWPARAM(l, h)
Definition: winuser.h:3999
HWND SetFocus()
Definition: atlwin.h:1192
static LPCTSTR GetWndClassName()
Definition: atlwin.h:281
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
DWORD GetExStyle() const
Definition: atlwin.h:646
BOOL MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint=TRUE)
Definition: atlwin.h:1020
HWND GetWindow(UINT nCmd) const
Definition: atlwin.h:766
HWND WINAPI SetClipboardViewer(_In_ HWND)
BOOL WINAPI DrawMenuBar(_In_ HWND)
#define DWLP_DLGPROC
Definition: winuser.h:865
#define RegisterClassEx
Definition: winuser.h:5827
static DWORD GetWndStyle(DWORD dwStyle)
Definition: atlwin.h:93
DWORD GetWindowThreadID()
Definition: atlwin.h:860
UINT IsDlgButtonChecked(int nIDButton) const
Definition: atlwin.h:920
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
BOOL EndDialog(_In_ int nRetCode)
Definition: atlwin.h:1513
long y
Definition: polytest.cpp:48
DWORD GetStyle() const
Definition: atlwin.h:718
#define _Inout_
Definition: ms_sal.h:378
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
BOOL HiliteMenuItem(HMENU hMenu, UINT uHiliteItem, UINT uHilite)
Definition: atlwin.h:884
HCURSOR hCursor
Definition: winuser.h:3198
#define WM_NEXTDLGCTL
Definition: winuser.h:1633
GLuint64EXT * result
Definition: glext.h:11304
int SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw=TRUE)
Definition: atlwin.h:1234
BOOL WINAPI IsWindow(_In_opt_ HWND)
long x
Definition: polytest.cpp:48
#define ATLASSERT(x)
Definition: CComVariant.cpp:10
HMENU m_hMenu
Definition: atlwin.h:107
HDC WINAPI GetDC(_In_opt_ HWND)
WORD ATOM
Definition: dimm.idl:113
int _tcscmp(const _TCHAR *s1, const _TCHAR *s2)
Definition: tcscmp.h:8
void SetFont(HFONT hFont, BOOL bRedraw=TRUE)
Definition: atlwin.h:1198
#define TRUE
Definition: types.h:120
#define pt(x, y)
Definition: drawing.c:79
#define WM_GETHOTKEY
Definition: winuser.h:1643
BOOL WINAPI LockWindowUpdate(_In_opt_ HWND)
int GetWindowTextLength() const
Definition: atlwin.h:854
BOOL DlgDirSelect(LPTSTR lpString, int nCount, int nIDListBox)
Definition: atlwin.h:486
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
BOOL ShowWindowAsync(int nCmdShow)
Definition: atlwin.h:1333
HWND GetNextDlgGroupItem(HWND hWndCtl, BOOL bPrevious=FALSE) const
Definition: atlwin.h:682
#define DlgDirList
Definition: winuser.h:5756
static DWORD GetWndStyle(DWORD dwStyle)
Definition: atlwin.h:70
HWND Create(HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: atlwin.h:1728
CContainedWindowT(LPCTSTR lpszClassName, CMessageMap *pObject, DWORD dwMsgMapID=0)
Definition: atlwin.h:1776
#define GWL_ID
Definition: winuser.h:853
BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase=FALSE)
Definition: atlwin.h:754
HWND GetLastActivePopup() const
Definition: atlwin.h:670
GLint dy
Definition: linetemp.h:97
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1632
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
virtual ~CDialogImplBaseT()
Definition: atlwin.h:1397
BOOL EnableWindow(BOOL bEnable=TRUE)
Definition: atlwin.h:517
#define U(x)
Definition: wordpad.c:45
HWND GetDescendantWindow(int nID) const
Definition: atlwin.h:571
_U_RECT(LPRECT lpRect)
Definition: atlwin.h:125
#define _Out_writes_to_(size, count)
Definition: ms_sal.h:355
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: glext.h:5579
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:35
UINT WINAPI ArrangeIconicWindows(_In_ HWND)
#define WM_SETREDRAW
Definition: winuser.h:1606
CContainedWindowT< CWindow > CContainedWindow
Definition: atlwin.h:1890
BOOL IsWindow() const
Definition: atlwin.h:941
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
int GetWindowRgn(HRGN hRgn)
Definition: atlwin.h:816
BOOL WINAPI UpdateWindow(_In_ HWND)
HWND hWnd
Definition: settings.c:17
LONG SetWindowLong(int nIndex, LONG dwNewLong)
Definition: atlwin.h:1264
BOOL ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect=NULL, LPCRECT lpClipRect=NULL)
Definition: atlwin.h:1092
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
Definition: atlwin.h:1282
LONG top
Definition: windef.h:307
HANDLE HWND
Definition: compat.h:19
static HRGN hRgn
Definition: mapping.c:33
HFONT GetFont() const
Definition: atlwin.h:652
static HANDLE ULONG_PTR dwData
Definition: file.c:35
HRESULT GetDlgHost(int nID, REFIID iid, void **ppHost)
Definition: atlwin.h:593
#define GWL_EXSTYLE
Definition: winuser.h:845
int SetScrollPos(int nBar, int nPos, BOOL bRedraw=TRUE)
Definition: atlwin.h:1240
BOOL WinHelp(LPCTSTR lpszHelp, UINT nCmd=HELP_CONTEXT, DWORD dwData=0)
Definition: atlwin.h:1357
virtual void OnFinalMessage(HWND)
Definition: atlwin.h:1466
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
UINT GetDlgItemText(_In_ int nID, _Out_writes_to_(nMaxCount, return+1) LPTSTR lpStr, _In_ int nMaxCount) const
Definition: atlwin.h:614
HWND WINAPI SetFocus(_In_opt_ HWND)
virtual BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID)=0
static MONITORINFO mi
Definition: win.c:7338
BOOL WINAPI ChangeClipboardChain(_In_ HWND, _In_ HWND)
UINT_PTR WPARAM
Definition: windef.h:207
#define SetWindowLong
Definition: winuser.h:5843
void EndPaint(LPPAINTSTRUCT lpPaint)
Definition: atlwin.h:523
static HANDLE proc()
Definition: pdb.c:34
#define WS_CHILD
Definition: pedump.c:617
OLECHAR * BSTR
Definition: compat.h:2152
#define SendDlgItemMessage
Definition: winuser.h:5832
#define DlgDirSelectComboBoxEx
Definition: winuser.h:5758
BOOL Init(PUSERCONNECT UserCon)
Definition: dllmain.c:386
HRESULT GetDlgControl(int nID, REFIID iid, void **ppCtrl)
Definition: atlwin.h:581
__u16 time
Definition: mkdosfs.c:366
LONG left
Definition: windef.h:306
#define SWP_NOZORDER
Definition: winuser.h:1237
UINT uFlags
Definition: api.c:59
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI FlushInstructionCache(IN HANDLE hProcess, IN LPCVOID lpBaseAddress, IN SIZE_T nSize)
Definition: proc.c:1463
int32_t INT_PTR
Definition: typedefs.h:64
CWindow(HWND hWnd=NULL)
Definition: atlwin.h:271
#define IsDialogMessage
Definition: winuser.h:5799
WNDPROC GetWNDPROC()
Definition: atlwin.h:252
BOOL SetWindowText(LPCTSTR lpszString)
Definition: atlwin.h:1294
#define DlgDirListComboBox
Definition: winuser.h:5757
void DragAcceptFiles(BOOL bAccept=TRUE)
Definition: atlwin.h:498
LONG right
Definition: windef.h:308
HWND WINAPI GetNextDlgTabItem(_In_ HWND, _In_opt_ HWND, _In_ BOOL)
BOOL WINAPI IsIconic(_In_ HWND)
int GetWindowText(_Out_writes_to_(nMaxCount, return+1) LPTSTR lpszStringBuf, _In_ int nMaxCount) const
Definition: atlwin.h:822
BOOL WINAPI FlashWindow(_In_ HWND, _In_ BOOL)
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1834
#define E_FAIL
Definition: ddrawi.h:102
#define MEM_COMMIT
Definition: nt_native.h:1313
BOOL WINAPI DestroyWindow(_In_ HWND)
_AtlCreateWndData cd
Definition: atlwin.h:230
BOOL WINAPI SetWindowPlacement(_In_ HWND hWnd, _In_ const WINDOWPLACEMENT *)
#define DWORD
Definition: nt_native.h:44
int32_t INT
Definition: typedefs.h:58
BOOL ValidateRect(LPCRECT lpRect)
Definition: atlwin.h:1345
#define SetWindowLongPtr
Definition: treelist.c:70
POINTL point
Definition: edittest.c:50
HWND GetNextDlgTabItem(HWND hWndCtl, BOOL bPrevious=FALSE) const
Definition: atlwin.h:688
#define T
Definition: mbstring.h:31
& rect
Definition: startmenu.cpp:1413
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
void PrintClient(HDC hDC, DWORD dwFlags) const
Definition: atlwin.h:1056
BOOL Init(WNDPROC proc, void *pThis)
Definition: atlwin.h:244
HWND WINAPI GetTopWindow(_In_opt_ HWND)
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1606
HFONT hFont
Definition: main.c:53
CHAR * LPTSTR
Definition: xmlstorage.h:192
#define DWLP_MSGRESULT
Definition: winuser.h:864
_ATL_WNDCLASSINFOW CWndClassInfo
Definition: atlwin.h:63
struct ATL::CWindow::_IDHWNDPAIR * PIDHWNDPAIR
#define WM_PRINTCLIENT
Definition: richedit.h:70
const _ATL_MSG * m_pCurrentMsg
Definition: atlwin.h:1764
BOOL ResizeClient(int nWidth, int nHeight, BOOL bRedraw=FALSE)
Definition: atlwin.h:1074
HWND WINAPI GetLastActivePopup(_In_ HWND)
#define GetWindowText
Definition: winuser.h:5788
DWORD GetWindowContextHelpId() const
Definition: atlwin.h:772
BOOL WINAPI ScrollWindow(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT)
CWndProcThunk m_thunk
Definition: atlwin.h:1759
BOOL InvalidateRect(LPCRECT lpRect, BOOL bErase=TRUE)
Definition: atlwin.h:896
BOOL SetDlgItemText(int nID, LPCTSTR lpszString)
Definition: atlwin.h:1186
HWND WINAPI GetNextDlgGroupItem(_In_ HWND, _In_opt_ HWND, _In_ BOOL)
static BOOL CALLBACK GetDescendantWindowCallback(HWND hWnd, LPARAM lParam)
Definition: atlwin.h:559
int GetUpdateRgn(HRGN hRgn, BOOL bErase=FALSE)
Definition: atlwin.h:760
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
int WINAPI GetDlgCtrlID(_In_ HWND)
void PrevDlgCtrl() const
Definition: atlwin.h:1044
BOOL IsChild(const HWND hWnd) const
Definition: atlwin.h:908
BOOL SubclassWindow(HWND hWnd)
Definition: atlwin.h:1546
BOOL WINAPI ShowWindowAsync(_In_ HWND, _In_ int)
#define _Outref_result_maybenull_
Definition: ms_sal.h:491
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
Definition: virtmem.c:74
#define FALSE
Definition: types.h:117
HWND WINAPI SetActiveWindow(_In_ HWND)
HINSTANCE hInstance
Definition: winuser.h:3196
static DWORD GetWndStyle(DWORD dwStyle)
Definition: atlwin.h:1596
BOOL WINAPI HideCaret(_In_opt_ HWND)
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
void GotoDlgCtrl(HWND hWndCtrl) const
Definition: atlwin.h:872
BOOL WINAPI CreateCaret(_In_ HWND, _In_opt_ HBITMAP, _In_ int, _In_ int)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
int WINAPI GetUpdateRgn(_In_ HWND, _In_ HRGN, _In_ BOOL)
UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
Definition: atlwin.h:1252
BOOL CheckDlgButton(int nIDButton, UINT nCheck)
Definition: atlwin.h:363
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:535
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
LONG_PTR SetWindowLongPtr(int nIndex, LONG_PTR dwNewLong)
Definition: atlwin.h:1270
BOOL WINAPI SetWindowContextHelpId(_In_ HWND, _In_ DWORD)
BOOL CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
Definition: atlwin.h:369
BOOL WINAPI HiliteMenuItem(_In_ HWND, _In_ HMENU, _In_ UINT, _In_ UINT)
CWinTraits< WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, 0 > CControlWinTraits
Definition: atlwin.h:85
#define CreateWindowEx
Definition: winuser.h:5745
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL KillTimer(UINT_PTR nIDEvent)
Definition: atlwin.h:970
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:810
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
BOOL WINAPI BringWindowToTop(_In_ HWND)
#define MAKELONG(a, b)
Definition: typedefs.h:249
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
BOOL SetMenu(HMENU hMenu)
Definition: atlwin.h:1216
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
#define WM_GETFONT
Definition: winuser.h:1641
thunkCode * m_pthunk
Definition: atlwin.h:229
#define _In_
Definition: ms_sal.h:308
#define _Post_z_
Definition: ms_sal.h:691
LONG_PTR LPARAM
Definition: windef.h:208
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
virtual DLGPROC GetDialogProc()
Definition: atlwin.h:1400
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL HideCaret()
Definition: atlwin.h:878
#define PtrToUlong(u)
Definition: config.h:107
#define GetMonitorInfo
Definition: winuser.h:5781
CContainedWindowT(CMessageMap *pObject, DWORD dwMsgMapID=0)
Definition: atlwin.h:1767
BOOL ClientToScreen(LPRECT lpRect) const
Definition: atlwin.h:393
CWinTraits< WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, WS_EX_APPWINDOW|WS_EX_WINDOWEDGE > CFrameWinTraits
Definition: atlwin.h:86
BOOL SetWindowPlacement(const WINDOWPLACEMENT *lpwndpl)
Definition: atlwin.h:1276
#define PostMessage
Definition: winuser.h:5822
void SendMessageToDescendants(UINT message, WPARAM wParam=0, LPARAM lParam=0, BOOL bDeep=TRUE)
Definition: atlwin.h:1137
#define DlgDirSelectEx
Definition: winuser.h:5759
int SetDlgCtrlID(int nID)
Definition: atlwin.h:1174
BOOL ValidateRgn(HRGN hRgn)
Definition: atlwin.h:1351
int ScrollWindowEx(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
Definition: atlwin.h:1098
HMENU GetMenu() const
Definition: atlwin.h:676
BOOL ClientToScreen(LPPOINT lpPoint) const
Definition: atlwin.h:387
char TCHAR
Definition: xmlstorage.h:189
int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
Definition: atlwin.h:480
Definition: rosdlgs.h:5
DWORD GetHotKey() const
Definition: atlwin.h:658
int SetWindowRgn(HRGN hRgn, BOOL bRedraw=FALSE)
Definition: atlwin.h:1288
#define _T(x)
Definition: vfdio.h:22
virtual void OnFinalMessage(HWND)
Definition: atlwin.h:1542
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define HELP_CONTEXT
Definition: winuser.h:2396
#define GetDlgItemText
Definition: winuser.h:5775
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
HDC BeginPaint(LPPAINTSTRUCT lpPaint)
Definition: atlwin.h:297
TCHAR m_szAutoName[sizeof("ATL:")+sizeof(void *) *2]
Definition: atlwin.h:2018
LONG HRESULT
Definition: typedefs.h:79
HWND GetDlgItem(_In_ int nID) const
Definition: atlwin.h:599
_U_MENUorID(UINT nID)
Definition: atlwin.h:114
BOOL WINAPI SetMenu(_In_ HWND, _In_opt_ HMENU)
HWND Create(LPCTSTR lpstrWndClass, HWND hWndParent, _U_RECT rect=NULL, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: atlwin.h:411
#define SWP_NOACTIVATE
Definition: winuser.h:1232
BOOL EnableScrollBar(UINT uSBFlags, UINT uArrowFlags=ESB_ENABLE_BOTH)
Definition: atlwin.h:511
virtual ~CWindowImplRoot()
Definition: atlwin.h:1383
_ATL_MSG(HWND hWnd, UINT uMsg, WPARAM wParamIn, LPARAM lParamIn, BOOL bHandledIn=TRUE)
Definition: atlwin.h:141
#define RDW_ERASE
Definition: winuser.h:1201
#define _countof(array)
Definition: sndvol32.h:68
BOOL GetWindowPlacement(WINDOWPLACEMENT *lpwndpl) const
Definition: atlwin.h:796
BOOL OpenClipboard()
Definition: atlwin.h:1032
HDC GetWindowDC()
Definition: atlwin.h:778
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
virtual WNDPROC GetWindowProc()
Definition: atlwin.h:1591
#define WM_NCDESTROY
Definition: winuser.h:1674
BOOL UpdateWindow()
Definition: atlwin.h:1339
int WINAPI GetWindowTextLengthW(_In_ HWND)
BOOL WINAPI ValidateRect(_In_opt_ HWND, _In_opt_ LPCRECT)
HWND SetClipboardViewer()
Definition: atlwin.h:1168
DWORD WINAPI GetWindowContextHelpId(_In_ HWND)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
BOOL CenterWindow(HWND hWndCenter=NULL)
Definition: atlwin.h:309
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define success(from, fromstr, to, tostr)
#define SetLastError(x)
Definition: compat.h:611
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
#define SetDlgItemText
Definition: winuser.h:5839
BOOL IsParentDialog()
Definition: atlwin.h:932
ATOM Register(WNDPROC *p)
Definition: atlwin.h:2020
#define WM_PRINT
Definition: winuser.h:1870
GLbitfield flags
Definition: glext.h:7161
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1785
HWND WINAPI ChildWindowFromPointEx(_In_ HWND, _In_ POINT, _In_ UINT)
BOOL DrawMenuBar()
Definition: atlwin.h:505
BOOL IsWindowUnicode()
Definition: atlwin.h:958
unsigned __int64 ULONG64
Definition: imports.h:198
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
#define DialogBoxParam
Definition: winuser.h:5754
LPRECT m_lpRect
Definition: atlwin.h:123
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
void SetRedraw(BOOL bRedraw=TRUE)
Definition: atlwin.h:1228
BOOL ScreenToClient(LPPOINT lpPoint) const
Definition: atlwin.h:1086
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define GetWindowLong
Definition: winuser.h:5786
BOOL SendNotifyMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1150
static BOOL bInvert
Definition: win.c:51
static DWORD GetWndExStyle(DWORD dwExStyle)
Definition: atlwin.h:98
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
BOOL ShowScrollBar(UINT nBar, BOOL bShow=TRUE)
Definition: atlwin.h:1321
BOOL CreateGrayCaret(int nWidth, int nHeight)
Definition: atlwin.h:438
static INT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1424
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
LONG GetWindowLong(int nIndex) const
Definition: atlwin.h:784
GLenum GLsizei len
Definition: glext.h:6722
BOOL LockWindowUpdate(BOOL bLock=TRUE)
Definition: atlwin.h:976
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1613
BOOL CreateSolidCaret(int nWidth, int nHeight)
Definition: atlwin.h:444
HWND m_hWnd
Definition: atlwin.h:267
#define GetCurrentProcess()
Definition: compat.h:618
#define MessageBox
Definition: winuser.h:5812
BOOL ShowCaret()
Definition: atlwin.h:1309
BOOL DestroyWindow()
Definition: atlwin.h:456
BOOL SetWindowContextHelpId(DWORD dwContextHelpId)
Definition: atlwin.h:1258
void NextDlgCtrl() const
Definition: atlwin.h:1026
CMessageMap * m_pObject
Definition: atlwin.h:1762
static LRESULT SendMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1116
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
void Attach(HWND hWndNew)
Definition: atlwin.h:292
unsigned char BYTE
Definition: xxhash.c:193
int MapWindowPoints(HWND hWndTo, LPRECT lpRect) const
Definition: atlwin.h:990
WORD SetWindowWord(int nIndex, WORD wNewWord)
Definition: atlwin.h:1300
#define LoadCursor
Definition: winuser.h:5802
HWND Detach()
Definition: atlwin.h:467
#define GWLP_WNDPROC
Definition: treelist.c:66
BOOL IsIconic() const
Definition: atlwin.h:926
BOOL SubclassWindow(HWND hWnd)
Definition: atlwin.h:1790
static RECT rcDefault
Definition: atlwin.h:268
BOOL ShowOwnedPopups(BOOL bShow=TRUE)
Definition: atlwin.h:1315
int ReleaseDC(HDC hDC)
Definition: atlwin.h:1068
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2886
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define SWP_NOSIZE
Definition: winuser.h:1235
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2896
WORD GetWindowWord(int nIndex) const
Definition: atlwin.h:866
#define GWL_STYLE
Definition: winuser.h:846
CWndProcThunk m_thunk
Definition: atlwin.h:1373
_U_RECT(RECT &rc)
Definition: atlwin.h:130
static HDC hDC
Definition: 3dtext.c:33
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1761
int WINAPI SysReAllocStringLen(BSTR *old, const OLECHAR *str, unsigned int len)
Definition: oleaut.c:383
LONG_PTR GetWindowLongPtr(int nIndex) const
Definition: atlwin.h:790
HICON GetIcon(BOOL bBigIcon=TRUE) const
Definition: atlwin.h:664
HWND ChildWindowFromPoint(POINT point) const
Definition: atlwin.h:375
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI ShowOwnedPopups(_In_ HWND, _In_ BOOL)
HMENU GetSystemMenu(BOOL bRevert)
Definition: atlwin.h:724
HICON SetIcon(HICON hIcon, BOOL bBigIcon=TRUE)
Definition: atlwin.h:1210
_In_ BOOL bEnable
Definition: winddi.h:3426
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1534
BOOL IsZoomed() const
Definition: atlwin.h:964
static ATOM item
Definition: dde.c:856
HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle, _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
Definition: atlwin.h:1683
int DlgDirList(LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
Definition: atlwin.h:474
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1327
BOOL PostMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1038
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
static BOOL CALLBACK SendMessageToDescendantsCallback(HWND hWnd, LPARAM lParam)
Definition: atlwin.h:1123
unsigned short USHORT
Definition: pedump.c:61
BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
Definition: atlwin.h:1002
int GetDlgCtrlID() const
Definition: atlwin.h:587
HICON hIcon
Definition: msconfig.c:44
void Print(HDC hDC, DWORD dwFlags) const
Definition: atlwin.h:1050
DWORD cbSize
Definition: winuser.h:3774
int SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
Definition: atlwin.h:1204
#define GCCU(x)
Definition: atlwin.h:27
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define _Out_opt_
Definition: ms_sal.h:346
#define SetWindowText
Definition: winuser.h:5847
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
HDC WINAPI GetWindowDC(_In_opt_ HWND)
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsZoomed(_In_ HWND)
#define NULL
Definition: types.h:112
#define MB_OK
Definition: winuser.h:784
BOOL GetDlgItemText(_In_ int nID, _Inout_ _Outref_result_maybenull_ _Post_z_ BSTR &bstrText) const
Definition: atlwin.h:636
HWND SetParent(HWND hWndNewParent)
Definition: atlwin.h:1222
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
#define RealGetWindowClass
Definition: winuser.h:5825
#define WM_SETFONT
Definition: winuser.h:1640
HWND UnsubclassWindow(BOOL bForce=FALSE)
Definition: atlwin.h:1813
BOOL WINAPI SetScrollRange(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ BOOL)
BOOL FlashWindow(BOOL bInvert)
Definition: atlwin.h:529
HDC GetDCEx(HRGN hRgnClip, DWORD flags)
Definition: atlwin.h:547
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
LRESULT SendDlgItemMessage(int nID, UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1104
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
BOOL Invalidate(BOOL bErase=TRUE)
Definition: atlwin.h:890
HWND GetTopLevelParent() const
Definition: atlwin.h:730
#define msg(x)
Definition: auth_time.c:54
#define RDW_UPDATENOW
Definition: winuser.h:1210
static DWORD GetWndExStyle(DWORD dwExStyle)
Definition: atlwin.h:1601
_Out_opt_ int * cx
Definition: commctrl.h:585
#define MEM_RELEASE
Definition: nt_native.h:1316
__declspec(selectany) CAtlModule *_pAtlModule
Definition: atlbase.h:526
#define SendMessage
Definition: winuser.h:5833
BOOL SetDlgItemInt(int nID, UINT nValue, BOOL bSigned=TRUE)
Definition: atlwin.h:1180
HWND WINAPI ChildWindowFromPoint(_In_ HWND, _In_ POINT)
static LPCTSTR GetWndCaption()
Definition: atlwin.h:1723
#define HIWORD(l)
Definition: typedefs.h:247
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1110
#define GetWindowTextLength
Definition: winuser.h:5789
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL DlgDirSelectComboBox(LPTSTR lpString, int nCount, int nIDComboBox)
Definition: atlwin.h:492
HWND ChildWindowFromPointEx(POINT point, UINT uFlags) const
Definition: atlwin.h:381
static INT_PTR CALLBACK StartDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1405
LONG bottom
Definition: windef.h:309
BOOL WINAPI ShowCaret(_In_opt_ HWND)
void InvalidateRgn(HRGN hRgn, BOOL bErase=TRUE)
Definition: atlwin.h:902
#define SWP_NOMOVE
Definition: winuser.h:1234
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)
BOOL WINAPI CheckRadioButton(_In_ HWND, _In_ int, _In_ int, _In_ int)
BOOL NTAPI VirtualFree(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType)
Definition: virtmem.c:128
static HBITMAP
Definition: button.c:44
_U_MENUorID(HMENU hMenu)
Definition: atlwin.h:109
BOOL WINAPI OpenClipboard(_In_opt_ HWND)
static BOOL CALLBACK SendMessageToDescendantsCallbackDeep(HWND hWnd, LPARAM lParam)
Definition: atlwin.h:1129
#define PAGE_EXECUTE_READWRITE
Definition: nt_native.h:1308
int WINAPI GetWindowRgn(_In_ HWND, _In_ HRGN)
CWindow GetParent() const
Definition: atlwin.h:694
#define GetWindowLongPtr
Definition: treelist.c:73
BOOL WINAPI EnableScrollBar(_In_ HWND, _In_ UINT, _In_ UINT)
HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
Definition: atlwin.h:450
GLfloat GLfloat p
Definition: glext.h:8902
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
BOOL RedrawWindow(LPCRECT lpRectUpdate=NULL, HRGN hRgnUpdate=NULL, UINT flags=RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE)
Definition: atlwin.h:1062
LONG_PTR LRESULT
Definition: windef.h:209
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption=NULL, UINT nType=MB_OK)
Definition: atlwin.h:996
BOOL bHandled
Definition: atlwin.h:139
HMENU WINAPI GetMenu(_In_ HWND)
BOOL CreateCaret(HBITMAP pBitmap)
Definition: atlwin.h:432
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
BOOL SetScrollRange(int nBar, int nMinPos, int nMaxPos, BOOL bRedraw=TRUE)
Definition: atlwin.h:1246
LPCTSTR m_lpszClassName
Definition: atlwin.h:1760
int WINAPI SetScrollPos(_In_ HWND, _In_ int, _In_ int, _In_ BOOL)
LPARAM lParam
Definition: combotst.c:139
_In_ int nMaxCount
Definition: winuser.h:4867
HWND WINAPI GetActiveWindow(void)
Definition: winpos.c:138
#define LOWORD(l)
Definition: pedump.c:82
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
HDC GetDC()
Definition: atlwin.h:541
#define ESB_ENABLE_BOTH
Definition: winuser.h:563
BOOL GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
Definition: atlwin.h:712
INT_PTR DoModal(HWND hWndParent=::GetActiveWindow(), LPARAM dwInitParam=NULL)
Definition: atlwin.h:1498
static DWORD GetWndExStyle(DWORD dwExStyle)
Definition: atlwin.h:77
#define SendNotifyMessage
Definition: winuser.h:5836
#define MAKEINTATOM(i)
Definition: winbase.h:1448
BOOL DestroyWindow()
Definition: atlwin.h:1518
HWND GetTopWindow() const
Definition: atlwin.h:748
HWND GetTopLevelWindow() const
Definition: atlwin.h:742
HWND SetCapture()
Definition: atlwin.h:1162
HWND SetActiveWindow()
Definition: atlwin.h:1156
const _ATL_MSG * m_pCurrentMsg
Definition: atlwin.h:1374
DWORD GetWindowProcessID()
Definition: atlwin.h:802
BOOL IsWindowVisible() const
Definition: atlwin.h:952
#define RDW_INVALIDATE
Definition: winuser.h:1204
BOOL GetWindowText(_Inout_ _Outref_result_maybenull_ _Post_z_ BSTR &bstrText) const
Definition: atlwin.h:840
#define ERROR_OUTOFMEMORY
Definition: deptool.c:13
BOOL BringWindowToTop()
Definition: atlwin.h:303
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1852
#define Unused(x)
Definition: atlwin.h:28
int * LPINT
Definition: windef.h:178
UINT GetDlgItemInt(_In_ int nID, _Out_opt_ BOOL *lpTrans=NULL, _In_ BOOL bSigned=TRUE) const
Definition: atlwin.h:605
#define CreateDialogParam
Definition: winuser.h:5742
#define WinHelp
Definition: winuser.h:5854