ReactOS  0.4.15-dev-5137-g826bd41
defwnd.c File Reference
#include <user32.h>
#include <ddk/immdev.h>
Include dependency graph for defwnd.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (user32)
 
DWORD WINAPI DECLSPEC_HOTPATCH GetSysColor (int nIndex)
 
HBRUSH WINAPI DECLSPEC_HOTPATCH GetSysColorBrush (int nIndex)
 
BOOL WINAPI SetSysColors (int cElements, CONST INT *lpaElements, CONST COLORREF *lpaRgbValues)
 
BOOL FASTCALL DefSetText (HWND hWnd, PCWSTR String, BOOL Ansi)
 
HWND FASTCALL IntFindChildWindowToOwner (HWND hRoot, HWND hOwner)
 
static VOID DefWndTrackScrollBar (HWND Wnd, WPARAM wParam, POINT Pt)
 
LRESULT WINAPI DoAppSwitch (WPARAM wParam, LPARAM lParam)
 
LRESULT DefWndHandleSysCommand (HWND hWnd, WPARAM wParam, LPARAM lParam)
 
HBRUSH DefWndControlColor (HDC hDC, UINT ctlType)
 
static BOOL CALLBACK UserSendUiUpdateMsg (HWND hwnd, LPARAM lParam)
 
static void UserPaintCaption (PWND pwnd, INT Flags)
 
LRESULT FASTCALL DefWndGetIcon (PWND pWnd, WPARAM wParam, LPARAM lParam)
 
LRESULT WINAPI User32DefWindowProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
 
LRESULT WINAPI RealDefWindowProcA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 
LRESULT WINAPI RealDefWindowProcW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 
LRESULT WINAPI DefWindowProcA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 
LRESULT WINAPI DefWindowProcW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 

Function Documentation

◆ DefSetText()

BOOL FASTCALL DefSetText ( HWND  hWnd,
PCWSTR  String,
BOOL  Ansi 
)

Definition at line 65 of file defwnd.c.

66 {
67  BOOL Ret;
68  LARGE_STRING lsString;
69 
70  if ( String )
71  {
72  if ( Ansi )
74  else
76  }
77  Ret = NtUserDefSetText(hWnd, (String ? &lsString : NULL));
78 
79  return Ret;
80 }
VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING, IN PCWSTR, IN INT)
Definition: rtlstr.c:42
CONST char * PCSZ
Definition: umtypes.h:125
HWND hWnd
Definition: settings.c:17
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2430
unsigned int BOOL
Definition: ntddk_ex.h:94
VOID NTAPI RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING, IN PCSZ, IN INT)
Definition: rtlstr.c:17
#define NULL
Definition: types.h:112
BOOL NTAPI NtUserDefSetText(HWND WindowHandle, PLARGE_STRING WindowText)
Definition: window.c:4459

Referenced by IntDefWindowProc(), RealDefWindowProcA(), and RealDefWindowProcW().

◆ DefWindowProcA()

LRESULT WINAPI DefWindowProcA ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1237 of file defwnd.c.

1241 {
1242  BOOL Hook, msgOverride = FALSE;
1243  LRESULT Result = 0;
1244 
1245  LoadUserApiHook();
1246 
1247  Hook = BeginIfHookedUserApiHook();
1248  if (Hook)
1249  {
1250  msgOverride = IsMsgOverride(Msg, &guah.DefWndProcArray);
1251  if(msgOverride == FALSE)
1252  {
1253  EndUserApiHook();
1254  }
1255  }
1256 
1257  /* Bypass SEH and go direct. */
1258  if (!Hook || !msgOverride)
1260 
1261  _SEH2_TRY
1262  {
1264  }
1266  {
1267  ERR("Got exception in hooked DefWindowProcA!\n");
1268  }
1269  _SEH2_END;
1270 
1271  EndUserApiHook();
1272 
1273  return Result;
1274 }
_SEH2_TRY
Definition: create.c:4226
BOOL FASTCALL EndUserApiHook(VOID)
Definition: usrapihk.c:164
USERAPIHOOK guah
Definition: usrapihk.c:344
HWND hWnd
Definition: settings.c:17
_SEH2_END
Definition: create.c:4400
WPARAM wParam
Definition: combotst.c:138
BOOL FASTCALL IsMsgOverride(UINT, PUAHOWP)
Definition: usrapihk.c:63
LRESULT WINAPI RealDefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: defwnd.c:813
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
UAHOWP DefWndProcArray
Definition: undocuser.h:340
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
WNDPROC DefWindowProcA
Definition: undocuser.h:338
#define ERR(fmt,...)
Definition: debug.h:110
static __inline void LoadUserApiHook()
Definition: user_x.h:85
BOOL FASTCALL BeginIfHookedUserApiHook(VOID)
Definition: usrapihk.c:106
struct @1592 Msg[]
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:40
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139

◆ DefWindowProcW()

LRESULT WINAPI DefWindowProcW ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1277 of file defwnd.c.

1281 {
1282  BOOL Hook, msgOverride = FALSE;
1283  LRESULT Result = 0;
1284 
1285  LoadUserApiHook();
1286 
1287  Hook = BeginIfHookedUserApiHook();
1288  if (Hook)
1289  {
1290  msgOverride = IsMsgOverride(Msg, &guah.DefWndProcArray);
1291  if(msgOverride == FALSE)
1292  {
1293  EndUserApiHook();
1294  }
1295  }
1296 
1297  /* Bypass SEH and go direct. */
1298  if (!Hook || !msgOverride)
1300 
1301  _SEH2_TRY
1302  {
1304  }
1306  {
1307  ERR("Got exception in hooked DefWindowProcW!\n");
1308  }
1309  _SEH2_END;
1310 
1311  EndUserApiHook();
1312 
1313  return Result;
1314 }
_SEH2_TRY
Definition: create.c:4226
BOOL FASTCALL EndUserApiHook(VOID)
Definition: usrapihk.c:164
USERAPIHOOK guah
Definition: usrapihk.c:344
HWND hWnd
Definition: settings.c:17
LRESULT WINAPI RealDefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
Definition: defwnd.c:1037
_SEH2_END
Definition: create.c:4400
WPARAM wParam
Definition: combotst.c:138
BOOL FASTCALL IsMsgOverride(UINT, PUAHOWP)
Definition: usrapihk.c:63
WNDPROC DefWindowProcW
Definition: undocuser.h:339
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
UAHOWP DefWndProcArray
Definition: undocuser.h:340
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define ERR(fmt,...)
Definition: debug.h:110
static __inline void LoadUserApiHook()
Definition: user_x.h:85
BOOL FASTCALL BeginIfHookedUserApiHook(VOID)
Definition: usrapihk.c:106
struct @1592 Msg[]
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:40
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139

◆ DefWndControlColor()

HBRUSH DefWndControlColor ( HDC  hDC,
UINT  ctlType 
)

Definition at line 213 of file defwnd.c.

214 {
215  if (ctlType == CTLCOLOR_SCROLLBAR)
216  {
217  HBRUSH hb = GetSysColorBrush(COLOR_SCROLLBAR);
220  SetBkColor(hDC, bk);
221 
222  /* if COLOR_WINDOW happens to be the same as COLOR_3DHILIGHT
223  * we better use 0x55aa bitmap brush to make scrollbar's background
224  * look different from the window background.
225  */
226  if ( bk == GetSysColor(COLOR_WINDOW))
227  return gpsi->hbrGray;
228 
229  UnrealizeObject( hb );
230  return hb;
231  }
232 
234 
235  if ((ctlType == CTLCOLOR_EDIT) || (ctlType == CTLCOLOR_LISTBOX))
236  {
238  }
239  else
240  {
243  }
244 
246 }
#define COLOR_3DHILIGHT
Definition: winuser.h:931
PSERVERINFO gpsi
Definition: imm.c:17
#define CTLCOLOR_SCROLLBAR
Definition: winuser.h:950
#define COLOR_WINDOW
Definition: winuser.h:912
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
#define COLOR_3DFACE
Definition: winuser.h:923
#define COLOR_SCROLLBAR
Definition: winuser.h:906
DWORD COLORREF
Definition: windef.h:300
#define COLOR_WINDOWTEXT
Definition: winuser.h:915
BOOL WINAPI UnrealizeObject(_In_ HGDIOBJ)
#define CTLCOLOR_EDIT
Definition: winuser.h:946
#define CTLCOLOR_LISTBOX
Definition: winuser.h:947
DWORD WINAPI DECLSPEC_HOTPATCH GetSysColor(int nIndex)
Definition: defwnd.c:23
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
static HDC hDC
Definition: 3dtext.c:33
HBRUSH WINAPI DECLSPEC_HOTPATCH GetSysColorBrush(int nIndex)
Definition: defwnd.c:40

Referenced by IntDrawScrollInterior().

◆ DefWndGetIcon()

