ReactOS  0.4.15-dev-4614-ga5a6101
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;
324  wndCenterRect.left + ((wndCenterWidth - wndWidth + 1) >> 1),
325  wndCenterRect.top + ((wndCenterHeight - wndHeight + 1) >> 1),
326  wndWidth, wndHeight, TRUE);
327  }
328 
330  {
333  }
334 
335  BOOL CheckDlgButton(int nIDButton, UINT nCheck)
336  {
338  return ::CheckDlgButton(m_hWnd, nIDButton, nCheck);
339  }
340 
341  BOOL CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
342  {
344  return ::CheckRadioButton(m_hWnd, nIDFirstButton, nIDLastButton, nIDCheckButton);
345  }
346 
348  {
351  }
352 
354  {
357  }
358 
359  BOOL ClientToScreen(LPPOINT lpPoint) const
360  {
363  }
364 
365  BOOL ClientToScreen(LPRECT lpRect) const
366  {
367  if (lpRect == NULL)
368  return FALSE;
370  POINT leftTop = {lpRect->left, lpRect->top};
371  POINT rightBottom = {lpRect->right, lpRect->bottom};
372  BOOL success = ::ClientToScreen(m_hWnd, &leftTop) && ::ClientToScreen(m_hWnd, &rightBottom);
373  if (success)
374  {
375  lpRect->left = leftTop.x;
376  lpRect->top = leftTop.y;
377  lpRect->right = rightBottom.x;
378  lpRect->bottom = rightBottom.y;
379  }
380  return success;
381  }
382 
383  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)
384  {
385  HWND hWnd;
386  ATLASSERT(m_hWnd == NULL);
387  hWnd = ::CreateWindowEx(dwExStyle,
388  lpstrWndClass,
389  szWindowName,
390  dwStyle,
391  rect.m_lpRect->left,
392  rect.m_lpRect->top,
393  rect.m_lpRect->right - rect.m_lpRect->left,
394  rect.m_lpRect->bottom - rect.m_lpRect->top,
395  hWndParent,
396  MenuOrID.m_hMenu,
397  _AtlBaseModule.GetModuleInstance(),
398  lpCreateParam);
399  if (hWnd != NULL)
400  m_hWnd = hWnd;
401  return hWnd;
402  }
403 
405  {
407  return ::CreateCaret(m_hWnd, pBitmap, 0, 0);
408  }
409 
410  BOOL CreateGrayCaret(int nWidth, int nHeight)
411  {
413  return ::CreateCaret(m_hWnd, (HBITMAP)1, nWidth, nHeight);
414  }
415 
416  BOOL CreateSolidCaret(int nWidth, int nHeight)
417  {
419  return ::CreateCaret(m_hWnd, (HBITMAP)0, nWidth, nHeight);
420  }
421 
422  HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags)
423  {
425  return ::DeferWindowPos(hWinPosInfo, m_hWnd, hWndInsertAfter, x, y, cx, cy, uFlags);
426  }
427 
429  {
431 
432  if (!::DestroyWindow(m_hWnd))
433  return FALSE;
434 
435  m_hWnd = NULL;
436  return TRUE;
437  }
438 
440  {
441  HWND hWnd = m_hWnd;
442  m_hWnd = NULL;
443  return hWnd;
444  }
445 
446  int DlgDirList(LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
447  {
449  return ::DlgDirList(m_hWnd, lpPathSpec, nIDListBox, nIDStaticPath, nFileType);
450  }
451 
452  int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
453  {
455  return ::DlgDirListComboBox(m_hWnd, lpPathSpec, nIDComboBox, nIDStaticPath, nFileType);
456  }
457 
458  BOOL DlgDirSelect(LPTSTR lpString, int nCount, int nIDListBox)
459  {
461  return ::DlgDirSelectEx(m_hWnd, lpString, nCount, nIDListBox);
462  }
463 
464  BOOL DlgDirSelectComboBox(LPTSTR lpString, int nCount, int nIDComboBox)
465  {
467  return ::DlgDirSelectComboBoxEx(m_hWnd, lpString, nCount, nIDComboBox);
468  }
469 
470  void DragAcceptFiles(BOOL bAccept = TRUE)
471  {
473 // FIXME following line requires shellapi.h
474 // ::DragAcceptFiles(m_hWnd, bAccept);
475  }
476 
478  {
481  }
482 
483  BOOL EnableScrollBar(UINT uSBFlags, UINT uArrowFlags = ESB_ENABLE_BOTH)
484  {
486  return ::EnableScrollBar(m_hWnd, uSBFlags, uArrowFlags);
487  }
488 
490  {
493  }
494 
495  void EndPaint(LPPAINTSTRUCT lpPaint)
496  {
498  ::EndPaint(m_hWnd, lpPaint);
499  }
500 
502  {
505  }
506 
507  BOOL GetClientRect(LPRECT lpRect) const
508  {
511  }
512 
514  {
517  }
518 
519  HDC GetDCEx(HRGN hRgnClip, DWORD flags)
520  {
522  return ::GetDCEx(m_hWnd, hRgnClip, flags);
523  }
524 
525 private:
526  typedef struct _IDHWNDPAIR {
527  int nID;
530 
532  {
533  if (::GetWindowLong(hWnd, GWL_ID) == ((PIDHWNDPAIR)lParam)->nID)
534  {
535  ((PIDHWNDPAIR)lParam)->hWnd = hWnd;
536  return FALSE;
537  }
539  return (((PIDHWNDPAIR)lParam)->hWnd == NULL);
540  }
541 
542 public:
543  HWND GetDescendantWindow(int nID) const
544  {
546  IDHWNDPAIR idHWndPair;
547  idHWndPair.nID = nID;
548  idHWndPair.hWnd = NULL;
550  return idHWndPair.hWnd;
551  }
552 
553  HRESULT GetDlgControl(int nID, REFIID iid, void** ppCtrl)
554  {
556  return E_FAIL;//FIXME stub
557  }
558 
559  int GetDlgCtrlID() const
560  {
563  }
564 
565  HRESULT GetDlgHost(int nID, REFIID iid, void** ppHost)
566  {
568  return E_FAIL;//FIXME stub
569  }
570 
571  HWND GetDlgItem(_In_ int nID) const
572  {
575  }
576 
578  _In_ int nID,
579  _Out_opt_ BOOL* lpTrans = NULL,
580  _In_ BOOL bSigned = TRUE) const
581  {
583  return ::GetDlgItemInt(m_hWnd, nID, lpTrans, bSigned);
584  }
585 
587  _In_ int nID,
588  _Out_writes_to_(nMaxCount, return + 1) LPTSTR lpStr,
589  _In_ int nMaxCount) const
590  {
593  }
594 
595 #ifdef __ATLSTR_H__
596  UINT GetDlgItemText(_In_ int nID, _Inout_ CSimpleString& strText) const
597  {
598  HWND item = GetDlgItem(nID);
599  if (!item)
600  {
601  strText.Empty();
602  return 0;
603  }
604  return CWindow(item).GetWindowText(strText);
605  }
606 #endif
607 
609  _In_ int nID,
611  {
612  HWND item = GetDlgItem(nID);
613  if (!item)
614  return FALSE;
615  return CWindow(item).GetWindowText(bstrText);
616  }
617 
619  {
622  }
623 
624  HFONT GetFont() const
625  {
627  return (HFONT)::SendMessage(m_hWnd, WM_GETFONT, 0, 0);
628  }
629 
630  DWORD GetHotKey() const
631  {
633  return (DWORD)::SendMessage(m_hWnd, WM_GETHOTKEY, 0, 0);
634  }
635 
636  HICON GetIcon(BOOL bBigIcon = TRUE) const
637  {
639  return (HICON)::SendMessage(m_hWnd, WM_GETICON, (WPARAM)bBigIcon, 0);
640  }
641 
643  {
646  }
647 
648  HMENU GetMenu() const
649  {
652  }
653 
654  HWND GetNextDlgGroupItem(HWND hWndCtl, BOOL bPrevious = FALSE) const
655  {
657  return ::GetNextDlgGroupItem(m_hWnd, hWndCtl, bPrevious);
658  }
659 
660  HWND GetNextDlgTabItem(HWND hWndCtl, BOOL bPrevious = FALSE) const
661  {
663  return ::GetNextDlgTabItem(m_hWnd, hWndCtl, bPrevious);
664  }
665 
667  {
669  return CWindow(::GetParent(m_hWnd));
670  }
671 
672  BOOL GetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo)
673  {
675  return ::GetScrollInfo(m_hWnd, nBar, lpScrollInfo);
676  }
677 
678  BOOL GetScrollPos(int nBar)
679  {
682  }
683 
684  BOOL GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
685  {
687  return ::GetScrollRange(m_hWnd, nBar, lpMinPos, lpMaxPos);
688  }
689 
690  DWORD GetStyle() const
691  {
694  }
695 
697  {
699  return ::GetSystemMenu(m_hWnd, bRevert);
700  }
701 
703  {
705 
707  HWND hWndTmp;
708  while ((hWndTmp = ::GetParent(hWndParent)) != NULL)
709  hWndParent = hWndTmp;
710 
711  return hWndParent;
712  }
713 
715  {
717  return NULL;//FIXME stub
718  }
719 
721  {
724  }
725 
726  BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase = FALSE)
727  {
729  return ::GetUpdateRect(m_hWnd, lpRect, bErase);
730  }
731 
732  int GetUpdateRgn(HRGN hRgn, BOOL bErase = FALSE)
733  {
736  }
737 
738  HWND GetWindow(UINT nCmd) const
739  {
741  return ::GetWindow(m_hWnd, nCmd);
742  }
743 
745  {
748  }
749 
751  {
754  }
755 
756  LONG GetWindowLong(int nIndex) const
757  {
760  }
761 
762  LONG_PTR GetWindowLongPtr(int nIndex) const
763  {
766  }
767 
769  {
772  }
773 
775  {
777  DWORD processID;
778  ::GetWindowThreadProcessId(m_hWnd, &processID);
779  return processID;
780  }
781 
782  BOOL GetWindowRect(LPRECT lpRect) const
783  {
786  }
787 
788  int GetWindowRgn(HRGN hRgn)
789  {
792  }
793 
795  _Out_writes_to_(nMaxCount, return + 1) LPTSTR lpszStringBuf,
796  _In_ int nMaxCount) const
797  {
799  return ::GetWindowText(m_hWnd, lpszStringBuf, nMaxCount);
800  }
801 
802 #ifdef __ATLSTR_H__
803  int GetWindowText(_Inout_ CSimpleString& strText) const
804  {
805  int len = GetWindowTextLength();
806  len = GetWindowText(strText.GetBuffer(len + 1), len + 1);
807  strText.ReleaseBuffer(len);
808  return len;
809  }
810 #endif
811 
814  {
817  if (!::SysReAllocStringLen(&bstrText, NULL, length))
818  return FALSE;
819  if (::GetWindowTextW(m_hWnd, bstrText, length + 1))
820  return TRUE;
821  ::SysFreeString(bstrText);
822  bstrText = NULL;
823  return FALSE;
824  }
825 
827  {
830  }
831 
833  {
836  }
837 
838  WORD GetWindowWord(int nIndex) const
839  {
841  return (WORD)::GetWindowLong(m_hWnd, nIndex);
842  }
843 
844  void GotoDlgCtrl(HWND hWndCtrl) const
845  {
848  }
849 
851  {
854  }
855 
856  BOOL HiliteMenuItem(HMENU hMenu, UINT uHiliteItem, UINT uHilite)
857  {
859  return ::HiliteMenuItem(m_hWnd, hMenu, uHiliteItem, uHilite);
860  }
861 
863  {
866  }
867 
868  BOOL InvalidateRect(LPCRECT lpRect, BOOL bErase = TRUE)
869  {
871  return ::InvalidateRect(m_hWnd, lpRect, bErase);
872  }
873 
874  void InvalidateRgn(HRGN hRgn, BOOL bErase = TRUE)
875  {
877  ::InvalidateRgn(m_hWnd, hRgn, bErase);
878  }
879 
880  BOOL IsChild(const HWND hWnd) const
881  {
884  }
885 
887  {
890  }
891 
892  UINT IsDlgButtonChecked(int nIDButton) const
893  {
896  }
897 
898  BOOL IsIconic() const
899  {
902  }
903 
905  {
907  TCHAR pszType[10]; // Use sizeof("#32770")+3 so that extra characters can be detected.
908  if (!RealGetWindowClass(::GetParent(m_hWnd), pszType, _countof(pszType)))
909  return FALSE;
910  return !_tcscmp(pszType, _T("#32770"));
911  }
912 
913  BOOL IsWindow() const
914  {
916  }
917 
919  {
922  }
923 
925  {
928  }
929 
931  {
934  }
935 
936  BOOL IsZoomed() const
937  {
940  }
941 
943  {
945  return ::KillTimer(m_hWnd, nIDEvent);
946  }
947 
949  {
951  if (bLock)
954  }
955 
956  int MapWindowPoints(HWND hWndTo, LPPOINT lpPoint, UINT nCount) const
957  {
959  return ::MapWindowPoints(m_hWnd, hWndTo, lpPoint, nCount);
960  }
961 
962  int MapWindowPoints(HWND hWndTo, LPRECT lpRect) const
963  {
965  return ::MapWindowPoints(m_hWnd, hWndTo, (LPPOINT)lpRect, sizeof(RECT) / sizeof(POINT));
966  }
967 
968  int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK)
969  {
971  return ::MessageBox(m_hWnd, lpszText, lpszCaption, nType);
972  }
973 
974  BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0)
975  {
977  ::SetWindowLong(m_hWnd, GWL_STYLE, (::GetWindowLong(m_hWnd, GWL_STYLE) & ~dwRemove) | dwAdd);
978  if (nFlags != 0)
980  return TRUE;
981  }
982 
983  BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0)
984  {
986  ::SetWindowLong(m_hWnd, GWL_EXSTYLE, (::GetWindowLong(m_hWnd, GWL_EXSTYLE) & ~dwRemove) | dwAdd);
987  if (nFlags != 0)
989  return TRUE;
990  }
991 
992  BOOL MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE)
993  {
995  return ::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
996  }
997 
998  void NextDlgCtrl() const
999  {
1002  }
1003 
1005  {
1008  }
1009 
1011  {
1014  }
1015 
1016  void PrevDlgCtrl() const
1017  {
1020  }
1021 
1022  void Print(HDC hDC, DWORD dwFlags) const
1023  {
1026  }
1027 
1029  {
1032  }
1033 
1034  BOOL RedrawWindow(LPCRECT lpRectUpdate = NULL, HRGN hRgnUpdate = NULL, UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE)
1035  {
1037  return ::RedrawWindow(m_hWnd, lpRectUpdate, hRgnUpdate, flags);
1038  }
1039 
1041  {
1044  }
1045 
1046  BOOL ResizeClient(int nWidth, int nHeight, BOOL bRedraw = FALSE)
1047  {
1049  RECT clientRect, wndRect;
1050  ::GetClientRect(m_hWnd, &clientRect);
1051  ::GetWindowRect(m_hWnd, &wndRect);
1052  return ::MoveWindow(m_hWnd, wndRect.left, wndRect.top,
1053  nWidth + (wndRect.right - wndRect.left) - (clientRect.right - clientRect.left),
1054  nHeight + (wndRect.bottom - wndRect.top) - (clientRect.bottom - clientRect.top),
1055  bRedraw);
1056  }
1057 
1058  BOOL ScreenToClient(LPPOINT lpPoint) const
1059  {
1061  return ::ScreenToClient(m_hWnd, lpPoint);
1062  }
1063 
1064  BOOL ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL)
1065  {
1067  return ::ScrollWindow(m_hWnd, xAmount, yAmount, lpRect, lpClipRect);
1068  }
1069 
1070  int ScrollWindowEx(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
1071  {
1073  return ::ScrollWindowEx(m_hWnd, dx, dy, lpRectScroll, lpRectClip, hRgnUpdate, lpRectUpdate, flags);
1074  }
1075 
1077  {
1080  }
1081 
1083  {
1086  }
1087 
1089  {
1090  ATLASSERT(::IsWindow(hWnd));
1092  }
1093 
1094 private:
1096  {
1098  return TRUE;
1099  }
1100 
1102  {
1105  return TRUE;
1106  }
1107 
1108 public:
1110  {
1112  MSG msg;
1113  msg.message = message;
1114  msg.wParam = wParam;
1115  msg.lParam = lParam;
1116  if (bDeep)
1118  else
1120  }
1121 
1123  {
1126  }
1127 
1129  {
1132  }
1133 
1135  {
1138  }
1139 
1141  {
1144  }
1145 
1146  int SetDlgCtrlID(int nID)
1147  {
1150  }
1151 
1152  BOOL SetDlgItemInt(int nID, UINT nValue, BOOL bSigned = TRUE)
1153  {
1155  return ::SetDlgItemInt(m_hWnd, nID, nValue, bSigned);
1156  }
1157 
1158  BOOL SetDlgItemText(int nID, LPCTSTR lpszString)
1159  {
1161  return ::SetDlgItemText(m_hWnd, nID, lpszString);
1162  }
1163 
1165  {
1168  }
1169 
1170  void SetFont(HFONT hFont, BOOL bRedraw = TRUE)
1171  {
1174  }
1175 
1176  int SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
1177  {
1179  return ::SendMessage(m_hWnd, WM_SETHOTKEY, MAKEWPARAM(wVirtualKeyCode, wModifiers), 0);
1180  }
1181 
1183  {
1185  return (HICON)::SendMessage(m_hWnd, WM_SETICON, (WPARAM)bBigIcon, (LPARAM)hIcon);
1186  }
1187 
1189  {
1191  return ::SetMenu(m_hWnd, hMenu);
1192  }
1193 
1194  HWND SetParent(HWND hWndNewParent)
1195  {
1197  return ::SetParent(m_hWnd, hWndNewParent);
1198  }
1199 
1200  void SetRedraw(BOOL bRedraw = TRUE)
1201  {
1203  ::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)bRedraw, 0);
1204  }
1205 
1206  int SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw = TRUE)
1207  {
1209  return ::SetScrollInfo(m_hWnd, nBar, lpScrollInfo, bRedraw);
1210  }
1211 
1212  int SetScrollPos(int nBar, int nPos, BOOL bRedraw = TRUE)
1213  {
1215  return ::SetScrollPos(m_hWnd, nBar, nPos, bRedraw);
1216  }
1217 
1218  BOOL SetScrollRange(int nBar, int nMinPos, int nMaxPos, BOOL bRedraw = TRUE)
1219  {
1221  return ::SetScrollRange(m_hWnd, nBar, nMinPos, nMaxPos, bRedraw);
1222  }
1223 
1224  UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD) = NULL)
1225  {
1227  return ::SetTimer(m_hWnd, nIDEvent, nElapse, reinterpret_cast<TIMERPROC>(lpfnTimer));
1228  }
1229 
1231  {
1233  return ::SetWindowContextHelpId(m_hWnd, dwContextHelpId);
1234  }
1235 
1236  LONG SetWindowLong(int nIndex, LONG dwNewLong)
1237  {
1239  return ::SetWindowLong(m_hWnd, nIndex, dwNewLong);
1240  }
1241 
1242  LONG_PTR SetWindowLongPtr(int nIndex, LONG_PTR dwNewLong)
1243  {
1245  return ::SetWindowLongPtr(m_hWnd, nIndex, dwNewLong);
1246  }
1247 
1249  {
1252  }
1253 
1254  BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
1255  {
1257  return ::SetWindowPos(m_hWnd, hWndInsertAfter, x, y, cx, cy, nFlags);
1258  }
1259 
1260  int SetWindowRgn(HRGN hRgn, BOOL bRedraw = FALSE)
1261  {
1263  return ::SetWindowRgn(m_hWnd, hRgn, bRedraw);
1264  }
1265 
1267  {
1269  return ::SetWindowText(m_hWnd, lpszString);
1270  }
1271 
1272  WORD SetWindowWord(int nIndex, WORD wNewWord)
1273  {
1275  if (nIndex >= -4)
1276  return ::SetWindowLong(m_hWnd, nIndex - 2, MAKELONG(LOWORD(::GetWindowLong(m_hWnd, nIndex - 2)), wNewWord));
1277  else
1278  return ::SetWindowLong(m_hWnd, nIndex, MAKELONG(wNewWord, HIWORD(::GetWindowLong(m_hWnd, nIndex))));
1279  }
1280 
1282  {
1285  }
1286 
1288  {
1291  }
1292 
1294  {
1296  return ::ShowScrollBar(m_hWnd, nBar, bShow);
1297  }
1298 
1299  BOOL ShowWindow(int nCmdShow)
1300  {
1302  return ::ShowWindow(m_hWnd, nCmdShow);
1303  }
1304 
1305  BOOL ShowWindowAsync(int nCmdShow)
1306  {
1308  return ::ShowWindowAsync(m_hWnd, nCmdShow);
1309  }
1310 
1312  {
1315  }
1316 
1318  {
1320  return ::ValidateRect(m_hWnd, lpRect);
1321  }
1322 
1324  {
1327  }
1328 
1330  {
1332  return ::WinHelp(m_hWnd, lpszHelp, nCmd, dwData);
1333  }
1334 };
1335 
1337 
1338 template <class TBase = CWindow>
1339 class CWindowImplRoot : public TBase, public CMessageMap
1340 {
1341 public:
1342  enum { WINSTATE_DESTROYED = 0x00000001 };
1343 
1344 public:
1348 
1350  : m_pCurrentMsg(NULL)
1351  , m_dwState(0)
1352  {
1353  }
1354 
1356  {
1357  }
1358 };
1359 
1360 
1361 template <class TBase = CWindow>
1362 class CDialogImplBaseT : public CWindowImplRoot<TBase>
1363 {
1364 public:
1365  // + Hacks for gcc
1367  // - Hacks for gcc
1368 
1370  {
1371  }
1373  {
1374  return DialogProc;
1375  }
1376 
1378  {
1379  CDialogImplBaseT<TBase>* pThis;
1380  DLGPROC newDlgProc;
1381  DLGPROC GCCU(pOldProc);
1382 
1383  pThis = reinterpret_cast<CDialogImplBaseT<TBase>*>(_AtlWinModule.ExtractCreateWndData());
1384  ATLASSERT(pThis != NULL);
1385  if (pThis == NULL)
1386  return 0;
1387 
1388  pThis->m_thunk.Init((WNDPROC)pThis->GetDialogProc(), pThis);
1389  newDlgProc = reinterpret_cast<DLGPROC>(pThis->m_thunk.GetWNDPROC());
1390  pOldProc = reinterpret_cast<DLGPROC>(::SetWindowLongPtr(hWnd, DWLP_DLGPROC, reinterpret_cast<LONG_PTR>(newDlgProc)));
1391  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1392  pThis->m_hWnd = hWnd;
1393  return newDlgProc(hWnd, uMsg, wParam, lParam);
1394  }
1395 
1397  {
1398  CDialogImplBaseT<TBase>* pThis = reinterpret_cast<CDialogImplBaseT<TBase>*>(hWnd);
1399  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1400  LRESULT lResult = 0;
1401  const _ATL_MSG *previousMessage;
1402  BOOL handled;
1403 
1404  hWnd = pThis->m_hWnd;
1405  previousMessage = pThis->m_pCurrentMsg;
1406  pThis->m_pCurrentMsg = &msg;
1407 
1408  handled = pThis->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, 0);
1409  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1410 
1411  if (handled)
1412  {
1413  if ((pThis->m_dwState & WINSTATE_DESTROYED) == 0)
1414  {
1415  ::SetWindowLongPtr(pThis->m_hWnd, DWLP_MSGRESULT, lResult);
1416  }
1417  }
1418  else
1419  {
1420  if (uMsg == WM_NCDESTROY)
1421  {
1422  pThis->m_dwState |= WINSTATE_DESTROYED;
1423  }
1424  }
1425 
1426  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1427  pThis->m_pCurrentMsg = previousMessage;
1428 
1429  if (previousMessage == NULL && (pThis->m_dwState & WINSTATE_DESTROYED) != 0)
1430  {
1431  pThis->m_dwState &= ~WINSTATE_DESTROYED;
1432  pThis->m_hWnd = NULL;
1433  pThis->OnFinalMessage(hWnd);
1434  }
1435  return lResult;
1436  }
1437 
1438  virtual void OnFinalMessage(HWND)
1439  {
1440  }
1441 };
1442 
1443 
1444 template <class T, class TBase = CWindow>
1445 class CDialogImpl : public CDialogImplBaseT<TBase>
1446 {
1447 public:
1448  // + Hacks for gcc
1451  // - Hacks for gcc
1452 
1454  {
1455  BOOL result;
1456  HWND hWnd;
1457  T* pImpl;
1458 
1459  result = m_thunk.Init(NULL, NULL);
1460  if (result == FALSE)
1461  return NULL;
1462 
1463  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1464 
1465  pImpl = static_cast<T*>(this);
1466  hWnd = ::CreateDialogParam(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(pImpl->IDD), hWndParent, T::StartDialogProc, dwInitParam);
1467  return hWnd;
1468  }
1469 
1471  {
1472  BOOL result;
1473  T* pImpl;
1474 
1475  result = m_thunk.Init(NULL, NULL);
1476  if (result == FALSE)
1477  return -1;
1478 
1479  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1480 
1481  pImpl = static_cast<T*>(this);
1482  return ::DialogBoxParam(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(pImpl->IDD), hWndParent, T::StartDialogProc, dwInitParam);
1483  }
1484 
1485  BOOL EndDialog(_In_ int nRetCode)
1486  {
1487  return ::EndDialog(m_hWnd, nRetCode);
1488  }
1489 
1491  {
1492  return ::DestroyWindow(m_hWnd);
1493  }
1494 };
1495 
1496 template <class TBase = CWindow, class TWinTraits = CControlWinTraits>
1497 class CWindowImplBaseT : public CWindowImplRoot<TBase>
1498 {
1499 public:
1500  // + Hacks for gcc
1504  // - Hacks for gcc
1505 
1507 
1508 public:
1510  {
1512  }
1513 
1514  virtual void OnFinalMessage(HWND /* hWnd */)
1515  {
1516  }
1517 
1519  {
1520  ATLASSERT(m_hWnd == NULL);
1521  ATLASSERT(::IsWindow(hWnd));
1522 
1524  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1525 
1526  BOOL result = m_thunk.Init(GetWindowProc(), this);
1527  if (result == FALSE)
1528  return FALSE;
1529 
1530  WNDPROC newWindowProc = m_thunk.GetWNDPROC();
1531  WNDPROC oldWindowProc = reinterpret_cast<WNDPROC>(
1532  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1533  if (oldWindowProc == NULL)
1534  return FALSE;
1535 
1536  pThis->m_pfnSuperWindowProc = oldWindowProc;
1537  pThis->m_hWnd = hWnd;
1538  return TRUE;
1539  }
1540 
1542  {
1543  ATLASSERT(m_hWnd != NULL);
1544  ATLASSERT(::IsWindow(m_hWnd));
1545 
1547  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1548 
1549  HWND hwndOld = pThis->m_hWnd;
1550  WNDPROC oldWindowProc = m_thunk.GetWNDPROC();
1551  WNDPROC subclassedProc = reinterpret_cast<WNDPROC>(
1552  ::GetWindowLongPtr(hwndOld, GWLP_WNDPROC));
1553  if (!bForce && oldWindowProc != subclassedProc)
1554  return NULL;
1555 
1557  (LONG_PTR)pThis->m_pfnSuperWindowProc);
1559  pThis->m_hWnd = NULL;
1560  return hwndOld;
1561  }
1562 
1564  {
1565  return WindowProc;
1566  }
1567 
1568  static DWORD GetWndStyle(DWORD dwStyle)
1569  {
1570  return TWinTraits::GetWndStyle(dwStyle);
1571  }
1572 
1573  static DWORD GetWndExStyle(DWORD dwExStyle)
1574  {
1575  return TWinTraits::GetWndExStyle(dwExStyle);
1576  }
1577 
1579  {
1581  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1583  }
1584 
1586  {
1588  WNDPROC newWindowProc;
1589  WNDPROC GCCU(pOldProc);
1590 
1591  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(_AtlWinModule.ExtractCreateWndData());
1592  ATLASSERT(pThis != NULL);
1593  if (pThis == NULL)
1594  return 0;
1595 
1596  pThis->m_thunk.Init(pThis->GetWindowProc(), pThis);
1597  newWindowProc = pThis->m_thunk.GetWNDPROC();
1598  pOldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1599  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1600  pThis->m_hWnd = hWnd;
1601  return newWindowProc(hWnd, uMsg, wParam, lParam);
1602  }
1603 
1605  {
1607  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1608  LRESULT lResult;
1609  const _ATL_MSG *previousMessage;
1610  BOOL handled;
1611  LONG_PTR saveWindowProc;
1612 
1613  ATLASSERT(pThis != NULL);
1614  if (pThis == NULL)
1615  return 0;
1616 
1617  ATLASSERT((pThis->m_dwState & WINSTATE_DESTROYED) == 0);
1618  ATLASSERT(pThis->m_hWnd != NULL);
1619  if ((pThis->m_dwState & WINSTATE_DESTROYED) != 0 || pThis->m_hWnd == NULL)
1620  return 0;
1621 
1622  hWnd = pThis->m_hWnd;
1623  previousMessage = pThis->m_pCurrentMsg;
1624  pThis->m_pCurrentMsg = &msg;
1625 
1626  handled = pThis->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, 0);
1627  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1628 
1629  if (handled == FALSE)
1630  {
1631  if (uMsg == WM_NCDESTROY)
1632  {
1633  saveWindowProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);
1634  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1635  if (pThis->m_pfnSuperWindowProc != ::DefWindowProc && saveWindowProc == ::GetWindowLongPtr(hWnd, GWLP_WNDPROC))
1636  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(pThis->m_pfnSuperWindowProc));
1637  pThis->m_dwState |= WINSTATE_DESTROYED;
1638  }
1639  else
1640  {
1641  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1642  }
1643  }
1644  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1645  pThis->m_pCurrentMsg = previousMessage;
1646  if (previousMessage == NULL && (pThis->m_dwState & WINSTATE_DESTROYED) != 0)
1647  {
1648  pThis->m_dwState &= ~WINSTATE_DESTROYED;
1649  pThis->m_hWnd = NULL;
1650  pThis->OnFinalMessage(hWnd);
1651  }
1652  return lResult;
1653  }
1654 
1655  HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle,
1656  _U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam)
1657  {
1658  HWND hWnd;
1659 
1660  ATLASSERT(m_hWnd == NULL);
1661  ATLASSERT(atom != 0);
1662  if (atom == 0)
1663  return NULL;
1664  if (m_thunk.Init(NULL, NULL) == FALSE)
1665  {
1667  return NULL;
1668  }
1669 
1670  _AtlWinModule.AddCreateWndData(&m_thunk.cd, this);
1671  if (MenuOrID.m_hMenu == NULL && (dwStyle & WS_CHILD) != 0)
1672  MenuOrID.m_hMenu = (HMENU)(UINT_PTR)this;
1673  if (rect.m_lpRect == NULL)
1674  rect.m_lpRect = &TBase::rcDefault;
1675 
1676  hWnd = ::CreateWindowEx(dwExStyle, MAKEINTATOM(atom), szWindowName, dwStyle, rect.m_lpRect->left,
1677  rect.m_lpRect->top, rect.m_lpRect->right - rect.m_lpRect->left, rect.m_lpRect->bottom - rect.m_lpRect->top,
1678  hWndParent, MenuOrID.m_hMenu, _AtlBaseModule.GetModuleInstance(), lpCreateParam);
1679 
1680  ATLASSERT(m_hWnd == hWnd);
1681 
1682  return hWnd;
1683  }
1684 };
1685 
1686 
1687 template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits>
1688 class CWindowImpl : public CWindowImplBaseT<TBase, TWinTraits>
1689 {
1690 public:
1691  // + Hacks for gcc
1693  // - Hacks for gcc
1694 
1696  {
1697  return NULL;
1698  }
1699 
1700  HWND Create(HWND hWndParent, _U_RECT rect = NULL, LPCTSTR szWindowName = NULL, DWORD dwStyle = 0,
1701  DWORD dwExStyle = 0, _U_MENUorID MenuOrID = 0U, LPVOID lpCreateParam = NULL)
1702  {
1704  ATOM atom;
1705 
1706  ATLASSERT(m_hWnd == NULL);
1707  pThis = reinterpret_cast<CWindowImplBaseT<TBase, TWinTraits>*>(this);
1708 
1709  if (T::GetWndClassInfo().m_lpszOrigName == NULL)
1710  T::GetWndClassInfo().m_lpszOrigName = pThis->GetWndClassName();
1711  atom = T::GetWndClassInfo().Register(&pThis->m_pfnSuperWindowProc);
1712 
1713  if (szWindowName == NULL)
1714  szWindowName = T::GetWndCaption();
1715  dwStyle = T::GetWndStyle(dwStyle);
1716  dwExStyle = T::GetWndExStyle(dwExStyle);
1717 
1718  return CWindowImplBaseT<TBase, TWinTraits>::Create(hWndParent, rect, szWindowName, dwStyle,
1719  dwExStyle, MenuOrID, atom, lpCreateParam);
1720  }
1721 };
1722 
1723 template <class TBase = CWindow, class TWinTraits = CControlWinTraits>
1724 class CContainedWindowT : public TBase
1725 {
1726 public:
1727  // + Hacks for gcc
1728  using TBase::m_hWnd;
1729  // - Hacks for gcc
1730 
1737 
1738 public:
1740  {
1741  m_lpszClassName = TBase::GetWndClassName();
1743  m_pObject = pObject;
1744  m_dwMsgMapID = dwMsgMapID;
1745  m_pCurrentMsg = NULL;
1746  }
1747 
1748  CContainedWindowT(LPCTSTR lpszClassName, CMessageMap *pObject, DWORD dwMsgMapID = 0)
1749  {
1750  m_lpszClassName = lpszClassName;
1752  m_pObject = pObject;
1753  m_dwMsgMapID = dwMsgMapID;
1754  m_pCurrentMsg = NULL;
1755  }
1756 
1758  {
1760  }
1761 
1763  {
1764  ATLASSERT(m_hWnd == NULL);
1765  ATLASSERT(::IsWindow(hWnd));
1766 
1767  CContainedWindowT<TBase>* pThis;
1768  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(this);
1769 
1770  BOOL result = m_thunk.Init(WindowProc, pThis);
1771  if (result == FALSE)
1772  return FALSE;
1773 
1774  WNDPROC newWindowProc = m_thunk.GetWNDPROC();
1775  WNDPROC oldWindowProc = reinterpret_cast<WNDPROC>(
1776  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1777  if (oldWindowProc == NULL)
1778  return FALSE;
1779 
1780  pThis->m_pfnSuperWindowProc = oldWindowProc;
1781  pThis->m_hWnd = hWnd;
1782  return TRUE;
1783  }
1784 
1786  {
1787  ATLASSERT(m_hWnd != NULL);
1788  ATLASSERT(::IsWindow(m_hWnd));
1789 
1790  CContainedWindowT<TBase>* pThis;
1791  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(this);
1792  HWND hwndOld = pThis->m_hWnd;
1793 
1794  WNDPROC subclassedProc = reinterpret_cast<WNDPROC>(
1795  ::GetWindowLongPtr(hwndOld, GWLP_WNDPROC));
1796  if (!bForce && m_thunk.GetWNDPROC() != subclassedProc)
1797  return NULL;
1798 
1800  (LONG_PTR)pThis->m_pfnSuperWindowProc);
1802  pThis->m_hWnd = NULL;
1803  return hwndOld;
1804  }
1805 
1807  {
1808  CContainedWindowT<TBase>* pThis;
1809  WNDPROC newWindowProc;
1810  WNDPROC GCCU(pOldProc);
1811 
1812  pThis = reinterpret_cast<CContainedWindowT<TBase>*>(_AtlWinModule.ExtractCreateWndData());
1813  ATLASSERT(pThis != NULL);
1814  if (pThis == NULL)
1815  return 0;
1816  pThis->m_thunk.Init(WindowProc, pThis);
1817  newWindowProc = pThis->m_thunk.GetWNDPROC();
1818  pOldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(newWindowProc)));
1819  Unused(pOldProc); // TODO: should generate trace message if overwriting another subclass
1820  pThis->m_hWnd = hWnd;
1821  return newWindowProc(hWnd, uMsg, wParam, lParam);
1822  }
1823 
1825  {
1826  CContainedWindowT<TBase>* pThis = reinterpret_cast<CContainedWindowT<TBase>*>(hWnd);
1827  _ATL_MSG msg(pThis->m_hWnd, uMsg, wParam, lParam);
1828  LRESULT lResult;
1829  const _ATL_MSG *previousMessage;
1830  BOOL handled;
1831  LONG_PTR saveWindowProc;
1832 
1833  ATLASSERT(pThis != NULL && pThis->m_hWnd != NULL && pThis->m_pObject != NULL);
1834  if (pThis == NULL || pThis->m_hWnd == NULL || pThis->m_pObject == NULL)
1835  return 0;
1836 
1837  hWnd = pThis->m_hWnd;
1838  previousMessage = pThis->m_pCurrentMsg;
1839  pThis->m_pCurrentMsg = &msg;
1840 
1841  handled = pThis->m_pObject->ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult, pThis->m_dwMsgMapID);
1842  ATLASSERT(pThis->m_pCurrentMsg == &msg);
1843 
1844  pThis->m_pCurrentMsg = previousMessage;
1845  if (handled == FALSE)
1846  {
1847  if (uMsg == WM_NCDESTROY)
1848  {
1849  saveWindowProc = ::GetWindowLongPtr(hWnd, GWLP_WNDPROC);
1850  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1851  if (pThis->m_pfnSuperWindowProc != ::DefWindowProc && saveWindowProc == ::GetWindowLongPtr(hWnd, GWLP_WNDPROC))
1852  ::SetWindowLongPtr(hWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(pThis->m_pfnSuperWindowProc));
1853  pThis->m_hWnd = NULL;
1854  }
1855  else
1856  lResult = pThis->DefWindowProc(uMsg, wParam, lParam);
1857  }
1858  return lResult;
1859  }
1860 
1861 };
1863 
1864 #define BEGIN_MSG_MAP(theClass) \
1865 public: \
1866  BOOL ProcessWindowMessage(HWND GCCU(hWnd), UINT GCCU(uMsg), WPARAM GCCU(wParam), LPARAM GCCU(lParam), LRESULT &GCCU(lResult), DWORD dwMsgMapID = 0) \
1867  { \
1868  BOOL GCCU(bHandled) = TRUE; \
1869  Unused(hWnd); \
1870  Unused(uMsg); \
1871  Unused(wParam); \
1872  Unused(lParam); \
1873  Unused(lResult); \
1874  Unused(bHandled); \
1875  switch(dwMsgMapID) \
1876  { \
1877  case 0:
1878 
1879 #define ALT_MSG_MAP(map) \
1880  break; \
1881  case map:
1882 
1883 #define END_MSG_MAP() \
1884  break; \
1885  default: \
1886  ATLASSERT(FALSE); \
1887  break; \
1888  } \
1889  return FALSE; \
1890  }
1891 
1892 #define MESSAGE_HANDLER(msg, func) \
1893  if (uMsg == msg) \
1894  { \
1895  bHandled = TRUE; \
1896  lResult = func(uMsg, wParam, lParam, bHandled); \
1897  if (bHandled) \
1898  return TRUE; \
1899  }
1900 
1901 #define MESSAGE_RANGE_HANDLER(msgFirst, msgLast, func) \
1902  if (uMsg >= msgFirst && uMsg <= msgLast) \
1903  { \
1904  bHandled = TRUE; \
1905  lResult = func(uMsg, wParam, lParam, bHandled); \
1906  if (bHandled) \
1907  return TRUE; \
1908  }
1909 
1910 #define COMMAND_HANDLER(id, code, func) \
1911  if (uMsg == WM_COMMAND && id == LOWORD(wParam) && code == HIWORD(wParam)) \
1912  { \
1913  bHandled = TRUE; \
1914  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1915  if (bHandled) \
1916  return TRUE; \
1917  }
1918 
1919 #define COMMAND_ID_HANDLER(id, func) \
1920  if (uMsg == WM_COMMAND && id == LOWORD(wParam)) \
1921  { \
1922  bHandled = TRUE; \
1923  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1924  if (bHandled) \
1925  return TRUE; \
1926  }
1927 
1928 #define COMMAND_CODE_HANDLER(code, func) \
1929  if (uMsg == WM_COMMAND && code == HIWORD(wParam)) \
1930  { \
1931  bHandled = TRUE; \
1932  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1933  if (bHandled) \
1934  return TRUE; \
1935  }
1936 
1937 #define COMMAND_RANGE_HANDLER(idFirst, idLast, func) \
1938  if (uMsg == WM_COMMAND && LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) \
1939  { \
1940  bHandled = TRUE; \
1941  lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
1942  if (bHandled) \
1943  return TRUE; \
1944  }
1945 
1946 #define NOTIFY_CODE_HANDLER(cd, func) \
1947  if (uMsg == WM_NOTIFY && cd == ((LPNMHDR)lParam)->code) \
1948  { \
1949  bHandled = TRUE; \
1950  lResult = func((int)wParam, (LPNMHDR)lParam, bHandled); \
1951  if (bHandled) \
1952  return TRUE; \
1953  }
1954 
1955 #define NOTIFY_HANDLER(id, cd, func) \
1956  if (uMsg == WM_NOTIFY && id == ((LPNMHDR)lParam)->idFrom && cd == ((LPNMHDR)lParam)->code) \
1957  { \
1958  bHandled = TRUE; \
1959  lResult = func((int)wParam, (LPNMHDR)lParam, bHandled); \
1960  if (bHandled) \
1961  return TRUE; \
1962  }
1963 
1964 #define CHAIN_MSG_MAP(theChainClass) \
1965  { \
1966  if (theChainClass::ProcessWindowMessage(hWnd, uMsg, wParam, lParam, lResult)) \
1967  return TRUE; \
1968  }
1969 
1970 #define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd) \
1971 static ATL::CWndClassInfo& GetWndClassInfo() \
1972 { \
1973  static ATL::CWndClassInfo wc = \
1974  { \
1975  { sizeof(WNDCLASSEX), style, StartWindowProc, \
1976  0, 0, NULL, NULL, NULL, (HBRUSH)(bkgnd + 1), NULL, WndClassName, NULL }, \
1977  NULL, NULL, IDC_ARROW, TRUE, 0, _T("") \
1978  }; \
1979  return wc; \
1980 }
1981 
1983 {
1990  TCHAR m_szAutoName[sizeof("ATL:") + sizeof(void *) * 2]; // == 4 characters + NULL + number of hexadecimal digits describing a pointer.
1991 
1993  {
1994  if (m_wc.hInstance == NULL)
1995  m_wc.hInstance = _AtlBaseModule.GetModuleInstance();
1996  if (m_atom == 0)
1997  {
1998  if (m_bSystemCursor)
2000  else
2001  m_wc.hCursor = ::LoadCursor(_AtlBaseModule.GetResourceInstance(), m_lpszCursorID);
2002 
2004  }
2005 
2006  return m_atom;
2007  }
2008 };
2009 
2010 }; // namespace ATL
2011 
2012 #pragma pop_macro("SubclassWindow")
2013 
BOOL ChangeClipboardChain(HWND hWndNewNext)
Definition: atlwin.h:329
BOOL IsDialogMessage(LPMSG lpMsg)
Definition: atlwin.h:886
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:672
#define CallWindowProc
Definition: winuser.h:5715
BOOL ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
Definition: atlwin.h:983
HWND Create(HWND hWndParent, LPARAM dwInitParam=NULL)
Definition: atlwin.h:1453
BOOL WINAPI GetScrollRange(_In_ HWND, _In_ int, _Out_ LPINT, _Out_ LPINT)
BOOL IsWindowEnabled() const
Definition: atlwin.h:918
BOOL WINAPI ValidateRgn(_In_ HWND, _In_opt_ HRGN)
#define WM_SETHOTKEY
Definition: winuser.h:1639
HWND UnsubclassWindow(BOOL bForce=FALSE)
Definition: atlwin.h:1541
#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:956
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:678
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:3989
HWND SetFocus()
Definition: atlwin.h:1164
static LPCTSTR GetWndClassName()
Definition: atlwin.h:281
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
DWORD GetExStyle() const
Definition: atlwin.h:618
BOOL MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint=TRUE)
Definition: atlwin.h:992
HWND GetWindow(UINT nCmd) const
Definition: atlwin.h:738
HWND WINAPI SetClipboardViewer(_In_ HWND)
BOOL WINAPI DrawMenuBar(_In_ HWND)
#define DWLP_DLGPROC
Definition: winuser.h:865
#define RegisterClassEx
Definition: winuser.h:5817
static DWORD GetWndStyle(DWORD dwStyle)
Definition: atlwin.h:93
DWORD GetWindowThreadID()
Definition: atlwin.h:832
UINT IsDlgButtonChecked(int nIDButton) const
Definition: atlwin.h:892
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
BOOL EndDialog(_In_ int nRetCode)
Definition: atlwin.h:1485
long y
Definition: polytest.cpp:48
DWORD GetStyle() const
Definition: atlwin.h:690
#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:856
HCURSOR hCursor
Definition: winuser.h:3188
#define WM_NEXTDLGCTL
Definition: winuser.h:1630
GLuint64EXT * result
Definition: glext.h:11304
int SetScrollInfo(int nBar, LPSCROLLINFO lpScrollInfo, BOOL bRedraw=TRUE)
Definition: atlwin.h:1206
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:1170
#define TRUE
Definition: types.h:120
#define pt(x, y)
Definition: drawing.c:79
#define WM_GETHOTKEY
Definition: winuser.h:1640
BOOL WINAPI LockWindowUpdate(_In_opt_ HWND)
int GetWindowTextLength() const
Definition: atlwin.h:826
BOOL DlgDirSelect(LPTSTR lpString, int nCount, int nIDListBox)
Definition: atlwin.h:458
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
BOOL ShowWindowAsync(int nCmdShow)
Definition: atlwin.h:1305
HWND GetNextDlgGroupItem(HWND hWndCtl, BOOL bPrevious=FALSE) const
Definition: atlwin.h:654
#define DlgDirList
Definition: winuser.h:5746
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:1700
CContainedWindowT(LPCTSTR lpszClassName, CMessageMap *pObject, DWORD dwMsgMapID=0)
Definition: atlwin.h:1748
#define GWL_ID
Definition: winuser.h:853
BOOL GetUpdateRect(LPRECT lpRect, BOOL bErase=FALSE)
Definition: atlwin.h:726
HWND GetLastActivePopup() const
Definition: atlwin.h:642
GLint dy
Definition: linetemp.h:97
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1604
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
virtual ~CDialogImplBaseT()
Definition: atlwin.h:1369
BOOL EnableWindow(BOOL bEnable=TRUE)
Definition: atlwin.h:489
#define U(x)
Definition: wordpad.c:45
HWND GetDescendantWindow(int nID) const
Definition: atlwin.h:543
_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:1603
CContainedWindowT< CWindow > CContainedWindow
Definition: atlwin.h:1862
BOOL IsWindow() const
Definition: atlwin.h:913
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
int GetWindowRgn(HRGN hRgn)
Definition: atlwin.h:788
BOOL WINAPI UpdateWindow(_In_ HWND)
HWND hWnd
Definition: settings.c:17
LONG SetWindowLong(int nIndex, LONG dwNewLong)
Definition: atlwin.h:1236
BOOL ScrollWindow(int xAmount, int yAmount, LPCRECT lpRect=NULL, LPCRECT lpClipRect=NULL)
Definition: atlwin.h:1064
BOOL SetWindowPos(HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
Definition: atlwin.h:1254
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:624
static HANDLE ULONG_PTR dwData
Definition: file.c:35
HRESULT GetDlgHost(int nID, REFIID iid, void **ppHost)
Definition: atlwin.h:565
#define GWL_EXSTYLE
Definition: winuser.h:845
int SetScrollPos(int nBar, int nPos, BOOL bRedraw=TRUE)
Definition: atlwin.h:1212
BOOL WinHelp(LPCTSTR lpszHelp, UINT nCmd=HELP_CONTEXT, DWORD dwData=0)
Definition: atlwin.h:1329
virtual void OnFinalMessage(HWND)
Definition: atlwin.h:1438
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:586
HWND WINAPI SetFocus(_In_opt_ HWND)
virtual BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT &lResult, DWORD dwMsgMapID)=0
BOOL WINAPI ChangeClipboardChain(_In_ HWND, _In_ HWND)
UINT_PTR WPARAM
Definition: windef.h:207
#define SetWindowLong
Definition: winuser.h:5833
void EndPaint(LPPAINTSTRUCT lpPaint)
Definition: atlwin.h:495
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:5822
#define DlgDirSelectComboBoxEx
Definition: winuser.h:5748
BOOL Init(PUSERCONNECT UserCon)
Definition: dllmain.c:385
HRESULT GetDlgControl(int nID, REFIID iid, void **ppCtrl)
Definition: atlwin.h:553
__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:5789
WNDPROC GetWNDPROC()
Definition: atlwin.h:252
BOOL SetWindowText(LPCTSTR lpszString)
Definition: atlwin.h:1266
#define DlgDirListComboBox
Definition: winuser.h:5747
void DragAcceptFiles(BOOL bAccept=TRUE)
Definition: atlwin.h:470
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:794
BOOL WINAPI FlashWindow(_In_ HWND, _In_ BOOL)
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1806
#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:1317
#define SetWindowLongPtr
Definition: treelist.c:70
POINTL point
Definition: edittest.c:50
HWND GetNextDlgTabItem(HWND hWndCtl, BOOL bPrevious=FALSE) const
Definition: atlwin.h:660
#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:1028
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:1578
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:1736
BOOL ResizeClient(int nWidth, int nHeight, BOOL bRedraw=FALSE)
Definition: atlwin.h:1046
HWND WINAPI GetLastActivePopup(_In_ HWND)
#define GetWindowText
Definition: winuser.h:5778
DWORD GetWindowContextHelpId() const
Definition: atlwin.h:744
BOOL WINAPI ScrollWindow(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT)
CWndProcThunk m_thunk
Definition: atlwin.h:1731
BOOL InvalidateRect(LPCRECT lpRect, BOOL bErase=TRUE)
Definition: atlwin.h:868
BOOL SetDlgItemText(int nID, LPCTSTR lpszString)
Definition: atlwin.h:1158
HWND WINAPI GetNextDlgGroupItem(_In_ HWND, _In_opt_ HWND, _In_ BOOL)
static BOOL CALLBACK GetDescendantWindowCallback(HWND hWnd, LPARAM lParam)
Definition: atlwin.h:531
int GetUpdateRgn(HRGN hRgn, BOOL bErase=FALSE)
Definition: atlwin.h:732
int WINAPI SetWindowRgn(_In_ HWND, _In_opt_ HRGN, _In_ BOOL)
int WINAPI GetDlgCtrlID(_In_ HWND)
void PrevDlgCtrl() const
Definition: atlwin.h:1016
BOOL IsChild(const HWND hWnd) const
Definition: atlwin.h:880
BOOL SubclassWindow(HWND hWnd)
Definition: atlwin.h:1518
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:3186
static DWORD GetWndStyle(DWORD dwStyle)
Definition: atlwin.h:1568
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:844
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:1224
BOOL CheckDlgButton(int nIDButton, UINT nCheck)
Definition: atlwin.h:335
BOOL GetClientRect(LPRECT lpRect) const
Definition: atlwin.h:507
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:1242
BOOL WINAPI SetWindowContextHelpId(_In_ HWND, _In_ DWORD)
BOOL CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton)
Definition: atlwin.h:341
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:5735
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL KillTimer(UINT_PTR nIDEvent)
Definition: atlwin.h:942
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:782
_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:1188
UINT WINAPI GetDlgItemInt(_In_ HWND, _In_ int, _Out_opt_ PBOOL, _In_ BOOL)
#define WM_GETFONT
Definition: winuser.h:1638
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:1372
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:850
#define PtrToUlong(u)
Definition: config.h:107
CContainedWindowT(CMessageMap *pObject, DWORD dwMsgMapID=0)
Definition: atlwin.h:1739
BOOL ClientToScreen(LPRECT lpRect) const
Definition: atlwin.h:365
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:1248
#define PostMessage
Definition: winuser.h:5812
void SendMessageToDescendants(UINT message, WPARAM wParam=0, LPARAM lParam=0, BOOL bDeep=TRUE)
Definition: atlwin.h:1109
#define DlgDirSelectEx
Definition: winuser.h:5749
int SetDlgCtrlID(int nID)
Definition: atlwin.h:1146
BOOL ValidateRgn(HRGN hRgn)
Definition: atlwin.h:1323
int ScrollWindowEx(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip, HRGN hRgnUpdate, LPRECT lpRectUpdate, UINT flags)
Definition: atlwin.h:1070
HMENU GetMenu() const
Definition: atlwin.h:648
BOOL ClientToScreen(LPPOINT lpPoint) const
Definition: atlwin.h:359
char TCHAR
Definition: xmlstorage.h:189
int DlgDirListComboBox(LPTSTR lpPathSpec, int nIDComboBox, int nIDStaticPath, UINT nFileType)
Definition: atlwin.h:452
Definition: rosdlgs.h:5
DWORD GetHotKey() const
Definition: atlwin.h:630
int SetWindowRgn(HRGN hRgn, BOOL bRedraw=FALSE)
Definition: atlwin.h:1260
#define _T(x)
Definition: vfdio.h:22
virtual void OnFinalMessage(HWND)
Definition: atlwin.h:1514
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:2386
#define GetDlgItemText
Definition: winuser.h:5765
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:1990
LONG HRESULT
Definition: typedefs.h:79
HWND GetDlgItem(_In_ int nID) const
Definition: atlwin.h:571
_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:383
#define SWP_NOACTIVATE
Definition: winuser.h:1232
BOOL EnableScrollBar(UINT uSBFlags, UINT uArrowFlags=ESB_ENABLE_BOTH)
Definition: atlwin.h:483
virtual ~CWindowImplRoot()
Definition: atlwin.h:1355
_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:768
BOOL OpenClipboard()
Definition: atlwin.h:1004
HDC GetWindowDC()
Definition: atlwin.h:750
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
virtual WNDPROC GetWindowProc()
Definition: atlwin.h:1563
#define WM_NCDESTROY
Definition: winuser.h:1671
BOOL UpdateWindow()
Definition: atlwin.h:1311
int WINAPI GetWindowTextLengthW(_In_ HWND)
BOOL WINAPI ValidateRect(_In_opt_ HWND, _In_opt_ LPCRECT)
HWND SetClipboardViewer()
Definition: atlwin.h:1140
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:5829
BOOL IsParentDialog()
Definition: atlwin.h:904
ATOM Register(WNDPROC *p)
Definition: atlwin.h:1992
#define WM_PRINT
Definition: winuser.h:1867
GLbitfield flags
Definition: glext.h:7161
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1757
HWND WINAPI ChildWindowFromPointEx(_In_ HWND, _In_ POINT, _In_ UINT)
BOOL DrawMenuBar()
Definition: atlwin.h:477
BOOL IsWindowUnicode()
Definition: atlwin.h:930
unsigned __int64 ULONG64
Definition: imports.h:198
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
#define DialogBoxParam
Definition: winuser.h:5744
LPRECT m_lpRect
Definition: atlwin.h:123
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
void SetRedraw(BOOL bRedraw=TRUE)
Definition: atlwin.h:1200
BOOL ScreenToClient(LPPOINT lpPoint) const
Definition: atlwin.h:1058
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define GetWindowLong
Definition: winuser.h:5776
BOOL SendNotifyMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1122
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:1293
BOOL CreateGrayCaret(int nWidth, int nHeight)
Definition: atlwin.h:410
static INT_PTR CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1396
BOOL WINAPI GetUpdateRect(_In_ HWND, _Out_opt_ LPRECT, _In_ BOOL)
LONG GetWindowLong(int nIndex) const
Definition: atlwin.h:756
GLenum GLsizei len
Definition: glext.h:6722
BOOL LockWindowUpdate(BOOL bLock=TRUE)
Definition: atlwin.h:948
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1585
BOOL CreateSolidCaret(int nWidth, int nHeight)
Definition: atlwin.h:416
HWND m_hWnd
Definition: atlwin.h:267
#define GetCurrentProcess()
Definition: compat.h:618
#define MessageBox
Definition: winuser.h:5802
BOOL ShowCaret()
Definition: atlwin.h:1281
BOOL DestroyWindow()
Definition: atlwin.h:428
BOOL SetWindowContextHelpId(DWORD dwContextHelpId)
Definition: atlwin.h:1230
void NextDlgCtrl() const
Definition: atlwin.h:998
CMessageMap * m_pObject
Definition: atlwin.h:1734
static LRESULT SendMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1088
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:962
WORD SetWindowWord(int nIndex, WORD wNewWord)
Definition: atlwin.h:1272
#define LoadCursor
Definition: winuser.h:5792
HWND Detach()
Definition: atlwin.h:439
#define GWLP_WNDPROC
Definition: treelist.c:66
BOOL IsIconic() const
Definition: atlwin.h:898
BOOL SubclassWindow(HWND hWnd)
Definition: atlwin.h:1762
static RECT rcDefault
Definition: atlwin.h:268
BOOL ShowOwnedPopups(BOOL bShow=TRUE)
Definition: atlwin.h:1287
int ReleaseDC(HDC hDC)
Definition: atlwin.h:1040
INT_PTR(CALLBACK * DLGPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2876
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define SWP_NOSIZE
Definition: winuser.h:1235
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2886
WORD GetWindowWord(int nIndex) const
Definition: atlwin.h:838
#define GWL_STYLE
Definition: winuser.h:846
CWndProcThunk m_thunk
Definition: atlwin.h:1345
_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:1733
int WINAPI SysReAllocStringLen(BSTR *old, const OLECHAR *str, unsigned int len)
Definition: oleaut.c:383
LONG_PTR GetWindowLongPtr(int nIndex) const
Definition: atlwin.h:762
HICON GetIcon(BOOL bBigIcon=TRUE) const
Definition: atlwin.h:636
HWND ChildWindowFromPoint(POINT point) const
Definition: atlwin.h:347
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI ShowOwnedPopups(_In_ HWND, _In_ BOOL)
HMENU GetSystemMenu(BOOL bRevert)
Definition: atlwin.h:696
HICON SetIcon(HICON hIcon, BOOL bBigIcon=TRUE)
Definition: atlwin.h:1182
_In_ BOOL bEnable
Definition: winddi.h:3426
WNDPROC m_pfnSuperWindowProc
Definition: atlwin.h:1506
BOOL IsZoomed() const
Definition: atlwin.h:936
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:1655
int DlgDirList(LPTSTR lpPathSpec, int nIDListBox, int nIDStaticPath, UINT nFileType)
Definition: atlwin.h:446
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1299
BOOL PostMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1010
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
static BOOL CALLBACK SendMessageToDescendantsCallback(HWND hWnd, LPARAM lParam)
Definition: atlwin.h:1095
unsigned short USHORT
Definition: pedump.c:61
BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
Definition: atlwin.h:974
int GetDlgCtrlID() const
Definition: atlwin.h:559
HICON hIcon
Definition: msconfig.c:44
void Print(HDC hDC, DWORD dwFlags) const
Definition: atlwin.h:1022
int SetHotKey(WORD wVirtualKeyCode, WORD wModifiers)
Definition: atlwin.h:1176
#define GCCU(x)
Definition: atlwin.h:27
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define _Out_opt_
Definition: ms_sal.h:346
#define SetWindowText
Definition: winuser.h:5837
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:608
HWND SetParent(HWND hWndNewParent)
Definition: atlwin.h:1194
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dx
Definition: linetemp.h:97
#define RealGetWindowClass
Definition: winuser.h:5815
#define WM_SETFONT
Definition: winuser.h:1637
HWND UnsubclassWindow(BOOL bForce=FALSE)
Definition: atlwin.h:1785
BOOL WINAPI SetScrollRange(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ BOOL)
BOOL FlashWindow(BOOL bInvert)
Definition: atlwin.h:501
HDC GetDCEx(HRGN hRgnClip, DWORD flags)
Definition: atlwin.h:519
BOOL WINAPI IsChild(_In_ HWND, _In_ HWND)
LRESULT SendDlgItemMessage(int nID, UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1076
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
BOOL Invalidate(BOOL bErase=TRUE)
Definition: atlwin.h:862
HWND GetTopLevelParent() const
Definition: atlwin.h:702
#define msg(x)
Definition: auth_time.c:54
#define RDW_UPDATENOW
Definition: winuser.h:1210
static DWORD GetWndExStyle(DWORD dwExStyle)
Definition: atlwin.h:1573
_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:5823
BOOL SetDlgItemInt(int nID, UINT nValue, BOOL bSigned=TRUE)
Definition: atlwin.h:1152
HWND WINAPI ChildWindowFromPoint(_In_ HWND, _In_ POINT)
static LPCTSTR GetWndCaption()
Definition: atlwin.h:1695
#define HIWORD(l)
Definition: typedefs.h:247
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
Definition: atlwin.h:1082
#define GetWindowTextLength
Definition: winuser.h:5779
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL DlgDirSelectComboBox(LPTSTR lpString, int nCount, int nIDComboBox)
Definition: atlwin.h:464
HWND ChildWindowFromPointEx(POINT point, UINT uFlags) const
Definition: atlwin.h:353
static INT_PTR CALLBACK StartDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1377
LONG bottom
Definition: windef.h:309
BOOL WINAPI ShowCaret(_In_opt_ HWND)
void InvalidateRgn(HRGN hRgn, BOOL bErase=TRUE)
Definition: atlwin.h:874
#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:1101
#define PAGE_EXECUTE_READWRITE
Definition: nt_native.h:1308
int WINAPI GetWindowRgn(_In_ HWND, _In_ HRGN)
CWindow GetParent() const
Definition: atlwin.h:666
#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:422
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:1034
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:968
BOOL bHandled
Definition: atlwin.h:139
HMENU WINAPI GetMenu(_In_ HWND)
BOOL CreateCaret(HBITMAP pBitmap)
Definition: atlwin.h:404
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:1218
LPCTSTR m_lpszClassName
Definition: atlwin.h:1732
int WINAPI SetScrollPos(_In_ HWND, _In_ int, _In_ int, _In_ BOOL)
LPARAM lParam
Definition: combotst.c:139
_In_ int nMaxCount
Definition: winuser.h:4857
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:513
#define ESB_ENABLE_BOTH
Definition: winuser.h:563
BOOL GetScrollRange(int nBar, LPINT lpMinPos, LPINT lpMaxPos) const
Definition: atlwin.h:684
INT_PTR DoModal(HWND hWndParent=::GetActiveWindow(), LPARAM dwInitParam=NULL)
Definition: atlwin.h:1470
static DWORD GetWndExStyle(DWORD dwExStyle)
Definition: atlwin.h:77
#define SendNotifyMessage
Definition: winuser.h:5826
#define MAKEINTATOM(i)
Definition: winbase.h:1448
BOOL DestroyWindow()
Definition: atlwin.h:1490
HWND GetTopWindow() const
Definition: atlwin.h:720
HWND GetTopLevelWindow() const
Definition: atlwin.h:714
HWND SetCapture()
Definition: atlwin.h:1134
HWND SetActiveWindow()
Definition: atlwin.h:1128
const _ATL_MSG * m_pCurrentMsg
Definition: atlwin.h:1346
DWORD GetWindowProcessID()
Definition: atlwin.h:774
BOOL IsWindowVisible() const
Definition: atlwin.h:924
#define RDW_INVALIDATE
Definition: winuser.h:1204
BOOL GetWindowText(_Inout_ _Outref_result_maybenull_ _Post_z_ BSTR &bstrText) const
Definition: atlwin.h:812
#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:1824
#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:577
#define CreateDialogParam
Definition: winuser.h:5732
#define WinHelp
Definition: winuser.h:5844