annotate foosdk/wtl/Include/atlwinx.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 // Windows Template Library - WTL version 10.0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 // Copyright (C) Microsoft Corporation, WTL Team. All rights reserved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 //
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 // This file is a part of the Windows Template Library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 // The use and distribution terms for this software are covered by the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 // Microsoft Public License (http://opensource.org/licenses/MS-PL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 // which can be found in the file MS-PL.txt at the root folder.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 #ifndef __ATLWINX_H__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 #define __ATLWINX_H__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 #ifndef __ATLAPP_H__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 #error atlwinx.h requires atlapp.h to be included first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 #include <atlwin.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 ///////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 // Classes in this file:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 //
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 // CWindowEx
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 /////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 // Additional macros needed for template classes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 #ifndef DECLARE_WND_CLASS_EX2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 #define DECLARE_WND_CLASS_EX2(WndClassName, EnclosingClass, style, bkgnd) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 static ATL::CWndClassInfo& GetWndClassInfo() \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 static ATL::CWndClassInfo wc = \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 { sizeof(WNDCLASSEX), style, EnclosingClass::StartWindowProc, \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 0, 0, NULL, NULL, NULL, (HBRUSH)(bkgnd + 1), NULL, WndClassName, NULL }, \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 NULL, NULL, IDC_ARROW, TRUE, 0, _T("") \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 }; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 return wc; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #endif // DECLARE_WND_CLASS_EX2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #ifndef DECLARE_WND_SUPERCLASS2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 #define DECLARE_WND_SUPERCLASS2(WndClassName, EnclosingClass, OrigWndClassName) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 static ATL::CWndClassInfo& GetWndClassInfo() \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 static ATL::CWndClassInfo wc = \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 { sizeof(WNDCLASSEX), 0, EnclosingClass::StartWindowProc, \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 0, 0, NULL, NULL, NULL, NULL, NULL, WndClassName, NULL }, \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 OrigWndClassName, NULL, NULL, TRUE, 0, _T("") \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 }; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 return wc; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 #endif // DECLARE_WND_SUPERCLASS2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 ///////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 // Command Chaining Macros
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 #define CHAIN_COMMANDS(theChainClass) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 if(uMsg == WM_COMMAND) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 CHAIN_MSG_MAP(theChainClass)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 #define CHAIN_COMMANDS_ALT(theChainClass, msgMapID) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 if(uMsg == WM_COMMAND) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 CHAIN_MSG_MAP_ALT(theChainClass, msgMapID)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 #define CHAIN_COMMANDS_MEMBER(theChainMember) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 if(uMsg == WM_COMMAND) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 CHAIN_MSG_MAP_MEMBER(theChainMember)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 #define CHAIN_COMMANDS_ALT_MEMBER(theChainMember, msgMapID) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 if(uMsg == WM_COMMAND) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 CHAIN_MSG_MAP_ALT_MEMBER(theChainMember, msgMapID)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 ///////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 // Macros for parent message map to selectively reflect control messages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 // NOTE: ReflectNotifications is a member of ATL's CWindowImplRoot
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 // (and overridden in 2 cases - CContainedWindowT and CAxHostWindow)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 // Since we can't modify ATL, we'll provide the needed additions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 // in a separate function (that is not a member of CWindowImplRoot)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 namespace WTL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 inline LRESULT WtlReflectNotificationsFiltered(HWND hWndParent, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 UINT uMsgFilter = WM_NULL, UINT_PTR idFromFilter = 0, HWND hWndChildFilter = NULL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 if((uMsgFilter != WM_NULL) && (uMsgFilter != uMsg))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 // The notification message doesn't match the filter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 return 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 HWND hWndChild = NULL;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 UINT_PTR idFrom = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 switch(uMsg)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 case WM_COMMAND:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 if(lParam != NULL) // not from a menu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 hWndChild = (HWND)lParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 idFrom = (UINT_PTR)LOWORD(wParam);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 case WM_NOTIFY:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 hWndChild = ((LPNMHDR)lParam)->hwndFrom;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 idFrom = ((LPNMHDR)lParam)->idFrom;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 case WM_PARENTNOTIFY:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 switch(LOWORD(wParam))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 case WM_CREATE:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 case WM_DESTROY:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 hWndChild = (HWND)lParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 idFrom = (UINT_PTR)HIWORD(wParam);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 default:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 hWndChild = ::GetDlgItem(hWndParent, HIWORD(wParam));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 idFrom = (UINT_PTR)::GetDlgCtrlID(hWndChild);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 case WM_DRAWITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 if(wParam) // not from a menu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 hWndChild = ((LPDRAWITEMSTRUCT)lParam)->hwndItem;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 idFrom = (UINT_PTR)wParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 case WM_MEASUREITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 if(wParam) // not from a menu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 hWndChild = ::GetDlgItem(hWndParent, ((LPMEASUREITEMSTRUCT)lParam)->CtlID);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 idFrom = (UINT_PTR)wParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 case WM_COMPAREITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 if(wParam) // not from a menu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 hWndChild = ((LPCOMPAREITEMSTRUCT)lParam)->hwndItem;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 idFrom = (UINT_PTR)wParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 case WM_DELETEITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 if(wParam) // not from a menu
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 hWndChild = ((LPDELETEITEMSTRUCT)lParam)->hwndItem;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 idFrom = (UINT_PTR)wParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 case WM_VKEYTOITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 case WM_CHARTOITEM:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 case WM_HSCROLL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 case WM_VSCROLL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 hWndChild = (HWND)lParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 idFrom = (UINT_PTR)::GetDlgCtrlID(hWndChild);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 case WM_CTLCOLORBTN:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 case WM_CTLCOLORDLG:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 case WM_CTLCOLOREDIT:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 case WM_CTLCOLORLISTBOX:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 case WM_CTLCOLORMSGBOX:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 case WM_CTLCOLORSCROLLBAR:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 case WM_CTLCOLORSTATIC:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 hWndChild = (HWND)lParam;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 idFrom = (UINT_PTR)::GetDlgCtrlID(hWndChild);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 default:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 if((hWndChild == NULL) ||
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 ((hWndChildFilter != NULL) && (hWndChildFilter != hWndChild)))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 // Either hWndChild isn't valid, or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 // hWndChild doesn't match the filter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 return 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 if((idFromFilter != 0) && (idFromFilter != idFrom))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 // The dialog control id doesn't match the filter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 return 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 ATLASSERT(::IsWindow(hWndChild));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 LRESULT lResult = ::SendMessage(hWndChild, OCM__BASE + uMsg, wParam, lParam);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 if((lResult == 0) && (uMsg >= WM_CTLCOLORMSGBOX) && (uMsg <= WM_CTLCOLORSTATIC))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 // Try to prevent problems with WM_CTLCOLOR* messages when
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 // the message wasn't really handled
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 bHandled = FALSE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 return lResult;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 } // namespace WTL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 // Try to prevent problems with WM_CTLCOLOR* messages when
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 // the message wasn't really handled
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 #define REFLECT_NOTIFICATIONS_EX() \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 if((lResult == 0) && (uMsg >= WM_CTLCOLORMSGBOX) && (uMsg <= WM_CTLCOLORSTATIC)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 bHandled = FALSE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 #define REFLECT_NOTIFICATIONS_MSG_FILTERED(uMsgFilter) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 lResult = WTL::WtlReflectNotificationsFiltered(this->m_hWnd, uMsg, wParam, lParam, bHandled, uMsgFilter, 0, NULL); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 #define REFLECT_NOTIFICATIONS_ID_FILTERED(idFromFilter) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 lResult = WTL::WtlReflectNotificationsFiltered(this->m_hWnd, uMsg, wParam, lParam, bHandled, WM_NULL, idFromFilter, NULL); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 #define REFLECT_NOTIFICATIONS_HWND_FILTERED(hWndChildFilter) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 lResult = WTL::WtlReflectNotificationsFiltered(this->m_hWnd, uMsg, wParam, lParam, bHandled, WM_NULL, 0, hWndChildFilter); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 #define REFLECT_NOTIFICATIONS_MSG_ID_FILTERED(uMsgFilter, idFromFilter) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 lResult = WTL::WtlReflectNotificationsFiltered(this->m_hWnd, uMsg, wParam, lParam, bHandled, uMsgFilter, idFromFilter, NULL); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 #define REFLECT_NOTIFICATIONS_MSG_HWND_FILTERED(uMsgFilter, hWndChildFilter) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 lResult = WTL::WtlReflectNotificationsFiltered(this->m_hWnd, uMsg, wParam, lParam, bHandled, uMsgFilter, 0, hWndChildFilter); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 #define REFLECT_COMMAND(id, code) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 if((uMsg == WM_COMMAND) && (id == LOWORD(wParam)) && (code == HIWORD(wParam))) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 #define REFLECT_COMMAND_ID(id) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 if((uMsg == WM_COMMAND) && (id == LOWORD(wParam))) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 #define REFLECT_COMMAND_CODE(code) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 if((uMsg == WM_COMMAND) && (code == HIWORD(wParam))) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 #define REFLECT_COMMAND_RANGE(idFirst, idLast) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 if((uMsg == WM_COMMAND) && (LOWORD(wParam) >= idFirst) && (LOWORD(wParam) <= idLast)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 #define REFLECT_COMMAND_RANGE_CODE(idFirst, idLast, code) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 if((uMsg == WM_COMMAND) && (code == HIWORD(wParam)) && (LOWORD(wParam) >= idFirst) && (LOWORD(wParam) <= idLast)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 #define REFLECT_NOTIFY(id, cd) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 if((uMsg == WM_NOTIFY) && (id == ((LPNMHDR)lParam)->idFrom) && (cd == ((LPNMHDR)lParam)->code)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 #define REFLECT_NOTIFY_ID(id) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 if((uMsg == WM_NOTIFY) && (id == ((LPNMHDR)lParam)->idFrom)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 #define REFLECT_NOTIFY_CODE(cd) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 if((uMsg == WM_NOTIFY) && (cd == ((LPNMHDR)lParam)->code)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 #define REFLECT_NOTIFY_RANGE(idFirst, idLast) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 if((uMsg == WM_NOTIFY) && (((LPNMHDR)lParam)->idFrom >= idFirst) && (((LPNMHDR)lParam)->idFrom <= idLast)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 #define REFLECT_NOTIFY_RANGE_CODE(idFirst, idLast, cd) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 if((uMsg == WM_NOTIFY) && (cd == ((LPNMHDR)lParam)->code) && (((LPNMHDR)lParam)->idFrom >= idFirst) && (((LPNMHDR)lParam)->idFrom <= idLast)) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 { \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 bHandled = TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 lResult = this->ReflectNotifications(uMsg, wParam, lParam, bHandled); \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 if(bHandled) \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 return TRUE; \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352 ///////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 // GetClassLong/SetClassLong redefinition to avoid problems with class members
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 #ifdef SetClassLongPtrA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 #undef SetClassLongPtrA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 inline LONG_PTR SetClassLongPtrA(HWND hWnd, int nIndex, LONG_PTR dwNewLong)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 return ::SetClassLongA(hWnd, nIndex, LONG(dwNewLong));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363 #ifdef SetClassLongPtrW
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 #undef SetClassLongPtrW
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 inline LONG_PTR SetClassLongPtrW(HWND hWnd, int nIndex, LONG_PTR dwNewLong)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 return ::SetClassLongW(hWnd, nIndex, LONG(dwNewLong));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 #ifdef GetClassLongPtrA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 #undef GetClassLongPtrA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 inline LONG_PTR GetClassLongPtrA(HWND hWnd, int nIndex)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 return ::GetClassLongA(hWnd, nIndex);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 #ifdef GetClassLongPtrW
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 #undef GetClassLongPtrW
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 inline LONG_PTR GetClassLongPtrW(HWND hWnd, int nIndex)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 return ::GetClassLongW(hWnd, nIndex);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 ///////////////////////////////////////////////////////////////////////////////
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 // CWindowEx - extension of ATL::CWindow
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 namespace WTL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 class CWindowEx : public ATL::CWindow
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 CWindowEx(HWND hWnd = NULL) : ATL::CWindow(hWnd)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 { }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 CWindowEx& operator =(HWND hWnd)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 m_hWnd = hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403 return *this;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 operator HWND() const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408 return m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 // Methods
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 BOOL PrintWindow(HDC hDC, UINT uFlags = 0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 return ::PrintWindow(m_hWnd, hDC, uFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 BOOL DragDetect(POINT pt)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 return ::DragDetect(m_hWnd, pt);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 BOOL DragDetect()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 POINT pt = {};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 ::GetCursorPos(&pt);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 return ::DragDetect(m_hWnd, pt);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 CWindowEx GetAncestor(UINT uFlags) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 return CWindowEx(::GetAncestor(m_hWnd, uFlags));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 // Note: Does not work properly on Vista Aero and above
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 BOOL AnimateWindow(DWORD dwFlags, DWORD dwTime = 200)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 return ::AnimateWindow(m_hWnd, dwTime, dwFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 BOOL FlashWindowEx(DWORD dwFlags, UINT uCount, DWORD dwTimeout = 0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 FLASHWINFO fi = { sizeof(FLASHWINFO) };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 fi.hwnd = m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 fi.dwFlags = dwFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 fi.uCount = uCount;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 fi.dwTimeout = dwTimeout;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 return ::FlashWindowEx(&fi);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 BOOL StopFlashWindowEx()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 FLASHWINFO fi = { sizeof(FLASHWINFO) };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 fi.hwnd = m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 fi.dwFlags = FLASHW_STOP;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 return ::FlashWindowEx(&fi);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 // Class long properties
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 DWORD GetClassLong(int nIndex) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 return ::GetClassLong(m_hWnd, nIndex);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 DWORD SetClassLong(int nIndex, LONG dwNewLong)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 return ::SetClassLong(m_hWnd, nIndex, dwNewLong);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 ULONG_PTR GetClassLongPtr(int nIndex) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 return ::GetClassLongPtr(m_hWnd, nIndex);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487 ULONG_PTR SetClassLongPtr(int nIndex, LONG_PTR dwNewLong)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 return ::SetClassLongPtr(m_hWnd, nIndex, dwNewLong);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 // Layered windows
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 BOOL SetLayeredWindowAttributes(COLORREF crlKey, BYTE byteAlpha, DWORD dwFlags)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 ATLASSERT((GetExStyle() & WS_EX_LAYERED) != 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 return ::SetLayeredWindowAttributes(m_hWnd, crlKey, byteAlpha, dwFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 BOOL UpdateLayeredWindow(HDC hdcDst, LPPOINT pptDst, LPSIZE psize, HDC hdcSrc, LPPOINT pptSrc, COLORREF crlKey, BLENDFUNCTION* pblend, DWORD dwFlags)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 ATLASSERT((GetExStyle() & WS_EX_LAYERED) != 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 return ::UpdateLayeredWindow(m_hWnd, hdcDst, pptDst, psize, hdcSrc, pptSrc, crlKey, pblend, dwFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 BOOL UpdateLayeredWindow(LPPOINT pptDst = NULL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 ATLASSERT((GetExStyle() & WS_EX_LAYERED) != 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 return ::UpdateLayeredWindow(m_hWnd, NULL, pptDst, NULL, NULL, NULL, CLR_NONE, NULL, 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 BOOL GetLayeredWindowAttributes(COLORREF* pcrlKey, BYTE* pbyteAlpha, DWORD* pdwFlags) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 ATLASSERT((GetExStyle() & WS_EX_LAYERED) != 0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 return ::GetLayeredWindowAttributes(m_hWnd, pcrlKey, pbyteAlpha, pdwFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 // Mouse tracking
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 BOOL StartTrackMouseLeave()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 TRACKMOUSEEVENT tme = {};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 tme.cbSize = sizeof(TRACKMOUSEEVENT);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 tme.dwFlags = TME_LEAVE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 tme.hwndTrack = m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 return ::TrackMouseEvent(&tme);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 BOOL StartTrackMouse(DWORD dwFlags, DWORD dwHoverTime = HOVER_DEFAULT)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 TRACKMOUSEEVENT tme = {};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 tme.cbSize = sizeof(TRACKMOUSEEVENT);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 tme.dwFlags = dwFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 tme.hwndTrack = m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 tme.dwHoverTime = dwHoverTime;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 return ::TrackMouseEvent(&tme);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 BOOL CancelTrackMouse(DWORD dwType)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 TRACKMOUSEEVENT tme = {};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555 tme.cbSize = sizeof(TRACKMOUSEEVENT);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 tme.dwFlags = TME_CANCEL | dwType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 tme.hwndTrack = m_hWnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 return ::TrackMouseEvent(&tme);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 // CString support
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 #ifdef __ATLSTR_H__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 int GetWindowText(ATL::CString& strText) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 int nLength = GetWindowTextLength();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 LPTSTR pszText = strText.GetBuffer(nLength + 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 nLength = ::GetWindowText(m_hWnd, pszText, nLength + 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 strText.ReleaseBuffer(nLength);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 return nLength;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573 UINT GetDlgItemText(int nID, ATL::CString& strText) const
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575 ATLASSERT(::IsWindow(m_hWnd));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 HWND hItem = GetDlgItem(nID);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 if(hItem != NULL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 int nLength = ::GetWindowTextLength(hItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 LPTSTR pszText = strText.GetBuffer(nLength + 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 nLength = ::GetWindowText(hItem, pszText, nLength + 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583 strText.ReleaseBuffer(nLength);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 return nLength;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587 else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 strText.Empty();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591 return 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
594 #endif // __ATLSTR_H__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
595 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
596
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
597 } // namespace WTL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
598
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
599 #endif // __ATLWINX_H__