LRESULT FASTCALL DefWndGetIcon ( PWND  pWnd,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 292 of file defwnd.c.

293 {
294  HICON hIconRet;
295  if ( wParam > ICON_SMALL2 )
296  {
298  return 0;
299  }
300  switch(wParam)
301  {
302  case ICON_BIG:
303  hIconRet = UserGetProp(UserHMGetHandle(pWnd), gpsi->atomIconProp, TRUE);
304  break;
305  case ICON_SMALL:
306  case ICON_SMALL2:
307  hIconRet = UserGetProp(UserHMGetHandle(pWnd), gpsi->atomIconSmProp, TRUE);
308  break;
309  default:
310  break;
311  }
312  return (LRESULT)hIconRet;
313 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
static HICON
Definition: imagelist.c:84
#define TRUE
Definition: types.h:120
PSERVERINFO gpsi
Definition: imm.c:17
WPARAM wParam
Definition: combotst.c:138
#define ICON_SMALL
Definition: tnclass.cpp:48
#define UserHMGetHandle(obj)
Definition: ntuser.h:222
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
Definition: prop.c:46
#define SetLastError(x)
Definition: compat.h:611
ATOM atomIconProp
Definition: ntuser.h:1037
ATOM atomIconSmProp
Definition: ntuser.h:1036
LONG_PTR LRESULT
Definition: windef.h:209
#define ICON_BIG
Definition: tnclass.cpp:51

◆ DefWndHandleSysCommand()

LRESULT DefWndHandleSysCommand ( HWND  hWnd,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 144 of file defwnd.c.

145 {
146  POINT Pt;
147  LRESULT lResult;
148 
149  if (!IsWindowEnabled( hWnd )) return 0;
150 
151  switch (wParam & 0xfff0)
152  {
153  case SC_MOVE:
154  case SC_SIZE:
155 // case SC_DEFAULT:
156  case SC_MOUSEMENU:
157  case SC_KEYMENU:
158  case SC_SCREENSAVE:
159  case SC_MINIMIZE:
160  case SC_MAXIMIZE:
161  case SC_RESTORE:
162  case SC_CLOSE:
163  case SC_HOTKEY:
165  return 0;
166 
167  default:
168  break;
169  }
170 
171  if (ISITHOOKED(WH_CBT))
172  {
174  if (lResult) return 0;
175  }
176 
177  switch (wParam & 0xfff0)
178  {
179 
180  case SC_VSCROLL:
181  case SC_HSCROLL:
182  {
183  Pt.x = (short)LOWORD(lParam);
184  Pt.y = (short)HIWORD(lParam);
186  }
187  break;
188 
189  case SC_TASKLIST:
190  WinExec( "taskman.exe", SW_SHOWNORMAL );
191  break;
192 
193 
194  case SC_NEXTWINDOW:
195  case SC_PREVWINDOW:
197  break;
198 
199  default:
200  FIXME("Unimplemented DefWndHandleSysCommand wParam 0x%x\n",wParam);
201  break;
202  }
203 
204  return(0);
205 }
#define SC_KEYMENU
Definition: winuser.h:2586
#define SC_RESTORE
Definition: winuser.h:2588
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define SC_SCREENSAVE
Definition: mmsystem.h:933
HWND hWnd
Definition: settings.c:17
#define FNID_DEFWINDOWPROC
Definition: ntuser.h:842
#define SC_HOTKEY
Definition: winuser.h:2591
#define SC_MOUSEMENU
Definition: winuser.h:2585
UINT WINAPI DECLSPEC_HOTPATCH WinExec(LPCSTR lpCmdLine, UINT uCmdShow)
Definition: proc.c:4775
WPARAM wParam
Definition: combotst.c:138
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define SC_TASKLIST
Definition: winuser.h:2589
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:94
#define FALSE
Definition: types.h:117
#define FIXME(fmt,...)
Definition: debug.h:111
#define SC_MAXIMIZE
Definition: winuser.h:2578
BOOL WINAPI IsWindowEnabled(_In_ HWND)
#define WH_CBT
Definition: winuser.h:35
#define ISITHOOKED(HookId)
Definition: hook.h:6
#define SC_PREVWINDOW
Definition: winuser.h:2581
static VOID DefWndTrackScrollBar(HWND Wnd, WPARAM wParam, POINT Pt)
Definition: defwnd.c:118
BOOL NTAPI NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
Definition: message.c:2486
#define SC_MINIMIZE
Definition: winuser.h:2576
#define SW_SHOWNORMAL
Definition: winuser.h:764
#define SC_SIZE
Definition: winuser.h:2574
LRESULT WINAPI DoAppSwitch(WPARAM wParam, LPARAM lParam)
Definition: appswitch.c:584
#define SC_MOVE
Definition: winuser.h:2575
#define SC_CLOSE
Definition: winuser.h:2582
#define HIWORD(l)
Definition: typedefs.h:247
#define SC_NEXTWINDOW
Definition: winuser.h:2580
LONG_PTR LRESULT
Definition: windef.h:209
#define WM_SYSCOMMAND
Definition: winuser.h:1731
#define SC_VSCROLL
Definition: winuser.h:2583
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define SC_HSCROLL
Definition: winuser.h:2584

◆ DefWndTrackScrollBar()

static VOID DefWndTrackScrollBar ( HWND  Wnd,
WPARAM  wParam,
POINT  Pt 
)
static

Definition at line 118 of file defwnd.c.

119 {
120  INT ScrollBar;
121 
122  if (SC_HSCROLL == (wParam & 0xfff0))
123  {
124  if (HTHSCROLL != (wParam & 0x0f))
125  {
126  return;
127  }
128  ScrollBar = SB_HORZ;
129  }
130  else /* SC_VSCROLL */
131  {
132  if (HTVSCROLL != (wParam & 0x0f))
133  {
134  return;
135  }
136  ScrollBar = SB_VERT;
137  }
138  ScrollTrackScrollBar(Wnd, ScrollBar, Pt );
139 }
#define HTHSCROLL
Definition: winuser.h:2471
#define SB_VERT
Definition: winuser.h:553
#define SB_HORZ
Definition: winuser.h:552
int32_t INT
Definition: typedefs.h:58
WPARAM wParam
Definition: combotst.c:138
VOID FASTCALL ScrollTrackScrollBar(HWND Wnd, INT SBType, POINT Pt)
Definition: scrollbar.c:1156
#define HTVSCROLL
Definition: winuser.h:2472
#define SC_HSCROLL
Definition: winuser.h:2584

Referenced by DefWndHandleSysCommand().

◆ DoAppSwitch()

LRESULT WINAPI DoAppSwitch ( WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 584 of file appswitch.c.

585 {
586  HWND hwndActive;
587  MSG msg;
588 
589  // FIXME: Is loading timing OK?
591 
592  if (!CoolSwitch)
593  return 0;
594 
595  // Already in the loop.
596  if (switchdialog || Esc) return 0;
597 
598  if (lParam == VK_ESCAPE)
599  {
600  Esc = TRUE;
601 
602  windowCount = 0;
604 
605  if (windowCount < 2)
606  return 0;
607 
609 
610  hwndActive = GetActiveWindow();
611 
612  if (hwndActive == NULL)
613  {
614  Esc = FALSE;
615  return 0;
616  }
617  }
618 
619  // Capture current active window.
620  hwndActive = GetActiveWindow();
621  if (hwndActive)
622  SetCapture(hwndActive);
623 
624  switch (lParam)
625  {
626  case VK_TAB:
627  if (!GetDialogFont() || !ProcessHotKey())
628  goto Exit;
629  break;
630 
631  case VK_ESCAPE:
632  break;
633 
634  default:
635  goto Exit;
636  }
637 
638  if (!hwndActive)
639  goto Exit;
640 
641  // Main message loop:
642  while (1)
643  {
644  for (;;)
645  {
646  if (PeekMessageW( &msg, 0, 0, 0, PM_NOREMOVE ))
647  {
648  if (!CallMsgFilterW( &msg, MSGF_NEXTWINDOW )) break;
649  /* remove the message from the queue */
650  PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE );
651  }
652  else
653  WaitMessage();
654  }
655 
656  switch (msg.message)
657  {
658  case WM_KEYUP:
659  {
660  PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE );
661  if (msg.wParam == VK_MENU)
662  {
664  }
665  else if (msg.wParam == VK_RETURN)
666  {
668  }
669  else if (msg.wParam == VK_ESCAPE)
670  {
671  TRACE("DoAppSwitch VK_ESCAPE 2\n");
673  }
674  goto Exit; //break;
675  }
676 
677  case WM_SYSKEYDOWN:
678  {
679  PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE );
680  if (HIWORD(msg.lParam) & KF_ALTDOWN)
681  {
682  if ( msg.wParam == VK_TAB )
683  {
684  if (Esc) break;
685  if (GetKeyState(VK_SHIFT) < 0)
686  {
687  MoveLeft();
688  }
689  else
690  {
691  MoveRight();
692  }
693  }
694  else if ( msg.wParam == VK_ESCAPE )
695  {
696  if (!Esc) break;
698  }
699  else if ( msg.wParam == VK_LEFT )
700  {
701  MoveLeft();
702  }
703  else if ( msg.wParam == VK_RIGHT )
704  {
705  MoveRight();
706  }
707  else if ( msg.wParam == VK_UP )
708  {
709  MoveUp();
710  }
711  else if ( msg.wParam == VK_DOWN )
712  {
713  MoveDown();
714  }
715  }
716  break;
717  }
718 
719  case WM_LBUTTONUP:
720  PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE );
721  ProcessMouseMessage(msg.message, msg.lParam);
722  goto Exit;
723 
724  default:
725  if (PeekMessageW( &msg, 0, msg.message, msg.message, PM_REMOVE ))
726  {
729  }
730  break;
731  }
732  }
733 Exit:
734  ReleaseCapture();
736  if (Esc) DestroyAppWindows();
737  switchdialog = NULL;
738  selectedWindow = 0;
739  windowCount = 0;
740  Esc = FALSE;
741  return 0;
742 }
BOOL WINAPI TranslateMessage(_In_ const MSG *)
void CompleteSwitch(BOOL doSwitch)
Definition: appswitch.c:113
HWND switchdialog
Definition: appswitch.c:42
#define TRUE
Definition: types.h:120
BOOL WINAPI WaitMessage(void)
Definition: ntwrapper.h:350
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL Esc
Definition: appswitch.c:64
int windowCount
Definition: appswitch.c:53
#define VK_LEFT
Definition: winuser.h:2214
#define VK_TAB
Definition: winuser.h:2189
#define VK_DOWN
Definition: winuser.h:2217
#define VK_MENU
Definition: winuser.h:2194
#define VK_ESCAPE
Definition: winuser.h:2204
BOOL WINAPI DestroyWindow(_In_ HWND)
#define VK_RETURN
Definition: winuser.h:2191
static void MoveDown(void)
Definition: appswitch.c:556
#define PM_NOREMOVE
Definition: winuser.h:1185
#define MSGF_NEXTWINDOW
Definition: winuser.h:1169
BOOL WINAPI CallMsgFilterW(_In_ LPMSG, _In_ INT)
#define VK_UP
Definition: winuser.h:2215
#define FALSE
Definition: types.h:117
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
static void MoveUp(void)
Definition: appswitch.c:541
#define VK_SHIFT
Definition: winuser.h:2192
SHORT WINAPI GetKeyState(_In_ int)
static void MoveLeft(void)
Definition: appswitch.c:527
#define TRACE(s)
Definition: solgame.cpp:4
static void Exit(void)
Definition: sock.c:1331
#define WM_KEYUP
Definition: winuser.h:1706
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
DWORD GetDialogFont(VOID)
Definition: appswitch.c:418
SHORT WINAPI GetAsyncKeyState(_In_ int)
#define VK_RIGHT
Definition: winuser.h:2216
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL LoadCoolSwitchSettings(void)
Definition: appswitch.c:74
BOOL ProcessHotKey(VOID)
Definition: appswitch.c:455
#define WM_LBUTTONUP
Definition: winuser.h:1767
static void MoveRight(void)
Definition: appswitch.c:535
#define NULL
Definition: types.h:112
#define KF_ALTDOWN
Definition: winuser.h:2439
void ProcessMouseMessage(UINT message, LPARAM lParam)
Definition: appswitch.c:277
#define msg(x)
Definition: auth_time.c:54
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890
void RotateTasks(BOOL bShift)
Definition: appswitch.c:490
#define WM_SYSKEYDOWN
Definition: winuser.h:1709
#define HIWORD(l)
Definition: typedefs.h:247
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
#define PM_REMOVE
Definition: winuser.h:1186
BOOL CoolSwitch
Definition: appswitch.c:66
int selectedWindow
Definition: appswitch.c:44
LPARAM lParam
Definition: combotst.c:139
HWND WINAPI GetActiveWindow(void)
Definition: winpos.c:138
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
Definition: appswitch.c:267
VOID DestroyAppWindows(VOID)
Definition: appswitch.c:572

Referenced by DefWndHandleSysCommand().

◆ GetSysColor()

DWORD WINAPI DECLSPEC_HOTPATCH GetSysColor ( int  nIndex)

Definition at line 23 of file defwnd.c.

24 {
25  if(nIndex >= 0 && nIndex < NUM_SYSCOLORS)
26  {
27  return gpsi->argbSystem[nIndex];
28  }
29 
31  return 0;
32 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
PSERVERINFO gpsi
Definition: imm.c:17
#define SetLastError(x)
Definition: compat.h:611
#define NUM_SYSCOLORS
Definition: SetSysColors.c:10

Referenced by DefWndControlColor().

◆ GetSysColorBrush()

HBRUSH WINAPI DECLSPEC_HOTPATCH GetSysColorBrush ( int  nIndex)

Definition at line 40 of file defwnd.c.

41 {
42  if(nIndex >= 0 && nIndex < NUM_SYSCOLORS)
43  {
44  return gpsi->ahbrSystem[nIndex];
45  }
46 
47  return NULL;
48 }
PSERVERINFO gpsi
Definition: imm.c:17
#define NUM_SYSCOLORS
Definition: SetSysColors.c:10
#define NULL
Definition: types.h:112

Referenced by DefWndControlColor(), FillRect(), IntDrawRectEdge(), IntDrawState(), UITOOLS95_DFC_ButtonPush(), and UITOOLS_DrawCheckedRect().

◆ IntFindChildWindowToOwner()

HWND FASTCALL IntFindChildWindowToOwner ( HWND  hRoot,
HWND  hOwner 
)

Definition at line 83 of file defwnd.c.

84 {
85  HWND Ret;
86  PWND Child, OwnerWnd, Root, Owner;
87 
89  Owner = ValidateHwnd(hOwner);
90 
91  for( Child = Root->spwndChild ? DesktopPtrToUser(Root->spwndChild) : NULL;
92  Child;
93  Child = Child->spwndNext ? DesktopPtrToUser(Child->spwndNext) : NULL )
94  {
95  OwnerWnd = Child->spwndOwner ? DesktopPtrToUser(Child->spwndOwner) : NULL;
96  if(!OwnerWnd)
97  continue;
98 
99  if (!(Child->style & WS_POPUP) || !(Child->style & WS_VISIBLE))
100  continue;
101 
102  if(OwnerWnd == Owner)
103  {
104  Ret = Child->head.h;
105  return Ret;
106  }
107  }
108  ERR("IDCWTO Nothing found\n");
109  return NULL;
110 }
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
Definition: wdffdo.h:533
static HTREEITEM hRoot
Definition: treeview.c:381
struct _WND * spwndOwner
Definition: ntuser.h:694
root entry for file system trees
Definition: entries.h:148
Definition: cmtypes.h:247
#define ERR(fmt,...)
Definition: debug.h:110
Definition: ntuser.h:672
#define WS_POPUP
Definition: pedump.c:616
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
Definition: rtlfuncs.h:1583
#define NULL
Definition: types.h:112
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:278
#define WS_VISIBLE
Definition: pedump.c:620
#define ValidateHwnd(hwnd)
Definition: precomp.h:85

◆ RealDefWindowProcA()

LRESULT WINAPI RealDefWindowProcA ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 813 of file defwnd.c.

817 {
818  LRESULT Result = 0;
819  PWND Wnd;
820 
821  Wnd = ValidateHwnd(hWnd);
822 
823  if ( !Wnd &&
824  Msg != WM_CTLCOLORMSGBOX &&
825  Msg != WM_CTLCOLORBTN &&
826  Msg != WM_CTLCOLORDLG &&
828  return 0;
829 
831  switch (Msg)
832  {
833  case WM_NCCREATE:
834  {
835  if ( Wnd &&
836  Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
837  {
838  if (!Wnd->pSBInfo)
839  {
840  SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
841  SetScrollInfo( hWnd, SB_HORZ, &si, FALSE );
842  SetScrollInfo( hWnd, SB_VERT, &si, FALSE );
843  }
844  }
845 
846  if (lParam)
847  {
849  /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
850  * may have child window IDs instead of window name */
851  if (HIWORD(cs->lpszName))
852  {
853  DefSetText(hWnd, (PCWSTR)cs->lpszName, TRUE);
854  }
855  Result = 1;
856  }
857  break;
858  }
859 
860  case WM_GETTEXTLENGTH:
861  {
862  PWSTR buf;
863  ULONG len;
864 
865  if (Wnd != NULL && Wnd->strName.Length != 0)
866  {
868  if (buf != NULL &&
870  buf,
871  Wnd->strName.Length)))
872  {
873  Result = (LRESULT) len;
874  }
875  }
876  else Result = 0L;
877 
878  break;
879  }
880 
881  case WM_GETTEXT:
882  {
883  PWSTR buf = NULL;
884  PSTR outbuf = (PSTR)lParam;
885  SIZE_T copy;
886 
887  if (Wnd != NULL && wParam != 0)
888  {
889  if (Wnd->strName.Buffer != NULL)
891  else
892  outbuf[0] = L'\0';
893 
894  if (buf != NULL)
895  {
896  if (Wnd->strName.Length != 0)
897  {
898  copy = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
900  0,
901  buf,
902  copy,
903  outbuf,
904  wParam,
905  NULL,
906  NULL);
907  outbuf[Result] = '\0';
908  }
909  else
910  outbuf[0] = '\0';
911  }
912  }
913  break;
914  }
915 
916  case WM_SETTEXT:
917  {
919 
921  {
923  IntNotifyWinEvent(EVENT_OBJECT_NAMECHANGE, hWnd, OBJID_WINDOW, CHILDID_SELF, 0);
924  }
925  Result = 1;
926  break;
927  }
928 
929  case WM_IME_KEYDOWN:
930  {
932  break;
933  }
934 
935  case WM_IME_KEYUP:
936  {
938  break;
939  }
940 
941  case WM_IME_CHAR:
942  {
943  if (HIBYTE(wParam))
946  break;
947  }
948 
949  case WM_IME_COMPOSITION:
950  if (lParam & GCS_RESULTSTR)
951  {
952  LONG size, i;
953  unsigned char lead = 0;
954  char *buf = NULL;
955  HIMC himc = IMM_FN(ImmGetContext)( hWnd );
956 
957  if (himc)
958  {
959  if ((size = IMM_FN(ImmGetCompositionStringA)( himc, GCS_RESULTSTR, NULL, 0 )))
960  {
961  if (!(buf = HeapAlloc( GetProcessHeap(), 0, size ))) size = 0;
963  }
964  IMM_FN(ImmReleaseContext)( hWnd, himc );
965 
966  for (i = 0; i < size; i++)
967  {
968  unsigned char c = buf[i];
969  if (!lead)
970  {
971  if (IsDBCSLeadByte( c ))
972  lead = c;
973  else
974  SendMessageA( hWnd, WM_IME_CHAR, c, 1 );
975  }
976  else
977  {
978  SendMessageA( hWnd, WM_IME_CHAR, MAKEWORD(c, lead), 1 );
979  lead = 0;
980  }
981  }
982  HeapFree( GetProcessHeap(), 0, buf );
983  }
984  }
985  /* fall through */
986  case WM_IME_STARTCOMPOSITION:
987  case WM_IME_ENDCOMPOSITION:
988  case WM_IME_SELECT:
989  case WM_IME_NOTIFY:
990  case WM_IME_CONTROL:
991  case WM_IME_SETCONTEXT:
992 NormalImeMsgHandling:
993  {
994  HWND hwndIME;
995 
996  if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
997  {
998  TRACE("This thread's IME is disabled\n");
999  break;
1000  }
1001 
1002  hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
1003  if (!hwndIME)
1004  {
1005  ERR("hwndIME was NULL\n");
1006  break;
1007  }
1008 
1009  if (hwndIME == hWnd)
1010  {
1011  ImeWndProc_common(hwndIME, Msg, wParam, lParam, FALSE);
1012  break;
1013  }
1014 
1015  Result = SendMessageA(hwndIME, Msg, wParam, lParam);
1016  break;
1017  }
1018 
1019  case WM_IME_SYSTEM:
1020  {
1021  if (wParam == 4)
1022  break;
1023 
1024  goto NormalImeMsgHandling;
1025  }
1026 
1027  default:
1029  }
1030 
1032  return Result;
1033 }
#define WM_GETTEXTLENGTH
Definition: winuser.h:1609
#define WM_IME_KEYUP
Definition: winuser.h:1829
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define WM_IME_NOTIFY
Definition: winuser.h:1820
LONG WINAPI ImmGetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
Definition: compstr.c:850
#define WM_IME_KEYDOWN
Definition: winuser.h:1828
#define WM_CHAR
Definition: winuser.h:1707
#define WideCharToMultiByte
Definition: compat.h:111
#define WM_IME_CHAR
Definition: winuser.h:1824
#define LOBYTE(W)
Definition: jmemdos.c:487
#define MAKEWORD(a, b)
Definition: typedefs.h:248
#define SB_VERT
Definition: winuser.h:553
#define TRUE
Definition: types.h:120
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CTLCOLORDLG
Definition: winuser.h:1760
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
uint16_t * PWSTR
Definition: typedefs.h:56
#define CP_ACP
Definition: compat.h:109
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1762
#define WM_GETTEXT
Definition: winuser.h:1608
#define SB_HORZ
Definition: winuser.h:552
VOID FASTCALL IntNotifyWinEvent(DWORD Event, PWND pWnd, LONG idObject, LONG idChild, DWORD flags)
Definition: event.c:179
#define OBJID_WINDOW
Definition: winable.h:15
HWND hWnd
Definition: settings.c:17
#define HIBYTE(W)
Definition: jmemdos.c:486
#define WM_IME_SELECT
Definition: winuser.h:1823
PSBINFO pSBInfo
Definition: ntuser.h:705
#define GetWin32ClientInfo()
Definition: ntuser.h:335
#define GetWindowLongPtrW
Definition: winuser.h:4819
#define WM_NCCREATE
Definition: winuser.h:1673
void SPY_ExitMessage(INT iFlag, HWND hwnd, UINT msg, LRESULT lReturn, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2648
WPARAM wParam
Definition: combotst.c:138
#define SPY_DEFWNDPROC
Definition: user32p.h:69
struct tagCREATESTRUCTA * LPCREATESTRUCTA
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
uint32_t cs
Definition: isohybrid.c:75
#define L(x)
Definition: ntvdm.h:50
#define WM_CTLCOLORBTN
Definition: winuser.h:1759
#define FALSE
Definition: types.h:117
long LONG
Definition: pedump.c:60
#define CHILDID_SELF
Definition: winable.h:14
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
BOOL WINAPI IsDBCSLeadByte(BYTE TestByte)
Definition: nls.c:2270
#define WM_KEYDOWN
Definition: winuser.h:1705
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1756
#define WM_IME_SYSTEM
Definition: undocuser.h:59
DWORD HIMC
Definition: dimm.idl:75
#define WM_SETTEXT
Definition: winuser.h:1607
LARGE_UNICODE_STRING strName
Definition: ntuser.h:715
#define TIF_DISABLEIME
Definition: ntuser.h:279
#define WS_CAPTION
Definition: pedump.c:624
BOOL FASTCALL DefSetText(HWND hWnd, PCWSTR String, BOOL Ansi)
Definition: defwnd.c:65
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define WM_IME_SETCONTEXT
Definition: winuser.h:1819
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1002
#define WM_IME_CONTROL
Definition: winuser.h:1821
const GLubyte * c
Definition: glext.h:8905
#define WM_KEYUP
Definition: winuser.h:1706
LRESULT WINAPI ImeWndProc_common(HWND, UINT, WPARAM, LPARAM, BOOL)
Definition: imm.c:935
void SPY_EnterMessage(INT iFlag, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2593
#define WS_HSCROLL
Definition: pedump.c:628
GLenum GLsizei len
Definition: glext.h:6722
#define LRESULT
Definition: ole.h:14
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
Definition: imm.c:1043
#define ERR(fmt,...)
Definition: debug.h:110
#define GWL_STYLE
Definition: winuser.h:846
Definition: ntuser.h:672
ULONG_PTR SIZE_T
Definition: typedefs.h:80
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
Definition: ime.c:825
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteSize(_Out_ PULONG MbSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
Definition: nlsboot.c:145
signed char * PSTR
Definition: retypes.h:7
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
Definition: copy.c:51
#define min(a, b)
Definition: monoChain.cc:55
#define SPY_RESULT_DEFWND
Definition: user32p.h:72
#define NULL
Definition: types.h:112
BOOL UserPaintCaption(PWND pWnd, INT Flags)
Definition: defwnd.c:396
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:278
#define WS_VSCROLL
Definition: pedump.c:627
LRESULT WINAPI User32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
Definition: defwnd.c:317
#define HIWORD(l)
Definition: typedefs.h:247
unsigned int ULONG
Definition: retypes.h:1
#define GCS_RESULTSTR
Definition: imm.h:374
struct @1592 Msg[]
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
#define HeapFree(x, y, z)
Definition: compat.h:594
#define DC_TEXT
Definition: winuser.h:430
#define SIF_ALL
Definition: winuser.h:1222
#define ValidateHwnd(hwnd)
Definition: precomp.h:85
#define IMM_FN(name)
Definition: user32p.h:56
DWORD style
Definition: ntuser.h:685

Referenced by DefWindowProcA(), and ResetUserApiHook().

◆ RealDefWindowProcW()

LRESULT WINAPI RealDefWindowProcW ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1037 of file defwnd.c.

1041 {
1042  LRESULT Result = 0;
1043  PWND Wnd;
1044 
1045  Wnd = ValidateHwnd(hWnd);
1046 
1047  if ( !Wnd &&
1048  Msg != WM_CTLCOLORMSGBOX &&
1049  Msg != WM_CTLCOLORBTN &&
1050  Msg != WM_CTLCOLORDLG &&
1051  Msg != WM_CTLCOLORSTATIC )
1052  return 0;
1053 
1055  switch (Msg)
1056  {
1057  case WM_NCCREATE:
1058  {
1059  if ( Wnd &&
1060  Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
1061  {
1062  if (!Wnd->pSBInfo)
1063  {
1064  SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
1065  if (Wnd->style & WS_HSCROLL)
1066  SetScrollInfo( hWnd, SB_HORZ, &si, FALSE );
1067  if (Wnd->style & WS_VSCROLL)
1068  SetScrollInfo( hWnd, SB_VERT, &si, FALSE );
1069  }
1070  }
1071 
1072  if (lParam)
1073  {
1075  /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
1076  * may have child window IDs instead of window name */
1077  if (HIWORD(cs->lpszName))
1078  {
1079  DefSetText(hWnd, cs->lpszName, FALSE);
1080  }
1081  Result = 1;
1082  }
1083  break;
1084  }
1085 
1086  case WM_GETTEXTLENGTH:
1087  {
1088  PWSTR buf;
1089  ULONG len;
1090 
1091  if (Wnd != NULL && Wnd->strName.Length != 0)
1092  {
1094  if (buf != NULL &&
1096  buf,
1097  Wnd->strName.Length)))
1098  {
1099  Result = (LRESULT) (Wnd->strName.Length / sizeof(WCHAR));
1100  }
1101  }
1102  else Result = 0L;
1103 
1104  break;
1105  }
1106 
1107  case WM_GETTEXT:
1108  {
1109  PWSTR buf = NULL;
1110  PWSTR outbuf = (PWSTR)lParam;
1111 
1112  if (Wnd != NULL && wParam != 0)
1113  {
1114  if (Wnd->strName.Buffer != NULL)
1116  else
1117  outbuf[0] = L'\0';
1118 
1119  if (buf != NULL)
1120  {
1121  if (Wnd->strName.Length != 0)
1122  {
1123  Result = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
1124  RtlCopyMemory(outbuf,
1125  buf,
1126  Result * sizeof(WCHAR));
1127  outbuf[Result] = L'\0';
1128  }
1129  else
1130  outbuf[0] = L'\0';
1131  }
1132  }
1133  break;
1134  }
1135 
1136  case WM_SETTEXT:
1137  {
1139 
1141  UserPaintCaption(Wnd, DC_TEXT);
1142  Result = 1;
1143  break;
1144  }
1145 
1146  case WM_IME_CHAR:
1147  {
1149  Result = 0;
1150  break;
1151  }
1152 
1153  case WM_IME_KEYDOWN:
1154  {
1156  break;
1157  }
1158 
1159  case WM_IME_KEYUP:
1160  {
1162  break;
1163  }
1164 
1165  case WM_IME_COMPOSITION:
1166  if (lParam & GCS_RESULTSTR)
1167  {
1168  LONG size, i;
1169  WCHAR *buf = NULL;
1170  HIMC himc = IMM_FN(ImmGetContext)( hWnd );
1171 
1172  if (himc)
1173  {
1174  if ((size = IMM_FN(ImmGetCompositionStringW)( himc, GCS_RESULTSTR, NULL, 0 )))
1175  {
1176  if (!(buf = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ))) size = 0;
1177  else size = IMM_FN(ImmGetCompositionStringW)( himc, GCS_RESULTSTR, buf, size * sizeof(WCHAR) );
1178  }
1179  IMM_FN(ImmReleaseContext)( hWnd, himc );
1180 
1181  for (i = 0; i < size / sizeof(WCHAR); i++)
1182  SendMessageW( hWnd, WM_IME_CHAR, buf[i], 1 );
1183  HeapFree( GetProcessHeap(), 0, buf );
1184  }
1185  }
1186  /* fall through */
1187  case WM_IME_STARTCOMPOSITION:
1188  case WM_IME_ENDCOMPOSITION:
1189  case WM_IME_SELECT:
1190  case WM_IME_NOTIFY:
1191  case WM_IME_CONTROL:
1192  case WM_IME_SETCONTEXT:
1193 NormalImeMsgHandling:
1194  {
1195  HWND hwndIME;
1196 
1197  if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
1198  {
1199  TRACE("This thread's IME is disabled\n");
1200  break;
1201  }
1202 
1203  hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
1204  if (!hwndIME)
1205  {
1206  ERR("hwndIME was NULL\n");
1207  break;
1208  }
1209 
1210  if (hwndIME == hWnd)
1211  {
1212  ImeWndProc_common(hwndIME, Msg, wParam, lParam, TRUE);
1213  break;
1214  }
1215 
1216  Result = SendMessageW(hwndIME, Msg, wParam, lParam);
1217  break;
1218  }
1219 
1220  case WM_IME_SYSTEM:
1221  {
1222  if (wParam == 4)
1223  break;
1224 
1225  goto NormalImeMsgHandling;
1226  }
1227 
1228  default:
1230  }
1232 
1233  return Result;
1234 }
#define WM_GETTEXTLENGTH
Definition: winuser.h:1609
#define WM_IME_KEYUP
Definition: winuser.h:1829
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define WM_IME_NOTIFY
Definition: winuser.h:1820
#define WM_IME_KEYDOWN
Definition: winuser.h:1828
#define WM_CHAR
Definition: winuser.h:1707
#define WM_IME_CHAR
Definition: winuser.h:1824
#define SB_VERT
Definition: winuser.h:553
#define TRUE
Definition: types.h:120
#define WM_CTLCOLORDLG
Definition: winuser.h:1760
uint16_t * PWSTR
Definition: typedefs.h:56
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1762
#define WM_GETTEXT
Definition: winuser.h:1608
#define SB_HORZ
Definition: winuser.h:552
HWND hWnd
Definition: settings.c:17
#define WM_IME_SELECT
Definition: winuser.h:1823
PSBINFO pSBInfo
Definition: ntuser.h:705
#define GetWin32ClientInfo()
Definition: ntuser.h:335
#define GetWindowLongPtrW
Definition: winuser.h:4819
#define WM_NCCREATE
Definition: winuser.h:1673
void SPY_ExitMessage(INT iFlag, HWND hwnd, UINT msg, LRESULT lReturn, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2648
WPARAM wParam
Definition: combotst.c:138
#define SPY_DEFWNDPROC
Definition: user32p.h:69
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
uint32_t cs
Definition: isohybrid.c:75
#define L(x)
Definition: ntvdm.h:50
#define WM_CTLCOLORBTN
Definition: winuser.h:1759
#define FALSE
Definition: types.h:117
long LONG
Definition: pedump.c:60
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
#define WM_KEYDOWN
Definition: winuser.h:1705
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1756
#define WM_IME_SYSTEM
Definition: undocuser.h:59
DWORD HIMC
Definition: dimm.idl:75
#define WM_SETTEXT
Definition: winuser.h:1607
LARGE_UNICODE_STRING strName
Definition: ntuser.h:715
#define TIF_DISABLEIME
Definition: ntuser.h:279
#define WS_CAPTION
Definition: pedump.c:624
BOOL FASTCALL DefSetText(HWND hWnd, PCWSTR String, BOOL Ansi)
Definition: defwnd.c:65
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
Definition: compstr.c:892
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define WM_IME_SETCONTEXT
Definition: winuser.h:1819
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1002
#define WM_IME_CONTROL
Definition: winuser.h:1821
#define WM_KEYUP
Definition: winuser.h:1706
LRESULT WINAPI ImeWndProc_common(HWND, UINT, WPARAM, LPARAM, BOOL)
Definition: imm.c:935
void SPY_EnterMessage(INT iFlag, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2593
#define WS_HSCROLL
Definition: pedump.c:628
GLenum GLsizei len
Definition: glext.h:6722
#define LRESULT
Definition: ole.h:14
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
Definition: imm.c:1043
#define ERR(fmt,...)
Definition: debug.h:110
#define GWL_STYLE
Definition: winuser.h:846
Definition: ntuser.h:672
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
Definition: ime.c:825
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteSize(_Out_ PULONG MbSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
Definition: nlsboot.c:145
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagCREATESTRUCTW * LPCREATESTRUCTW
#define min(a, b)
Definition: monoChain.cc:55
#define SPY_RESULT_DEFWND
Definition: user32p.h:72
#define NULL
Definition: types.h:112
BOOL UserPaintCaption(PWND pWnd, INT Flags)
Definition: defwnd.c:396
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:278
#define WS_VSCROLL
Definition: pedump.c:627
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI User32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
Definition: defwnd.c:317
#define HIWORD(l)
Definition: typedefs.h:247
unsigned int ULONG
Definition: retypes.h:1
#define GCS_RESULTSTR
Definition: imm.h:374
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
struct @1592 Msg[]
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: combotst.c:139
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
#define HeapFree(x, y, z)
Definition: compat.h:594
#define DC_TEXT
Definition: winuser.h:430
#define SIF_ALL
Definition: winuser.h:1222
#define ValidateHwnd(hwnd)
Definition: precomp.h:85
#define IMM_FN(name)
Definition: user32p.h:56
DWORD style
Definition: ntuser.h:685

Referenced by DefWindowProcW(), and ResetUserApiHook().

◆ SetSysColors()

BOOL WINAPI SetSysColors ( int  cElements,
CONST INT lpaElements,
CONST COLORREF lpaRgbValues 
)

Definition at line 55 of file defwnd.c.

59 {
60  return NtUserSetSysColors(cElements, lpaElements, lpaRgbValues, 0);
61 }
BOOL NTAPI NtUserSetSysColors(int cElements, IN CONST INT *lpaElements, IN CONST COLORREF *lpaRgbValues, FLONG Flags)
Definition: ntstubs.c:288

◆ User32DefWindowProc()

LRESULT WINAPI User32DefWindowProc ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam,
BOOL  bUnicode 
)

Definition at line 317 of file defwnd.c.

322 {
323  PWND pWnd = NULL;
324  if (hWnd)
325  {
326  pWnd = ValidateHwnd(hWnd);
327  if (!pWnd) return 0;
328  }
329 
330  switch (Msg)
331  {
332  case WM_DEVICECHANGE:
333  return TRUE;
334 
335  case WM_POPUPSYSTEMMENU:
336  {
337  /* This is an undocumented message used by the windows taskbar to
338  display the system menu of windows that belong to other processes. */
339  HMENU menu = GetSystemMenu(hWnd, FALSE);
340  ERR("WM_POPUPSYSTEMMENU\n");
341  if (menu)
342  {
345  LOWORD(lParam), HIWORD(lParam), 0, hWnd, NULL);
346  }
347  return 0;
348  }
349 
350  case WM_RBUTTONUP:
351  {
352  POINT Pt;
353  Pt.x = GET_X_LPARAM(lParam);
354  Pt.y = GET_Y_LPARAM(lParam);
355  ClientToScreen(hWnd, &Pt);
356  lParam = MAKELPARAM(Pt.x, Pt.y);
357  if (bUnicode)
358  {
360  }
361  else
362  {
364  }
365  break;
366  }
367 
368  case WM_NCRBUTTONUP:
369  /*
370  * FIXME : we must NOT send WM_CONTEXTMENU on a WM_NCRBUTTONUP (checked
371  * in Windows), but what _should_ we do? According to MSDN :
372  * "If it is appropriate to do so, the system sends the WM_SYSCOMMAND
373  * message to the window". When is it appropriate?
374  */
375  ERR("WM_NCRBUTTONUP\n");
376  break;
377 
378  case WM_XBUTTONUP:
379  case WM_NCXBUTTONUP:
380  if (HIWORD(wParam) == XBUTTON1 || HIWORD(wParam) == XBUTTON2)
381  {
383  MAKELPARAM(LOWORD(wParam), FAPPCOMMAND_MOUSE | HIWORD(wParam)));
384  }
385  break;
386 
387  case WM_CONTEXTMENU:
388  {
390  {
391  if (bUnicode)
392  {
394  }
395  else
396  {
398  }
399  }
400  else
401  {
402  goto GoSS;
403  }
404  break;
405  }
406 
407  case WM_CLOSE:
409  return (0);
410 
411  case WM_MOUSEACTIVATE:
413  {
415  if (Ret) return (Ret);
416  }
418 
419  case WM_ACTIVATE:
420  /* The default action in Windows is to set the keyboard focus to
421  * the window, if it's being activated and not minimized */
422  if (LOWORD(wParam) != WA_INACTIVE &&
424  {
425  //ERR("WM_ACTIVATE %p\n",hWnd);
426  SetFocus(hWnd);
427  }
428  break;
429 
430  case WM_MOUSEWHEEL:
433  break;
434 
435  case WM_ERASEBKGND:
436  case WM_ICONERASEBKGND:
437  {
438  RECT Rect;
439  HBRUSH hBrush = (HBRUSH)GetClassLongPtrW(hWnd, GCL_HBRBACKGROUND);
440 
441  if (NULL == hBrush)
442  {
443  return 0;
444  }
446  {
447  /* can't use GetClipBox with a parent DC or we fill the whole parent */
449  DPtoLP((HDC)wParam, (LPPOINT)&Rect, 2);
450  }
451  else
452  {
454  }
455  FillRect((HDC)wParam, &Rect, hBrush);
456  return (1);
457  }
458 
459  case WM_CTLCOLORMSGBOX:
460  case WM_CTLCOLOREDIT:
461  case WM_CTLCOLORLISTBOX:
462  case WM_CTLCOLORBTN:
463  case WM_CTLCOLORDLG:
464  case WM_CTLCOLORSTATIC:
467 
468  case WM_CTLCOLOR:
470 
471  case WM_SYSCOMMAND:
473 
474  case WM_VKEYTOITEM:
475  case WM_CHARTOITEM:
476  return (-1);
477 /*
478  case WM_DROPOBJECT:
479  return DRAG_FILE;
480 */
481  case WM_QUERYDROPOBJECT:
482  {
484  {
485  return(1);
486  }
487  break;
488  }
489 
490  case WM_QUERYDRAGICON:
491  {
492  UINT Len;
493  HICON hIcon;
494 
496  if (hIcon)
497  {
498  return ((LRESULT)hIcon);
499  }
500  for (Len = 1; Len < 64; Len++)
501  {
503  {
504  return((LRESULT)hIcon);
505  }
506  }
507  return ((LRESULT)LoadIconW(0, IDI_APPLICATION));
508  }
509 
510  case WM_ISACTIVEICON:
511  {
512  BOOL isai;
513  isai = (pWnd->state & WNDS_ACTIVEFRAME) != 0;
514  return isai;
515  }
516 
517  case WM_NOTIFYFORMAT:
518  {
519  if (lParam == NF_QUERY)
521  break;
522  }
523 
524  case WM_GETICON:
525  {
526  return DefWndGetIcon(pWnd, wParam, lParam);
527  }
528 
529  case WM_HELP:
530  {
531  if (bUnicode)
532  {
534  }
535  else
536  {
538  }
539  break;
540  }
541 
542  case WM_QUERYOPEN:
543  case WM_QUERYENDSESSION:
544  {
545  return (1);
546  }
547 
548  case WM_INPUTLANGCHANGEREQUEST:
549  {
550  HKL NewHkl;
551 
552  if(wParam & INPUTLANGCHANGE_BACKWARD
553  && wParam & INPUTLANGCHANGE_FORWARD)
554  {
555  return FALSE;
556  }
557 
558  //FIXME: What to do with INPUTLANGCHANGE_SYSCHARSET ?
559 
560  if(wParam & INPUTLANGCHANGE_BACKWARD) NewHkl = (HKL) HKL_PREV;
561  else if(wParam & INPUTLANGCHANGE_FORWARD) NewHkl = (HKL) HKL_NEXT;
562  else NewHkl = (HKL) lParam;
563 
564  NtUserActivateKeyboardLayout(NewHkl, 0);
565 
566  return TRUE;
567  }
568 
569  case WM_INPUTLANGCHANGE:
570  {
571  int count = 0;
572  HWND *win_array = WIN_ListChildren( hWnd );
573 
574  if (!win_array)
575  break;
576  while (win_array[count])
577  SendMessageW( win_array[count++], WM_INPUTLANGCHANGE, wParam, lParam);
578  HeapFree(GetProcessHeap(),0,win_array);
579  break;
580  }
581 
582  case WM_QUERYUISTATE:
583  {
584  LRESULT Ret = 0;
585  PWND Wnd = ValidateHwnd(hWnd);
586  if (Wnd != NULL)
587  {
588  if (Wnd->HideFocus)
589  Ret |= UISF_HIDEFOCUS;
590  if (Wnd->HideAccel)
591  Ret |= UISF_HIDEACCEL;
592  }
593  return Ret;
594  }
595 
596  case WM_CHANGEUISTATE:
597  {
598  BOOL AlwaysShowCues = FALSE;
600  WORD Flags = HIWORD(wParam);
601  PWND Wnd;
602 
603  SystemParametersInfoW(SPI_GETKEYBOARDCUES, 0, &AlwaysShowCues, 0);
604  if (AlwaysShowCues)
605  break;
606 
607  Wnd= ValidateHwnd(hWnd);
608  if (!Wnd || lParam != 0)
609  break;
610 
611  if (Flags & ~(UISF_HIDEFOCUS | UISF_HIDEACCEL | UISF_ACTIVE))
612  break;
613 
614  if (Flags & UISF_ACTIVE)
615  {
616  WARN("WM_CHANGEUISTATE does not yet support UISF_ACTIVE!\n");
617  }
618 
619  if (Action == UIS_INITIALIZE)
620  {
622  if (Desk == NULL)
623  break;
624 
625  Action = Desk->LastInputWasKbd ? UIS_CLEAR : UIS_SET;
626  Flags = UISF_HIDEFOCUS | UISF_HIDEACCEL;
627 
628  /* We need to update wParam in case we need to send out messages */
630  }
631 
632  switch (Action)
633  {
634  case UIS_SET:
635  /* See if we actually need to change something */
636  if ((Flags & UISF_HIDEFOCUS) && !Wnd->HideFocus)
637  break;
638  if ((Flags & UISF_HIDEACCEL) && !Wnd->HideAccel)
639  break;
640 
641  /* Don't need to do anything... */
642  return 0;
643 
644  case UIS_CLEAR:
645  /* See if we actually need to change something */
646  if ((Flags & UISF_HIDEFOCUS) && Wnd->HideFocus)
647  break;
648  if ((Flags & UISF_HIDEACCEL) && Wnd->HideAccel)
649  break;
650 
651  /* Don't need to do anything... */
652  return 0;
653 
654  default:
655  WARN("WM_CHANGEUISTATE: Unsupported Action 0x%x\n", Action);
656  break;
657  }
658 
659  if ((Wnd->style & WS_CHILD) && Wnd->spwndParent != NULL)
660  {
661  /* We're a child window and we need to pass this message down until
662  we reach the root */
664  }
665  else
666  {
667  /* We're a top level window, we need to change the UI state */
668  Msg = WM_UPDATEUISTATE;
669  }
670 
671  if (bUnicode)
672  return SendMessageW(hWnd, Msg, wParam, lParam);
673  else
674  return SendMessageA(hWnd, Msg, wParam, lParam);
675  }
676 
677  case WM_UPDATEUISTATE:
678  {
679  BOOL Change = TRUE;
680  BOOL AlwaysShowCues = FALSE;
682  WORD Flags = HIWORD(wParam);
683  PWND Wnd;
684 
685  SystemParametersInfoW(SPI_GETKEYBOARDCUES, 0, &AlwaysShowCues, 0);
686  if (AlwaysShowCues)
687  break;
688 
689  Wnd = ValidateHwnd(hWnd);
690  if (!Wnd || lParam != 0)
691  break;
692 
693  if (Flags & ~(UISF_HIDEFOCUS | UISF_HIDEACCEL | UISF_ACTIVE))
694  break;
695 
696  if (Flags & UISF_ACTIVE)
697  {
698  WARN("WM_UPDATEUISTATE does not yet support UISF_ACTIVE!\n");
699  }
700 
701  if (Action == UIS_INITIALIZE)
702  {
704  if (Desk == NULL)
705  break;
706 
707  Action = Desk->LastInputWasKbd ? UIS_CLEAR : UIS_SET;
708  Flags = UISF_HIDEFOCUS | UISF_HIDEACCEL;
709 
710  /* We need to update wParam for broadcasting the update */
712  }
713 
714  switch (Action)
715  {
716  case UIS_SET:
717  /* See if we actually need to change something */
718  if ((Flags & UISF_HIDEFOCUS) && !Wnd->HideFocus)
719  break;
720  if ((Flags & UISF_HIDEACCEL) && !Wnd->HideAccel)
721  break;
722 
723  /* Don't need to do anything... */
724  Change = FALSE;
725  break;
726 
727  case UIS_CLEAR:
728  /* See if we actually need to change something */
729  if ((Flags & UISF_HIDEFOCUS) && Wnd->HideFocus)
730  break;
731  if ((Flags & UISF_HIDEACCEL) && Wnd->HideAccel)
732  break;
733 
734  /* Don't need to do anything... */
735  Change = FALSE;
736  break;
737 
738  default:
739  WARN("WM_UPDATEUISTATE: Unsupported Action 0x%x\n", Action);
740  return 0;
741  }
742 
743  /* Pack the information and call win32k */
744  if (Change)
745  {
746  if (!NtUserxUpdateUiState(hWnd, Flags | ((DWORD)Action << 3)))
747  break;
748  }
749 
750  /* Always broadcast the update to all children */
753  (LPARAM)wParam);
754 
755  break;
756  }
757 
758  case WM_COPYGLOBALDATA:
759  {
760  TRACE("WM_COPYGLOBALDATA hGlobal %p Size %d Flags 0x%x\n",lParam,wParam,GlobalFlags((HGLOBAL)lParam));
761  return lParam;
762  }
763 
764 /* Move to Win32k !*/
765  case WM_SHOWWINDOW:
766  if (!lParam) break; // Call when it is necessary.
767  case WM_LBUTTONDOWN:
768  case WM_RBUTTONDOWN:
769  case WM_MBUTTONDOWN:
770  case WM_NCLBUTTONDOWN:
771  case WM_NCRBUTTONDOWN:
772  case WM_LBUTTONDBLCLK:
773  case WM_NCLBUTTONDBLCLK:
774  case WM_KEYF1:
775  case WM_KEYUP:
776  case WM_SYSKEYUP:
777  case WM_KEYDOWN:
778  case WM_SYSKEYDOWN:
779  case WM_SYSCHAR:
780  case WM_CANCELMODE:
781  case WM_PAINTICON:
782  case WM_PAINT:
783  case WM_PRINT:
784  case WM_SETICON:
785  case WM_SYSCOLORCHANGE:
786  case WM_NCUAHDRAWCAPTION:
787  case WM_NCUAHDRAWFRAME:
788  case WM_NCPAINT:
789  case WM_NCACTIVATE:
790  case WM_NCCALCSIZE:
791  case WM_NCHITTEST:
792  case WM_SYNCPAINT:
793  case WM_SETREDRAW:
794  case WM_CLIENTSHUTDOWN:
795  case WM_GETHOTKEY:
796  case WM_SETHOTKEY:
798  case WM_WINDOWPOSCHANGED:
799  case WM_APPCOMMAND:
800  case WM_SETCURSOR:
801 GoSS:
802  {
803  LRESULT lResult;
804  NtUserMessageCall( hWnd, Msg, wParam, lParam, (ULONG_PTR)&lResult, FNID_DEFWINDOWPROC, !bUnicode);
805  return lResult;
806  }
807  }
808  return 0;
809 }
#define WM_NCLBUTTONDOWN
Definition: winuser.h:1682
#define WM_SYNCPAINT
Definition: winuser.h:1680
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
#define WM_SETHOTKEY
Definition: winuser.h:1642
#define WM_PAINTICON
Definition: winuser.h:1631
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1616
static HICON
Definition: imagelist.c:84
#define MAKEWPARAM(l, h)
Definition: winuser.h:3999
UINT HideFocus
Definition: ntuser.h:737
long y
Definition: polytest.cpp:48
#define WM_CONTEXTMENU
Definition: richedit.h:64
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
#define WM_LBUTTONDOWN
Definition: winuser.h:1766
long x
Definition: polytest.cpp:48
#define TPM_SYSTEM_MENU
Definition: undocuser.h:72
#define TRUE
Definition: types.h:120
#define WM_CTLCOLORDLG
Definition: winuser.h:1760
#define WM_GETHOTKEY
Definition: winuser.h:1643
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CLIENTSHUTDOWN
Definition: undocuser.h:35
#define WM_MOUSEWHEEL
Definition: treelist.c:96
#define WM_NCCALCSIZE
Definition: winuser.h:1675
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1762
UINT NTAPI GlobalFlags(HGLOBAL hMem)
Definition: heapmem.c:520
LRESULT FASTCALL DefWndHandleSysCommand(PWND pWnd, WPARAM wParam, LPARAM lParam)
Definition: defwnd.c:124
#define WARN(fmt,...)
Definition: debug.h:112
#define MAKELPARAM(l, h)
Definition: winuser.h:3998
#define WM_QUERYENDSESSION
Definition: winuser.h:1612
static HDC
Definition: imagelist.c:92
#define WM_SETREDRAW
Definition: winuser.h:1606
HWND hWnd
Definition: settings.c:17
#define GET_X_LPARAM(lp)
Definition: windowsx.h:274
#define FNID_DEFWINDOWPROC
Definition: ntuser.h:842
#define MA_ACTIVATE
Definition: winuser.h:2491
#define WM_SHOWWINDOW
Definition: winuser.h:1618
#define GWL_EXSTYLE
Definition: winuser.h:845
#define WM_NCRBUTTONDOWN
Definition: winuser.h:1685
HWND WINAPI SetFocus(_In_opt_ HWND)
#define WM_CTLCOLOR
Definition: windowsx.h:4
#define WM_NCHITTEST
Definition: winuser.h:1676
#define IDI_APPLICATION
Definition: winuser.h:699
UINT_PTR WPARAM
Definition: windef.h:207
#define WS_CHILD
Definition: pedump.c:617
#define GetWindowLongPtrW
Definition: winuser.h:4819
#define WM_CTLCOLORLISTBOX
Definition: winuser.h:1758
BOOL WINAPI DestroyWindow(_In_ HWND)
BOOL WINAPI DPtoLP(_In_ HDC hdc, _Inout_updates_(c) LPPOINT lppt, _In_ int c)
LRESULT FASTCALL DefWndGetIcon(PWND pWnd, WPARAM wParam, LPARAM lParam)
Definition: defwnd.c:472
WPARAM wParam
Definition: combotst.c:138
#define WM_QUERYDROPOBJECT
Definition: undocuser.h:54
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define WM_NCPAINT
Definition: winuser.h:1677
#define GCL_STYLE
Definition: winuser.h:665
#define WM_QUERYDRAGICON
Definition: winuser.h:1644
#define TPM_RIGHTBUTTON
Definition: winuser.h:2370
#define WM_CHARTOITEM
Definition: winuser.h:1639
#define WM_CTLCOLORBTN
Definition: winuser.h:1759
#define FALSE
Definition: types.h:117
#define WM_NCACTIVATE
Definition: winuser.h:1678
#define WS_MINIMIZE
Definition: pedump.c:622
unsigned int BOOL
Definition: ntddk_ex.h:94
#define WM_POPUPSYSTEMMENU
Definition: undocuser.h:60
long LONG
Definition: pedump.c:60
#define WM_NCRBUTTONUP
Definition: winuser.h:1686
#define WM_SETCURSOR
Definition: winuser.h:1626
#define WM_CTLCOLORSCROLLBAR
Definition: winuser.h:1761
#define WM_SYSCHAR
Definition: winuser.h:1711
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
#define WM_ICONERASEBKGND
Definition: winuser.h:1632
HBRUSH FASTCALL DefWndControlColor(HDC hDC, UINT ctlType)
Definition: defwnd.c:33
#define WM_KEYDOWN
Definition: winuser.h:1705
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1756
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_MOUSEACTIVATE
Definition: winuser.h:1627
BOOL WINAPI IsWindowUnicode(_In_ HWND)
UINT HideAccel
Definition: ntuser.h:738
#define WM_RBUTTONDOWN
Definition: winuser.h:1769
#define WM_APPCOMMAND
Definition: winuser.h:1872
#define UserHMGetHandle(obj)
Definition: ntuser.h:222
#define TRACE(s)
Definition: solgame.cpp:4
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define GetProcessHeap()
Definition: compat.h:595
#define NFR_UNICODE
Definition: winuser.h:2449
#define WM_NCUAHDRAWCAPTION
Definition: undocuser.h:45
#define WM_WINDOWPOSCHANGING
Definition: winuser.h:1651
#define WM_CLOSE
Definition: winuser.h:1611
#define WM_KEYUP
Definition: winuser.h:1706
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define Len
Definition: deflate.h:82
#define WM_VKEYTOITEM
Definition: winuser.h:1638
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
#define WM_RBUTTONUP
Definition: winuser.h:1770
#define WM_PRINT
Definition: winuser.h:1870
#define WM_PAINT
Definition: winuser.h:1610
static BOOL CALLBACK UserSendUiUpdateMsg(HWND hwnd, LPARAM lParam)
Definition: defwnd.c:249
#define WM_CANCELMODE
Definition: winuser.h:1625
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1768
#define WNDS_ACTIVEFRAME
Definition: ntuser.h:594
#define MA_NOACTIVATE
Definition: winuser.h:2493
UINT_PTR HKL
Definition: msctf.idl:101
BOOL NTAPI NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
Definition: message.c:2486
#define WM_COPYGLOBALDATA
Definition: undocuser.h:36
#define WM_ISACTIVEICON
Definition: undocuser.h:33
#define NF_QUERY
Definition: winuser.h:2450
#define ERR(fmt,...)
Definition: debug.h:110
#define HTCAPTION
Definition: winuser.h:2466
#define GWL_STYLE
Definition: winuser.h:846
Definition: ntuser.h:672
HKL NTAPI NtUserActivateKeyboardLayout(HKL hKL, ULONG Flags)
Definition: kbdlayout.c:1154
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
#define GCL_HICON
Definition: winuser.h:661
#define WM_ACTIVATE
Definition: winuser.h:1602
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:506
HICON hIcon
Definition: msconfig.c:44
#define HKL_NEXT
Definition: winuser.h:109
#define WM_SYSKEYUP
Definition: winuser.h:1710
#define WM_CTLCOLOREDIT
Definition: winuser.h:1757
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define WM_MBUTTONDOWN
Definition: winuser.h:1772
DWORD state
Definition: ntuser.h:680
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:278
#define HKL_PREV
Definition: winuser.h:110
#define GCL_HBRBACKGROUND
Definition: winuser.h:659
UINT LastInputWasKbd
Definition: ntuser.h:150
#define WM_DEVICECHANGE
Definition: winuser.h:1801
#define NFR_ANSI
Definition: winuser.h:2448
#define GET_Y_LPARAM(lp)
Definition: windowsx.h:275
HWND * WIN_ListChildren(HWND hWndparent)
Definition: mdi.c:140
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1652
#define WM_NCUAHDRAWFRAME
Definition: undocuser.h:46
#define WM_SYSKEYDOWN
Definition: winuser.h:1709
#define TPM_LEFTBUTTON
Definition: winuser.h:2369
struct _WND * spwndParent
Definition: ntuser.h:692
#define HIWORD(l)
Definition: typedefs.h:247
BOOL WINAPI SetForegroundWindow(_In_ HWND)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
struct @1592 Msg[]
#define WA_INACTIVE
Definition: winuser.h:2612
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define WM_ERASEBKGND
Definition: winuser.h:1615
#define WM_QUERYOPEN
Definition: winuser.h:1614
static __inline PDESKTOPINFO GetThreadDesktopInfo(VOID)
Definition: user_x.h:43
#define WS_EX_ACCEPTFILES
Definition: pedump.c:648
LONG_PTR LRESULT
Definition: windef.h:209
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
#define WM_SYSCOMMAND
Definition: winuser.h:1731
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
#define LOWORD(l)
Definition: pedump.c:82
#define HeapFree(x, y, z)
Definition: compat.h:594
#define GetClassLongPtrW
Definition: winuser.h:4554
#define CS_PARENTDC
Definition: winuser.h:651
#define WM_KEYF1
Definition: msg.c:47
struct Rect Rect
EXTINLINE BOOL NtUserxUpdateUiState(HWND hWnd, DWORD Param)
Definition: ntwrapper.h:686
#define WM_NCLBUTTONDBLCLK
Definition: winuser.h:1684
#define ValidateHwnd(hwnd)
Definition: precomp.h:85
DWORD style
Definition: ntuser.h:685

Referenced by RealDefWindowProcA(), RealDefWindowProcW(), and RegisterClientPFN().

◆ UserPaintCaption()

static void UserPaintCaption ( PWND  pwnd,
INT  Flags 
)
static

Definition at line 259 of file defwnd.c.

260 {
261  if ( pwnd->style & WS_VISIBLE && (pwnd->style & WS_CAPTION) == WS_CAPTION )
262  {
264  Flags |= DC_ACTIVE;
265  /*
266  * When themes are not enabled we can go on and paint the non client area.
267  * However if we do that with themes enabled we will draw a classic frame.
268  * This is solved by sending a themes specific message to notify the themes
269  * engine that the caption needs to be redrawn
270  */
272  {
273  /*
274  * This will cause uxtheme to either paint the themed caption or call
275  * RealUserDrawCaption in order to draw the classic caption when themes
276  * are disabled but the themes service is enabled
277  */
279  }
280  else
281  {
282  RECT rc = {0,0,0,0};
285  ReleaseDC(UserHMGetHandle(pwnd), hDC);
286  }
287  }
288  //NtUserCallTwoParam((DWORD_PTR)UserHMGetHandle(pwnd),Flags,TWOPARAM_ROUTINE_REDRAWTITLE)
289 }
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
#define QUERY_WINDOW_FOREGROUND
Definition: ntuser.h:2928
static HDC
Definition: imagelist.c:92
PSERVERINFO gpsi
Definition: imm.c:17
#define DCX_USESTYLE
Definition: GetDCEx.c:10
#define DCX_WINDOW
Definition: winuser.h:2103
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:4181
DWORD dwSRVIFlags
Definition: ntuser.h:1022
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define DC_ACTIVE
Definition: winuser.h:427
#define UserHMGetHandle(obj)
Definition: ntuser.h:222
#define WS_CAPTION
Definition: pedump.c:624
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define WM_NCUAHDRAWCAPTION
Definition: undocuser.h:45
#define SRVINFO_APIHOOK
Definition: ntuser.h:929
static HDC hDC
Definition: 3dtext.c:33
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
DWORD state
Definition: ntuser.h:680
#define NULL
Definition: types.h:112
#define WS_VISIBLE
Definition: pedump.c:620
BOOL NTAPI NtUserDrawCaption(HWND hWnd, HDC hDc, LPCRECT lpRc, UINT uFlags)
Definition: painting.c:2462
#define WNDS_HASCAPTION
Definition: ntuser.h:591
#define DC_DRAWCAPTIONMD
Definition: undocuser.h:150
DWORD style
Definition: ntuser.h:685

◆ UserSendUiUpdateMsg()

static BOOL CALLBACK UserSendUiUpdateMsg ( HWND  hwnd,
LPARAM  lParam 
)
static

Definition at line 249 of file defwnd.c.

250 {
251  SendMessageW(hwnd, WM_UPDATEUISTATE, (WPARAM)lParam, 0);
252  return TRUE;
253 }
#define TRUE
Definition: types.h:120
UINT_PTR WPARAM
Definition: windef.h:207
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
LPARAM lParam
Definition: combotst.c:139

Referenced by User32DefWindowProc().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( user32  )