ReactOS 0.4.16-dev-1142-g8029339
Window Class Reference

#include <window.h>

Inheritance diagram for Window:
Collaboration diagram for Window:

Classes

struct  StaticWindowData
 structure for managing critical sections as static class information in struct Window More...
 

Public Types

typedef map< HWND, Window * > WindowMap
 
typedef Window *(* CREATORFUNC) (HWND)
 
typedef Window *(* CREATORFUNC_INFO) (HWND, const void *)
 

Public Member Functions

 Window (HWND hwnd)
 
virtual ~Window ()
 
LRESULT SendParent (UINT nmsg, WPARAM wparam=0, LPARAM lparam=0)
 
LRESULT PostParent (UINT nmsg, WPARAM wparam=0, LPARAM lparam=0)
 
 Window (INT cx, INT cy, BOOL fAutoHide=FALSE)
 
virtual ~Window ()
 
virtual LRESULT CALLBACK WindowProcDx (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
void DoAction ()
 

Static Public Member Functions

static HWND Create (CREATORFUNC creator, DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int w, int h, HWND hwndParent=0, HMENU hMenu=0)
 
static HWND Create (CREATORFUNC_INFO creator, const void *info, DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int w, int h, HWND hwndParent=0, HMENU hMenu=0)
 
static Windowcreate_mdi_child (const ChildWndInfo &info, const MDICREATESTRUCT &mcs, CREATORFUNC_INFO creator)
 
static LRESULT CALLBACK WindowWndProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam)
 
static INT_PTR CALLBACK DialogProc (HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam)
 
static Windowget_window (HWND hwnd)
 get window controller from window handle
 
template<typename CLASS >
static CLASS * get_window (HWND hwnd)
 
static void register_pretranslate (HWND hwnd)
 
static void unregister_pretranslate (HWND hwnd)
 
static BOOL pretranslate_msg (LPMSG pmsg)
 
static void register_dialog (HWND hwnd)
 
static void unregister_dialog (HWND hwnd)
 
static BOOL dispatch_dialog_msg (LPMSG pmsg)
 
static int MessageLoop ()
 
static void CancelModes ()
 
static BOOL DoRegisterClass (HINSTANCE hInstance)
 
static HWND DoCreateMainWnd (HINSTANCE hInstance, LPCTSTR pszText, INT cx, INT cy, DWORD style=WS_POPUP|WS_THICKFRAME|WS_CLIPCHILDREN, DWORD exstyle=WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST, BOOL fAutoHide=FALSE)
 
static INT DoMainLoop ()
 
static WindowGetAppbarData (HWND hwnd)
 
static LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
static DWORD WINAPI ActionThreadFunc (LPVOID args)
 

Public Attributes

IAccessible IAccessible_iface
 
IOleWindow IOleWindow_iface
 
IEnumVARIANT IEnumVARIANT_iface
 
LONG ref
 

Protected Member Functions

virtual LRESULT Init (LPCREATESTRUCT pcs)
 
virtual LRESULT WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
 
virtual int Command (int id, int code)
 
virtual int Notify (int id, NMHDR *pnmh)
 
void OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
 
void OnPaint (HWND hwnd)
 
void OnRButtonDown (HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
 
void OnKey (HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
 
void OnAppBarCallback (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
BOOL AppBar_Register (HWND hwnd)
 
BOOL AppBar_UnRegister (HWND hwnd)
 
BOOL AppBar_SetAutoHide (HWND hwnd, BOOL fHide)
 
BOOL AppBar_AutoHide (HWND hwnd)
 
BOOL AppBar_NoAutoHide (HWND hwnd)
 
BOOL AppBar_SetSide (HWND hwnd, UINT uSide)
 
void AppBar_SetAlwaysOnTop (HWND hwnd, BOOL fOnTop)
 
void AppBar_Hide (HWND hwnd)
 
void AppBar_UnHide (HWND hwnd)
 
void AppBar_SetAutoHideTimer (HWND hwnd)
 
void AppBar_SetAutoUnhideTimer (HWND hwnd)
 
void AppBar_Size (HWND hwnd)
 
void AppBar_QueryPos (HWND hwnd, LPRECT lprc)
 
void AppBar_QuerySetPos (UINT uEdge, LPRECT lprc, PAPPBARDATA pabd, BOOL fMove)
 
void AppBar_PosChanged (PAPPBARDATA pabd)
 
BOOL OnCreate (HWND hwnd, LPCREATESTRUCT lpCreateStruct)
 
void OnActivate (HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized)
 
void OnWindowPosChanged (HWND hwnd, const LPWINDOWPOS lpwpos)
 
void OnSize (HWND hwnd, UINT state, int cx, int cy)
 
void OnMove (HWND hwnd, int x, int y)
 
void OnNCDestroy (HWND hwnd)
 
void OnTimer (HWND hwnd, UINT id)
 
UINT OnNCHitTest (HWND hwnd, int x, int y)
 
void OnLButtonDown (HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
 
void OnMouseMove (HWND hwnd, int x, int y, UINT keyFlags)
 
void OnLButtonUp (HWND hwnd, int x, int y, UINT keyFlags)
 
void GetWorkArea (LPRECT prc) const
 

Static Protected Member Functions

static Windowcreate_controller (HWND hwnd)
 create controller for a new window
 
static StaticWindowDataGetStaticWindowData ()
 
static LRESULT CALLBACK MDICBTHookProc (int code, WPARAM wparam, LPARAM lparam)
 
static LRESULT CALLBACK PropSheetCBTHookProc (int code, WPARAM wparam, LPARAM lparam)
 

Protected Attributes

HWND m_hwnd
 
BOOL m_fAutoHide
 
BOOL m_fOnTop
 
BOOL m_fHiding
 
UINT m_uSide
 
LONG m_cxWidth
 
LONG m_cyHeight
 
LONG m_cxSave
 
LONG m_cySave
 
BOOL m_fAppBarRegd
 
BOOL m_fMoving
 
BOOL m_bDragged
 
POINT m_ptDragOn
 
RECT m_rcAppBar
 
RECT m_rcDrag
 

Static Protected Attributes

static WindowMap s_wnd_map
 
static const voids_new_info = NULL
 
static CREATORFUNC s_window_creator = NULL
 
static HHOOK s_hcbtHook = 0
 
static WindowSet s_pretranslate_windows
 
static WindowSet s_dialogs
 

Detailed Description

Class Window is the base class for several C++ window wrapper classes. Window objects are allocated from the heap. They are automatically freed when the window gets destroyed.

Definition at line 28 of file window.c.

Member Typedef Documentation

◆ CREATORFUNC

typedef Window *(* Window::CREATORFUNC) (HWND)

Definition at line 66 of file window.h.

◆ CREATORFUNC_INFO

typedef Window *(* Window::CREATORFUNC_INFO) (HWND, const void *)

Definition at line 67 of file window.h.

◆ WindowMap

typedef map<HWND,Window*> Window::WindowMap

Definition at line 64 of file window.h.

Constructor & Destructor Documentation

◆ Window() [1/2]

Window::Window ( HWND  hwnd)

Definition at line 71 of file window.cpp.

72 : WindowHandle(hwnd)
73{
74 Lock lock(GetStaticWindowData()._map_crit_sect); // protect access to s_wnd_map
75
76 s_wnd_map[_hwnd] = this;
77}
static StaticWindowData & GetStaticWindowData()
Definition: window.cpp:63
static WindowMap s_wnd_map
Definition: window.h:117
rwlock_t lock
Definition: tcpcore.h:0
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by Window().

◆ ~Window() [1/2]

Window::~Window ( )
virtual

Definition at line 79 of file window.cpp.

80{
81 Lock lock(GetStaticWindowData()._map_crit_sect); // protect access to s_wnd_map
82
83 s_wnd_map.erase(_hwnd);
84}
void erase(iterator __pos)
Definition: _map.h:203

Referenced by ~Window().

◆ Window() [2/2]

Window::Window ( INT  cx,
INT  cy,
BOOL  fAutoHide = FALSE 
)
inline

Definition at line 140 of file SHAppBarMessage.cpp.

141 : m_hwnd(NULL)
142 , m_fAutoHide(fAutoHide)
143 , m_cxWidth(cx)
144 , m_cyHeight(cy)
145 {
146 }
#define NULL
Definition: types.h:112
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:586
_Out_opt_ int * cx
Definition: commctrl.h:585
BOOL m_fAutoHide

◆ ~Window() [2/2]

virtual Window::~Window ( )
inlinevirtual

Definition at line 148 of file SHAppBarMessage.cpp.

149 {
150 }

Member Function Documentation

◆ ActionThreadFunc()

static DWORD WINAPI Window::ActionThreadFunc ( LPVOID  args)
inlinestatic

Definition at line 1115 of file SHAppBarMessage.cpp.

1116 {
1117 Window *this_ = (Window *)args;
1118 this_->DoAction();
1119 return 0;
1120 }
Definition: window.c:28
void DoAction()
Definition: match.c:390

Referenced by OnCommand().

◆ AppBar_AutoHide()

BOOL Window::AppBar_AutoHide ( HWND  hwnd)
inlineprotected

Definition at line 372 of file SHAppBarMessage.cpp.

373 {
374 APPBARDATA abd = { sizeof(abd) };
375 abd.hWnd = hwnd;
376 abd.uEdge = m_uSide;
377
378 HWND hwndAutoHide = (HWND)SHAppBarMessage(ABM_GETAUTOHIDEBAR, &abd);
379 if (hwndAutoHide)
380 return FALSE;
381
382 abd.lParam = TRUE;
384 return FALSE;
385
389
390 RECT rc = m_rcAppBar;
391 switch (m_uSide)
392 {
393 case ABE_TOP:
394 rc.bottom = rc.top + 2;
395 break;
396 case ABE_BOTTOM:
397 rc.top = rc.bottom - 2;
398 break;
399 case ABE_LEFT:
400 rc.right = rc.left + 2;
401 break;
402 case ABE_RIGHT:
403 rc.left = rc.right - 2;
404 break;
405 }
406
407 AppBar_QueryPos(hwnd, &rc);
408 abd.rc = rc;
410 rc = abd.rc;
411
412 m_fHiding = TRUE;
413 SlideWindow(hwnd, &rc);
414
416 return TRUE;
417 }
void SlideWindow(HWND hwnd, LPRECT prc)
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HANDLE HWND
Definition: compat.h:19
UINT_PTR WINAPI SHAppBarMessage(_In_ DWORD dwMessage, _Inout_ PAPPBARDATA pData)
Definition: appbar.c:67
unsigned int BOOL
Definition: ntddk_ex.h:94
#define ABE_BOTTOM
Definition: shellapi.h:20
#define ABM_SETAUTOHIDEBAR
Definition: shellapi.h:70
#define ABE_RIGHT
Definition: shellapi.h:19
#define ABE_TOP
Definition: shellapi.h:18
#define ABM_SETPOS
Definition: shellapi.h:65
#define ABE_LEFT
Definition: shellapi.h:17
#define ABM_GETAUTOHIDEBAR
Definition: shellapi.h:69
void AppBar_SetAutoHideTimer(HWND hwnd)
void AppBar_QueryPos(HWND hwnd, LPRECT lprc)
LPARAM lParam
Definition: shellapi.h:223
HWND hWnd
Definition: shellapi.h:219
UINT uEdge
Definition: shellapi.h:221
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306

Referenced by AppBar_SetAutoHide(), and OnLButtonUp().

◆ AppBar_Hide()

void Window::AppBar_Hide ( HWND  hwnd)
inlineprotected

Definition at line 495 of file SHAppBarMessage.cpp.

496 {
497 if (!m_fAutoHide)
498 return;
499
500 RECT rc = m_rcAppBar;
501 switch (m_uSide)
502 {
503 case ABE_TOP:
504 rc.bottom = rc.top + 2;
505 break;
506 case ABE_BOTTOM:
507 rc.top = rc.bottom - 2;
508 break;
509 case ABE_LEFT:
510 rc.right = rc.left + 2;
511 break;
512 case ABE_RIGHT:
513 rc.left = rc.right - 2;
514 break;
515 }
516
517 m_fHiding = TRUE;
518 SlideWindow(hwnd, &rc);
519 }

Referenced by OnActivate(), and OnTimer().

◆ AppBar_NoAutoHide()

BOOL Window::AppBar_NoAutoHide ( HWND  hwnd)
inlineprotected

Definition at line 419 of file SHAppBarMessage.cpp.

420 {
421 APPBARDATA abd = { sizeof(abd) };
422 abd.hWnd = hwnd;
423 abd.uEdge = m_uSide;
424 HWND hwndAutoHide = (HWND)SHAppBarMessage(ABM_GETAUTOHIDEBAR, &abd);
425 if (hwndAutoHide != hwnd)
426 return FALSE;
427
428 abd.lParam = FALSE;
430 return FALSE;
431
436 return TRUE;
437 }
BOOL AppBar_SetSide(HWND hwnd, UINT uSide)

Referenced by AppBar_SetAutoHide().

◆ AppBar_PosChanged()

void Window::AppBar_PosChanged ( PAPPBARDATA  pabd)
inlineprotected

Definition at line 623 of file SHAppBarMessage.cpp.

624 {
625 RECT rc;
627
628 if (m_fAutoHide)
629 {
630 m_rcAppBar = rc;
631 switch (m_uSide)
632 {
633 case ABE_TOP:
635 break;
636 case ABE_BOTTOM:
638 break;
639 case ABE_LEFT:
641 break;
642 case ABE_RIGHT:
644 break;
645 }
646 }
647
648 RECT rcWindow;
649 GetWindowRect(pabd->hWnd, &rcWindow);
650 INT cx = rcWindow.right - rcWindow.left;
651 INT cy = rcWindow.bottom - rcWindow.top;
652 switch (m_uSide)
653 {
654 case ABE_TOP:
655 rc.bottom = rc.top + cy;
656 break;
657 case ABE_BOTTOM:
658 rc.top = rc.bottom - cy;
659 break;
660 case ABE_LEFT:
661 rc.right = rc.left + cx;
662 break;
663 case ABE_RIGHT:
664 rc.left = rc.right - cx;
665 break;
666 }
667 AppBar_QuerySetPos(m_uSide, &rc, pabd, TRUE);
668 }
void AppBar_QuerySetPos(UINT uEdge, LPRECT lprc, PAPPBARDATA pabd, BOOL fMove)
int32_t INT
Definition: typedefs.h:58
#define SM_CYSCREEN
Definition: winuser.h:971
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define SM_CXSCREEN
Definition: winuser.h:970
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by OnAppBarCallback().

◆ AppBar_QueryPos()

void Window::AppBar_QueryPos ( HWND  hwnd,
LPRECT  lprc 
)
inlineprotected

Definition at line 558 of file SHAppBarMessage.cpp.

559 {
560 APPBARDATA abd = { sizeof(abd) };
561 abd.hWnd = hwnd;
562 abd.rc = *lprc;
563 abd.uEdge = m_uSide;
564
565 INT cx = 0, cy = 0;
566 if (ABE_LEFT == abd.uEdge || ABE_RIGHT == abd.uEdge)
567 {
568 cx = abd.rc.right - abd.rc.left;
569 abd.rc.top = 0;
571 }
572 else
573 {
574 cy = abd.rc.bottom - abd.rc.top;
575 abd.rc.left = 0;
577 }
578
580
581 switch (abd.uEdge)
582 {
583 case ABE_LEFT:
584 abd.rc.right = abd.rc.left + cx;
585 break;
586 case ABE_RIGHT:
587 abd.rc.left = abd.rc.right - cx;
588 break;
589 case ABE_TOP:
590 abd.rc.bottom = abd.rc.top + cy;
591 break;
592 case ABE_BOTTOM:
593 abd.rc.top = abd.rc.bottom - cy;
594 break;
595 }
596
597 *lprc = abd.rc;
598 }
#define ABM_QUERYPOS
Definition: shellapi.h:64
_In_ int _Inout_ LPRECT lprc
Definition: winuser.h:4477

Referenced by AppBar_AutoHide(), AppBar_QuerySetPos(), and OnMouseMove().

◆ AppBar_QuerySetPos()

void Window::AppBar_QuerySetPos ( UINT  uEdge,
LPRECT  lprc,
PAPPBARDATA  pabd,
BOOL  fMove 
)
inlineprotected

Definition at line 600 of file SHAppBarMessage.cpp.

601 {
602 pabd->rc = *lprc;
603 pabd->uEdge = uEdge;
604 m_uSide = uEdge;
605
606 AppBar_QueryPos(pabd->hWnd, &pabd->rc);
607
609
610 if (fMove)
611 {
612 RECT rc = pabd->rc;
613 MoveWindow(pabd->hWnd, rc.left, rc.top,
614 rc.right - rc.left, rc.bottom - rc.top, TRUE);
615 }
616
617 if (!m_fAutoHide)
618 {
619 m_rcAppBar = pabd->rc;
620 }
621 }
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)

Referenced by AppBar_PosChanged(), AppBar_SetSide(), AppBar_Size(), and OnLButtonUp().

◆ AppBar_Register()

BOOL Window::AppBar_Register ( HWND  hwnd)
inlineprotected

Definition at line 345 of file SHAppBarMessage.cpp.

346 {
347 APPBARDATA abd = { sizeof(abd) };
348 abd.hWnd = hwnd;
350
352 return m_fAppBarRegd;
353 }
#define APPBAR_CALLBACK
#define BOOL
Definition: nt_native.h:43
#define ABM_NEW
Definition: shellapi.h:62
BOOL m_fAppBarRegd
UINT uCallbackMessage
Definition: shellapi.h:220

Referenced by OnCreate().

◆ AppBar_SetAlwaysOnTop()

void Window::AppBar_SetAlwaysOnTop ( HWND  hwnd,
BOOL  fOnTop 
)
inlineprotected

Definition at line 488 of file SHAppBarMessage.cpp.

489 {
491 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
492 m_fOnTop = fOnTop;
493 }
#define SWP_NOACTIVATE
Definition: winuser.h:1253
#define HWND_TOPMOST
Definition: winuser.h:1219
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOMOVE
Definition: winuser.h:1255
#define SWP_NOSIZE
Definition: winuser.h:1256
#define HWND_NOTOPMOST
Definition: winuser.h:1217

◆ AppBar_SetAutoHide()

BOOL Window::AppBar_SetAutoHide ( HWND  hwnd,
BOOL  fHide 
)
inlineprotected

Definition at line 364 of file SHAppBarMessage.cpp.

365 {
366 if (fHide)
367 return AppBar_AutoHide(hwnd);
368 else
369 return AppBar_NoAutoHide(hwnd);
370 }
BOOL AppBar_NoAutoHide(HWND hwnd)
BOOL AppBar_AutoHide(HWND hwnd)

Referenced by AppBar_SetSide(), and OnRButtonDown().

◆ AppBar_SetAutoHideTimer()

void Window::AppBar_SetAutoHideTimer ( HWND  hwnd)
inlineprotected

Definition at line 529 of file SHAppBarMessage.cpp.

530 {
531 if (m_fAutoHide)
532 {
534 }
535 }
#define IDT_AUTOHIDE
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)

Referenced by AppBar_AutoHide(), and AppBar_UnHide().

◆ AppBar_SetAutoUnhideTimer()

void Window::AppBar_SetAutoUnhideTimer ( HWND  hwnd)
inlineprotected

Definition at line 537 of file SHAppBarMessage.cpp.

538 {
539 if (m_fAutoHide && m_fHiding)
540 {
542 }
543 }
#define IDT_AUTOUNHIDE

Referenced by OnNCHitTest().

◆ AppBar_SetSide()

BOOL Window::AppBar_SetSide ( HWND  hwnd,
UINT  uSide 
)
inlineprotected

Definition at line 439 of file SHAppBarMessage.cpp.

440 {
441 HMONITOR hMon = ::MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY);
442 MONITORINFO mi = { sizeof(mi) };
443 ::GetMonitorInfo(hMon, &mi);
444 RECT rc = mi.rcWork;
445
446 BOOL fAutoHide = FALSE;
447 if (m_fAutoHide)
448 {
449 fAutoHide = m_fAutoHide;
453 }
454
455 switch (uSide)
456 {
457 case ABE_TOP:
458 rc.bottom = rc.top + m_cyHeight;
459 break;
460 case ABE_BOTTOM:
461 rc.top = rc.bottom - m_cyHeight;
462 break;
463 case ABE_LEFT:
464 rc.right = rc.left + m_cxWidth;
465 break;
466 case ABE_RIGHT:
467 rc.left = rc.right - m_cxWidth;
468 break;
469 }
470
471 APPBARDATA abd = { sizeof(abd) };
472 abd.hWnd = hwnd;
473 AppBar_QuerySetPos(uSide, &rc, &abd, TRUE);
474
475 if (fAutoHide)
476 {
478 m_fHiding = TRUE;
479
483 }
484
485 return TRUE;
486 }
static MONITORINFO mi
Definition: win.c:7338
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
BOOL AppBar_SetAutoHide(HWND hwnd, BOOL fHide)
#define SetWindowRedraw(hwnd, fRedraw)
Definition: windowsx.h:534
#define GetMonitorInfo
Definition: winuser.h:5811
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define RDW_UPDATENOW
Definition: winuser.h:1231
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
#define RDW_ALLCHILDREN
Definition: winuser.h:1232
#define RDW_INVALIDATE
Definition: winuser.h:1225

Referenced by AppBar_NoAutoHide(), DoAction(), and OnCreate().

◆ AppBar_Size()

void Window::AppBar_Size ( HWND  hwnd)
inlineprotected

Definition at line 545 of file SHAppBarMessage.cpp.

546 {
547 if (m_fAppBarRegd)
548 {
549 APPBARDATA abd = { sizeof(abd) };
550 abd.hWnd = hwnd;
551
552 RECT rc;
553 GetWindowRect(hwnd, &rc);
554 AppBar_QuerySetPos(m_uSide, &rc, &abd, TRUE);
555 }
556 }

Referenced by OnMove(), and OnSize().

◆ AppBar_UnHide()

void Window::AppBar_UnHide ( HWND  hwnd)
inlineprotected

Definition at line 521 of file SHAppBarMessage.cpp.

522 {
525
527 }

Referenced by OnActivate(), and OnTimer().

◆ AppBar_UnRegister()

BOOL Window::AppBar_UnRegister ( HWND  hwnd)
inlineprotected

Definition at line 355 of file SHAppBarMessage.cpp.

356 {
357 APPBARDATA abd = { sizeof(abd) };
358 abd.hWnd = hwnd;
359
361 return !m_fAppBarRegd;
362 }
#define ABM_REMOVE
Definition: shellapi.h:63

Referenced by OnNCDestroy().

◆ CancelModes()

void Window::CancelModes ( )
static

Definition at line 295 of file window.cpp.

296{
298}
#define HWND_BROADCAST
Definition: winuser.h:1215
#define WM_CANCELMODE
Definition: winuser.h:1646
#define PostMessage
Definition: winuser.h:5852

Referenced by CancelModes().

◆ Command()

◆ Create() [1/2]

HWND Window::Create ( CREATORFUNC  creator,
DWORD  dwExStyle,
LPCTSTR  lpClassName,
LPCTSTR  lpWindowName,
DWORD  dwStyle,
int  x,
int  y,
int  w,
int  h,
HWND  hwndParent = 0,
HMENU  hMenu = 0 
)
static

Definition at line 87 of file window.cpp.

91{
92 Lock lock(GetStaticWindowData()._create_crit_sect); // protect access to s_window_creator and s_new_info
93
94 s_window_creator = creator;
96
97 return CreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStyle,
98 x, y, w, h,
99 hwndParent, hMenu, g_Globals._hInstance, 0/*lpParam*/);
100}
static HWND hwndParent
Definition: cryptui.c:300
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
ExplorerGlobals g_Globals
Definition: explorer.cpp:52
HINSTANCE _hInstance
Definition: globals.h:270
static CREATORFUNC s_window_creator
Definition: window.h:120
static const void * s_new_info
Definition: window.h:119
#define CreateWindowEx
Definition: winuser.h:5775

Referenced by DesktopWindow::Create(), MDIMainFrame::Create(), SDIMainFrame::Create(), DesktopBar::Create(), Create(), StartMenuRoot::Create(), TaskBar::Create(), NotifyArea::Create(), ClockWindow::Create(), and StartMenu::Create().

◆ Create() [2/2]

HWND Window::Create ( CREATORFUNC_INFO  creator,
const void info,
DWORD  dwExStyle,
LPCTSTR  lpClassName,
LPCTSTR  lpWindowName,
DWORD  dwStyle,
int  x,
int  y,
int  w,
int  h,
HWND  hwndParent = 0,
HMENU  hMenu = 0 
)
static

Definition at line 102 of file window.cpp.

106{
107 Lock lock(GetStaticWindowData()._create_crit_sect); // protect access to s_window_creator and s_new_info
108
109 s_window_creator = (CREATORFUNC) creator;
111
112 return CreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStyle,
113 x, y, w, h,
114 hwndParent, hMenu, g_Globals._hInstance, 0/*lpParam*/);
115}
Window *(* CREATORFUNC)(HWND)
Definition: window.h:66

◆ create_controller()

Window * Window::create_controller ( HWND  hwnd)
staticprotected

create controller for a new window

Definition at line 220 of file window.cpp.

221{
222 if (s_window_creator) { // protect for recursion and create the window object only for the first window
223 Lock lock(GetStaticWindowData()._create_crit_sect); // protect access to s_window_creator and s_new_info
224
225 const void* info = s_new_info;
227
228 CREATORFUNC window_creator = s_window_creator;
230
231 if (info)
232 return CREATORFUNC_INFO(window_creator)(hwnd, info);
233 else
234 return CREATORFUNC(window_creator)(hwnd);
235 }
236
237 return NULL;
238}
Window *(* CREATORFUNC_INFO)(HWND, const void *)
Definition: window.h:67

Referenced by create_controller(), DialogProc(), MDICBTHookProc(), PropSheetCBTHookProc(), and WindowWndProc().

◆ create_mdi_child()

Window * Window::create_mdi_child ( const ChildWndInfo info,
const MDICREATESTRUCT mcs,
CREATORFUNC_INFO  creator 
)
static

Definition at line 118 of file window.cpp.

119{
120 Lock lock(GetStaticWindowData()._create_crit_sect); // protect access to s_window_creator and s_new_info
121
122 s_window_creator = (CREATORFUNC) creator;
123 s_new_info = &info;
124
126
127 HWND hwnd = (HWND) SendMessage(info._hmdiclient, WM_MDICREATE, 0, (LPARAM)&mcs);
128
129 // end hook in case it's not already done
130 if (s_hcbtHook)
132
135
136 if (child && (!hwnd || !child->_hwnd))
137 child = NULL;
138
139 return child;
140}
static struct myctx * mcs
Definition: adnstest.c:53
static HWND child
Definition: cursoricon.c:298
static HHOOK s_hcbtHook
Definition: window.h:133
static LRESULT CALLBACK MDICBTHookProc(int code, WPARAM wparam, LPARAM lparam)
Definition: window.cpp:142
static Window * get_window(HWND hwnd)
get window controller from window handle
Definition: window.cpp:203
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
LONG_PTR LPARAM
Definition: windef.h:208
#define WM_MDICREATE
Definition: winuser.h:1823
#define WH_CBT
Definition: winuser.h:35
#define SetWindowsHookEx
Definition: winuser.h:5876
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
#define SendMessage
Definition: winuser.h:5863

Referenced by ChildWindow::create(), FileChildWindow::create(), and create_mdi_child().

◆ DialogProc()

INT_PTR CALLBACK Window::DialogProc ( HWND  hwnd,
UINT  nmsg,
WPARAM  wparam,
LPARAM  lparam 
)
static

Definition at line 725 of file window.cpp.

726{
727 Window* pThis = get_window(hwnd);
728
729 if (pThis) {
730 switch(nmsg) {
731 case WM_COMMAND:
732 pThis->Command(LOWORD(wparam), HIWORD(wparam));
733 return TRUE; // message has been processed
734
735 case WM_NOTIFY:
736 pThis->Notify(wparam, (NMHDR*)lparam);
737 return TRUE; // message has been processed
738
739 case WM_NOTIFYFORMAT:
740 SetWindowLongPtr(hwnd, DWLP_MSGRESULT, NFR_CURRENT); // set return value NFR_CURRENT
741 return TRUE; // message has been processed
742
743 case WM_NCDESTROY:
744 delete pThis;
745 return TRUE; // message has been processed
746
747 default:
748 return pThis->WndProc(nmsg, wparam, lparam);
749 }
750 } else if (nmsg == WM_INITDIALOG) {
751 pThis = create_controller(hwnd);
752
753 if (pThis)
754 return pThis->Init(NULL);
755 }
756
757 return FALSE; // message has not been processed
758}
@ lparam
Definition: SystemMenu.c:31
@ wparam
Definition: SystemMenu.c:30
#define NFR_CURRENT
Definition: window.h:144
#define LOWORD(l)
Definition: pedump.c:82
#define WM_NOTIFY
Definition: richedit.h:61
virtual LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
Definition: window.cpp:280
virtual int Command(int id, int code)
Definition: window.cpp:285
static Window * create_controller(HWND hwnd)
create controller for a new window
Definition: window.cpp:220
virtual LRESULT Init(LPCREATESTRUCT pcs)
Definition: window.cpp:241
virtual int Notify(int id, NMHDR *pnmh)
Definition: window.cpp:290
#define SetWindowLongPtr
Definition: treelist.c:70
#define HIWORD(l)
Definition: typedefs.h:247
#define WM_COMMAND
Definition: winuser.h:1751
#define WM_INITDIALOG
Definition: winuser.h:1750
#define WM_NCDESTROY
Definition: winuser.h:1695
#define DWLP_MSGRESULT
Definition: winuser.h:881

Referenced by DialogProc(), and Dialog::DoModal().

◆ dispatch_dialog_msg()

BOOL Window::dispatch_dialog_msg ( LPMSG  pmsg)
static

Definition at line 619 of file window.cpp.

620{
621 for(WindowSet::const_iterator it=Window::s_dialogs.begin(); it!=s_dialogs.end(); ++it)
622 if (IsDialogMessage(*it, pmsg))
623 return TRUE;
624
625 return FALSE;
626}
iterator end()
Definition: _set.h:152
_Rep_type::const_iterator const_iterator
Definition: _set.h:74
static WindowSet s_dialogs
Definition: window.h:138
#define IsDialogMessage
Definition: winuser.h:5829
static clock_t begin
Definition: xmllint.c:458

Referenced by dispatch_dialog_msg(), MessageLoop(), and StartMenuRoot::TrackStartmenu().

◆ DoAction()

void Window::DoAction ( )
inline

Definition at line 974 of file SHAppBarMessage.cpp.

975 {
976#define INTERVAL 250
977 POINT pt;
978 RECT rc1, rc2, rcWork;
980
981 trace("DoAction\n");
983
984 GetWindowRect(s_hwnd1, &rc1);
986 GetWorkArea(&rcWork);
990 ok_long(rc1.bottom, s_rcWorkArea.top + 80);
992 ok_long(rc2.top, s_rcWorkArea.top + 80);
994 ok_long(rc2.bottom, s_rcWorkArea.top + 110);
995 ok_long(rcWork.left, s_rcWorkArea.left);
996 ok_long(rcWork.top, s_rcWorkArea.top + 110);
1000 Sleep(INTERVAL);
1001
1003 GetWorkArea(&rcWork);
1006 ok_long(rc2.right, s_rcWorkArea.right);
1007 ok_long(rc2.bottom, s_rcWorkArea.top + 30);
1008 ok_long(rcWork.left, s_rcWorkArea.left);
1009 ok_long(rcWork.top, s_rcWorkArea.top + 30);
1013 Sleep(INTERVAL);
1014
1016 GetWorkArea(&rcWork);
1019 ok_long(rc2.right, s_rcWorkArea.left + 30);
1020 ok_long(rcWork.left, s_rcWorkArea.left + 30);
1021 ok_long(rcWork.top, s_rcWorkArea.top);
1025 Sleep(INTERVAL);
1026
1028 GetWorkArea(&rcWork);
1031 ok_long(rc2.right, s_rcWorkArea.right);
1032 ok_long(rc2.bottom, s_rcWorkArea.top + 30);
1033 ok_long(rcWork.left, s_rcWorkArea.left);
1034 ok_long(rcWork.top, s_rcWorkArea.top + 30);
1038 Sleep(INTERVAL);
1039
1041 GetWorkArea(&rcWork);
1042 ok_long(rc2.left, s_rcWorkArea.right - 30);
1044 ok_long(rc2.right, s_rcWorkArea.right);
1045 ok_long(rcWork.left, s_rcWorkArea.left);
1046 ok_long(rcWork.top, s_rcWorkArea.top);
1047 ok_long(rcWork.right, s_rcWorkArea.right - 30);
1049 Sleep(INTERVAL);
1050
1052 pt.x = (rc2.left + rc2.right) / 2;
1053 pt.y = (rc2.top + rc2.bottom) / 2;
1054 MOVE(pt.x, pt.y);
1055 LEFT_DOWN();
1056 MOVE(pt.x + 64, pt.y + 64);
1057 Sleep(INTERVAL);
1058
1059 pt.x = s_rcWorkArea.left + 80;
1061 MOVE(pt.x, pt.y);
1062 LEFT_UP();
1063 Sleep(INTERVAL);
1064
1066 GetWorkArea(&rcWork);
1069 ok_long(rc2.right, s_rcWorkArea.left + 30);
1070 ok_long(rcWork.left, s_rcWorkArea.left + 30);
1071 ok_long(rcWork.top, s_rcWorkArea.top);
1074 Sleep(INTERVAL);
1075
1077 pt.x = (rc2.left + rc2.right) / 2;
1078 pt.y = (rc2.top + rc2.bottom) / 2;
1079 MOVE(pt.x, pt.y);
1080 LEFT_DOWN();
1081 MOVE(pt.x + 64, pt.y + 64);
1082 Sleep(INTERVAL);
1083
1084 pt.x = s_rcWorkArea.right - 80;
1086 MOVE(pt.x, pt.y);
1087 LEFT_UP();
1088 Sleep(INTERVAL);
1089
1091 GetWorkArea(&rcWork);
1092 ok_long(rc2.left, s_rcWorkArea.right - 30);
1094 ok_long(rc2.right, s_rcWorkArea.right);
1095 ok_long(rcWork.left, s_rcWorkArea.left);
1096 ok_long(rcWork.top, s_rcWorkArea.top);
1097 ok_long(rcWork.right, s_rcWorkArea.right - 30);
1099 Sleep(INTERVAL);
1100
1102 Sleep(INTERVAL);
1103
1104 GetWorkArea(&rcWork);
1105 ok_long(rcWork.left, s_rcWorkArea.left);
1106 ok_long(rcWork.top, s_rcWorkArea.top);
1109
1111 PostThreadMessage(dwTID, WM_QUIT, 0, 0);
1112#undef INTERVAL
1113 }
#define MOVE(x, y)
#define LEFT_UP()
#define LEFT_DOWN()
static RECT s_rcWorkArea
#define INTERVAL
static HWND s_hwnd2
static HWND s_hwnd1
#define ok_long(expression, result)
Definition: atltest.h:133
#define trace
Definition: atltest.h:70
static const WCHAR rc2[]
Definition: oid.c:1216
#define pt(x, y)
Definition: drawing.c:79
unsigned long DWORD
Definition: ntddk_ex.h:95
void GetWorkArea(LPRECT prc) const
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
Definition: synch.c:790
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define WM_CLOSE
Definition: winuser.h:1632
#define WM_QUIT
Definition: winuser.h:1634
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define PostThreadMessage
Definition: winuser.h:5853

Referenced by ActionThreadFunc().

◆ DoCreateMainWnd()

static HWND Window::DoCreateMainWnd ( HINSTANCE  hInstance,
LPCTSTR  pszText,
INT  cx,
INT  cy,
DWORD  style = WS_POPUP | WS_THICKFRAME | WS_CLIPCHILDREN,
DWORD  exstyle = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST,
BOOL  fAutoHide = FALSE 
)
inlinestatic

Definition at line 165 of file SHAppBarMessage.cpp.

169 {
170 Window *this_ = new Window(cx, cy, fAutoHide);
171 HWND hwnd = CreateWindowEx(exstyle, s_szName, pszText, style,
173 NULL, NULL, hInstance, this_);
176 return hwnd;
177 }
static const TCHAR s_szName[]
Arabic default style
Definition: afstyles.h:94
HINSTANCE hInstance
Definition: charmap.c:19
#define SW_SHOWNORMAL
Definition: winuser.h:781
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UpdateWindow(_In_ HWND)
#define CW_USEDEFAULT
Definition: winuser.h:225

◆ DoMainLoop()

static INT Window::DoMainLoop ( )
inlinestatic

Definition at line 179 of file SHAppBarMessage.cpp.

180 {
181 MSG msg;
182 while (GetMessage(&msg, NULL, 0, 0))
183 {
186 }
187 return (INT)msg.wParam;
188 }
#define msg(x)
Definition: auth_time.c:54
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define GetMessage
Definition: winuser.h:5810
#define DispatchMessage
Definition: winuser.h:5785

◆ DoRegisterClass()

static BOOL Window::DoRegisterClass ( HINSTANCE  hInstance)
inlinestatic

Definition at line 152 of file SHAppBarMessage.cpp.

153 {
154 WNDCLASS wc;
155 ZeroMemory(&wc, sizeof(wc));
157 wc.hInstance = hInstance;
160 wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
162 return !!RegisterClass(&wc);
163 }
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
HBRUSH hbrBackground
Definition: winuser.h:3181
HICON hIcon
Definition: winuser.h:3179
HINSTANCE hInstance
Definition: winuser.h:3178
HCURSOR hCursor
Definition: winuser.h:3180
LPCSTR lpszClassName
Definition: winuser.h:3183
WNDPROC lpfnWndProc
Definition: winuser.h:3175
#define ZeroMemory
Definition: winbase.h:1743
#define IDC_ARROW
Definition: winuser.h:695
#define IDI_APPLICATION
Definition: winuser.h:712
#define LoadIcon
Definition: winuser.h:5833
#define LoadCursor
Definition: winuser.h:5832
#define RegisterClass
Definition: winuser.h:5856
#define COLOR_3DFACE
Definition: winuser.h:940

◆ get_window() [1/2]

Window * Window::get_window ( HWND  hwnd)
static

get window controller from window handle

Definition at line 203 of file window.cpp.

204{
205 {
206 Lock lock(GetStaticWindowData()._map_crit_sect); // protect access to s_wnd_map
207
209
210 if (found!=s_wnd_map.end())
211 return found->second;
212 }
213
214 return NULL;
215}
_STLP_TEMPLATE_FOR_CONT_EXT iterator find(const _KT &__x)
Definition: _map.h:210
iterator end()
Definition: _map.h:165
_Rep_type::const_iterator const_iterator
Definition: _map.h:86

Referenced by create_mdi_child(), DialogProc(), get_window(), MDICBTHookProc(), PropSheetCBTHookProc(), and WindowWndProc().

◆ get_window() [2/2]

template<typename CLASS >
static CLASS * Window::get_window ( HWND  hwnd)
inlinestatic

Definition at line 87 of file window.h.

87{return static_cast<CLASS*>(get_window(hwnd));}

Referenced by get_window().

◆ GetAppbarData()

static Window * Window::GetAppbarData ( HWND  hwnd)
inlinestatic

Definition at line 190 of file SHAppBarMessage.cpp.

191 {
193 }
#define GetWindowLongPtr
Definition: treelist.c:73
#define GWLP_USERDATA
Definition: treelist.c:63

Referenced by WindowProc().

◆ GetStaticWindowData()

Window::StaticWindowData & Window::GetStaticWindowData ( )
staticprotected

Definition at line 63 of file window.cpp.

64{
65 static StaticWindowData s_initialized_data;
66
67 return s_initialized_data;
68}

Referenced by Create(), create_controller(), create_mdi_child(), Dialog::DoModal(), get_window(), GetStaticWindowData(), Window(), and ~Window().

◆ GetWorkArea()

void Window::GetWorkArea ( LPRECT  prc) const
inlineprotected

Definition at line 968 of file SHAppBarMessage.cpp.

969 {
970 SystemParametersInfoW(SPI_GETWORKAREA, 0, prc, 0);
971 }
_Out_ LPRECT prc
Definition: ntgdi.h:1658
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)

Referenced by DoAction().

◆ Init()

◆ MDICBTHookProc()

LRESULT CALLBACK Window::MDICBTHookProc ( int  code,
WPARAM  wparam,
LPARAM  lparam 
)
staticprotected

Definition at line 142 of file window.cpp.

143{
144 if (code == HCBT_CREATEWND) {
145 UnhookWindowsHookEx(s_hcbtHook); // use the hook only for the first created window
146 s_hcbtHook = 0;
147
148 HWND hwnd = (HWND)wparam;
149
150 // create Window controller and associate it with the window handle
152
153 if (!child)
155 }
156
158}
Definition: inflate.c:139
#define HCBT_CREATEWND
Definition: winuser.h:58
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)

Referenced by create_mdi_child(), and MDICBTHookProc().

◆ MessageLoop()

int Window::MessageLoop ( )
static

Definition at line 629 of file window.cpp.

630{
631 MSG msg;
632
633 while(GetMessage(&msg, 0, 0, 0)) {
634 try {
635 if (pretranslate_msg(&msg))
636 continue;
637
639 continue;
640
642
643 try {
645 } catch(COMException& e) {
646 HandleException(e, 0);
647 }
648 } catch(COMException& e) {
649 HandleException(e, 0);
650 }
651 }
652
653 return msg.wParam;
654}
#define e
Definition: ke_i.h:82
void HandleException(COMException &e, HWND hwnd)
Exception Handler for COM exceptions.
Exception with context information.
Definition: shellclasses.h:114
static BOOL pretranslate_msg(LPMSG pmsg)
Definition: window.cpp:589
static BOOL dispatch_dialog_msg(LPMSG pmsg)
Definition: window.cpp:619

Referenced by MessageLoop().

◆ Notify()

◆ OnActivate()

void Window::OnActivate ( HWND  hwnd,
UINT  state,
HWND  hwndActDeact,
BOOL  fMinimized 
)
inlineprotected

Definition at line 689 of file SHAppBarMessage.cpp.

690 {
691 APPBARDATA abd = { sizeof(abd) };
692 abd.hWnd = hwnd;
694
695 switch (state)
696 {
697 case WA_ACTIVE:
698 case WA_CLICKACTIVE:
701 break;
702
703 case WA_INACTIVE:
705 break;
706 }
707 }
static int state
Definition: maze.c:121
#define ABM_ACTIVATE
Definition: shellapi.h:68
void AppBar_UnHide(HWND hwnd)
void AppBar_Hide(HWND hwnd)
#define WA_INACTIVE
Definition: winuser.h:2633
#define WA_ACTIVE
Definition: winuser.h:2634
#define WA_CLICKACTIVE
Definition: winuser.h:2635
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)

Referenced by WindowProcDx().

◆ OnAppBarCallback()

void Window::OnAppBarCallback ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlineprotected

Definition at line 311 of file SHAppBarMessage.cpp.

312 {
313 static HWND s_hwndZOrder = NULL;
314
315 switch (wParam)
316 {
317 case ABN_STATECHANGE:
318 break;
319
321 if (lParam)
322 {
323 s_hwndZOrder = GetWindow(hwnd, GW_HWNDPREV);
324 SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0,
326 }
327 else
328 {
329 SetWindowPos(hwnd, m_fOnTop ? HWND_TOPMOST : s_hwndZOrder,
330 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
331 s_hwndZOrder = NULL;
332 }
333 break;
334
335 case ABN_POSCHANGED:
336 {
337 APPBARDATA abd = { sizeof(abd) };
338 abd.hWnd = hwnd;
339 AppBar_PosChanged(&abd);
340 }
341 break;
342 }
343 }
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define ABN_FULLSCREENAPP
Definition: shellapi.h:75
#define ABN_STATECHANGE
Definition: shellapi.h:73
#define ABN_POSCHANGED
Definition: shellapi.h:74
void AppBar_PosChanged(PAPPBARDATA pabd)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
#define GW_HWNDPREV
Definition: winuser.h:773
#define HWND_BOTTOM
Definition: winuser.h:1216

Referenced by WindowProcDx().

◆ OnCommand()

void Window::OnCommand ( HWND  hwnd,
int  id,
HWND  hwndCtl,
UINT  codeNotify 
)
inlineprotected

Definition at line 261 of file SHAppBarMessage.cpp.

262 {
264 switch (id)
265 {
266 case ID_ACTION:
268 break;
269 case ID_ACTION + 1:
271 if (!hThread)
272 {
273 skip("failed to create thread\n");
276 return;
277 }
279 }
280 }
#define ID_ACTION
#define skip(...)
Definition: atltest.h:64
#define CloseHandle
Definition: compat.h:739
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
HANDLE hThread
Definition: wizard.c:28
static DWORD WINAPI ActionThreadFunc(LPVOID args)

Referenced by WindowProcDx().

◆ OnCreate()

BOOL Window::OnCreate ( HWND  hwnd,
LPCREATESTRUCT  lpCreateStruct 
)
inlineprotected

Definition at line 670 of file SHAppBarMessage.cpp.

671 {
672 m_hwnd = hwnd;
673 m_fOnTop = TRUE;
675
681
684
685 trace("OnCreate(%p) done\n", hwnd);
686 return TRUE;
687 }
BOOL AppBar_Register(HWND hwnd)

Referenced by WindowProcDx().

◆ OnKey()

void Window::OnKey ( HWND  hwnd,
UINT  vk,
BOOL  fDown,
int  cRepeat,
UINT  flags 
)
inlineprotected

Definition at line 305 of file SHAppBarMessage.cpp.

306 {
307 if (vk == VK_ESCAPE)
309 }
WORD vk
Definition: input.c:77
#define VK_ESCAPE
Definition: winuser.h:2225
BOOL WINAPI DestroyWindow(_In_ HWND)

Referenced by WindowProcDx().

◆ OnLButtonDown()

void Window::OnLButtonDown ( HWND  hwnd,
BOOL  fDoubleClick,
int  x,
int  y,
UINT  keyFlags 
)
inlineprotected

Definition at line 827 of file SHAppBarMessage.cpp.

828 {
829 m_fMoving = TRUE;
833 }
POINT m_ptDragOn
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
Definition: cursoricon.c:3032

Referenced by WindowProcDx().

◆ OnLButtonUp()

void Window::OnLButtonUp ( HWND  hwnd,
int  x,
int  y,
UINT  keyFlags 
)
inlineprotected

Definition at line 921 of file SHAppBarMessage.cpp.

922 {
923 if (!m_fMoving)
924 return;
925
926 OnMouseMove(hwnd, x, y, keyFlags);
927
929
931
932 if (m_fAutoHide)
933 {
934 switch (m_uSide)
935 {
936 case ABE_TOP:
938 break;
939 case ABE_BOTTOM:
941 break;
942 case ABE_LEFT:
944 break;
945 case ABE_RIGHT:
947 break;
948 }
949 }
950
951 if (m_bDragged)
952 {
953 if (m_fAutoHide)
954 {
956 }
957 else
958 {
959 APPBARDATA abd = { sizeof(abd) };
960 abd.hWnd = hwnd;
962 }
963 }
964
966 }
void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags)
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890

Referenced by WindowProcDx().

◆ OnMouseMove()

void Window::OnMouseMove ( HWND  hwnd,
int  x,
int  y,
UINT  keyFlags 
)
inlineprotected

Definition at line 835 of file SHAppBarMessage.cpp.

836 {
837 if (!m_fMoving)
838 return;
839
840 POINT pt;
844 {
846 }
847
848 INT cxScreen = GetSystemMetrics(SM_CXSCREEN);
849 INT cyScreen = GetSystemMetrics(SM_CYSCREEN);
850
851 DWORD dx, dy;
852 UINT ix, iy;
853 if (pt.x < cxScreen / 2)
854 {
855 dx = pt.x;
856 ix = ABE_LEFT;
857 }
858 else
859 {
860 dx = cxScreen - pt.x;
861 ix = ABE_RIGHT;
862 }
863
864 if (pt.y < cyScreen / 2)
865 {
866 dy = pt.y;
867 iy = ABE_TOP;
868 }
869 else
870 {
871 dy = cyScreen - pt.y;
872 iy = ABE_BOTTOM;
873 }
874
875 if (cxScreen * dy > cyScreen * dx)
876 {
877 m_rcDrag.top = 0;
878 m_rcDrag.bottom = cyScreen;
879 if (ix == ABE_LEFT)
880 {
882 m_rcDrag.left = 0;
884 }
885 else
886 {
888 m_rcDrag.right = cxScreen;
890 }
891 }
892 else
893 {
894 m_rcDrag.left = 0;
895 m_rcDrag.right = cxScreen;
896 if (iy == ABE_TOP)
897 {
899 m_rcDrag.top = 0;
901 }
902 else
903 {
905 m_rcDrag.bottom = cyScreen;
907 }
908 }
909
911
912 if (m_bDragged)
913 {
917 TRUE);
918 }
919 }
_Check_return_ long __cdecl labs(_In_ long x)
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97
unsigned int UINT
Definition: ndis.h:50
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
int iy
Definition: tritemp.h:491
#define SM_CXDRAG
Definition: winuser.h:1039
#define SM_CYDRAG
Definition: winuser.h:1040

Referenced by OnLButtonUp(), and WindowProcDx().

◆ OnMove()

void Window::OnMove ( HWND  hwnd,
int  x,
int  y 
)
inlineprotected

Definition at line 746 of file SHAppBarMessage.cpp.

747 {
748 if (m_fMoving || m_fAutoHide)
749 return;
750
751 if (!m_fHiding)
753 }
void AppBar_Size(HWND hwnd)

Referenced by WindowProcDx().

◆ OnNCDestroy()

void Window::OnNCDestroy ( HWND  hwnd)
inlineprotected

Definition at line 755 of file SHAppBarMessage.cpp.

756 {
758
759 m_hwnd = NULL;
761 delete this;
762 }
BOOL AppBar_UnRegister(HWND hwnd)

Referenced by WindowProcDx().

◆ OnNCHitTest()

UINT Window::OnNCHitTest ( HWND  hwnd,
int  x,
int  y 
)
inlineprotected

Definition at line 806 of file SHAppBarMessage.cpp.

807 {
809
811
812 if (m_uSide == ABE_TOP && uHitTest == HTBOTTOM)
813 return HTBOTTOM;
814
815 if (m_uSide == ABE_BOTTOM && uHitTest == HTTOP)
816 return HTTOP;
817
818 if (m_uSide == ABE_LEFT && uHitTest == HTRIGHT)
819 return HTRIGHT;
820
821 if (m_uSide == ABE_RIGHT && uHitTest == HTLEFT)
822 return HTLEFT;
823
824 return HTCLIENT;
825 }
#define DefWindowProc
Definition: ros2win.h:31
void AppBar_SetAutoUnhideTimer(HWND hwnd)
#define FORWARD_WM_NCHITTEST(hwnd, x, y, fn)
Definition: windowsx.h:191
#define HTBOTTOM
Definition: winuser.h:2504
#define HTRIGHT
Definition: winuser.h:2500
#define HTCLIENT
Definition: winuser.h:2486
#define HTTOP
Definition: winuser.h:2501
#define HTLEFT
Definition: winuser.h:2498

Referenced by WindowProcDx().

◆ OnPaint()

void Window::OnPaint ( HWND  hwnd)
inlineprotected

Definition at line 282 of file SHAppBarMessage.cpp.

283 {
284 PAINTSTRUCT ps;
285
286 TCHAR szText[64];
287 GetWindowText(hwnd, szText, 64);
288
289 RECT rc;
290 GetClientRect(hwnd, &rc);
291
292 if (HDC hdc = BeginPaint(hwnd, &ps))
293 {
294 DrawText(hdc, szText, -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
295 EndPaint(hwnd, &ps);
296 }
297 }
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
#define DT_CENTER
Definition: winuser.h:527
#define DT_SINGLELINE
Definition: winuser.h:540
#define DrawText
Definition: winuser.h:5791
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define GetWindowText
Definition: winuser.h:5818
#define DT_VCENTER
Definition: winuser.h:543
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
char TCHAR
Definition: xmlstorage.h:189

Referenced by WindowProcDx().

◆ OnRButtonDown()

void Window::OnRButtonDown ( HWND  hwnd,
BOOL  fDoubleClick,
int  x,
int  y,
UINT  keyFlags 
)
inlineprotected

Definition at line 299 of file SHAppBarMessage.cpp.

Referenced by WindowProcDx().

◆ OnSize()

void Window::OnSize ( HWND  hwnd,
UINT  state,
int  cx,
int  cy 
)
inlineprotected

Definition at line 718 of file SHAppBarMessage.cpp.

719 {
720 RECT rcWindow;
721
722 if (m_fMoving || (m_fAutoHide && m_fHiding))
723 return;
724
725 if (!m_fHiding)
726 {
727 if (!m_fAutoHide)
729
730 GetWindowRect(hwnd, &rcWindow);
731 m_rcAppBar = rcWindow;
732
733 if (m_uSide == ABE_TOP || m_uSide == ABE_BOTTOM)
734 {
735 m_cyHeight = m_cySave = rcWindow.bottom - rcWindow.top;
736 }
737 else
738 {
739 m_cxWidth = m_cxSave = rcWindow.right - rcWindow.left;
740 }
741 }
742
744 }
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)

Referenced by WindowProcDx().

◆ OnTimer()

void Window::OnTimer ( HWND  hwnd,
UINT  id 
)
inlineprotected

Definition at line 764 of file SHAppBarMessage.cpp.

765 {
766 POINT pt;
767 RECT rc;
768 HWND hwndActive;
769
770 switch (id)
771 {
772 case IDT_AUTOHIDE:
773 if (m_fAutoHide && !m_fHiding && !m_fMoving)
774 {
776 GetWindowRect(hwnd, &rc);
777 hwndActive = GetForegroundWindow();
778
779 if (!PtInRect(&rc, pt) &&
780 hwndActive != hwnd &&
781 hwndActive != NULL &&
782 GetWindowOwner(hwndActive) != hwnd)
783 {
784 KillTimer(hwnd, id);
786 }
787 }
788 break;
789
790 case IDT_AUTOUNHIDE:
791 KillTimer(hwnd, id);
792
793 if (m_fAutoHide && m_fHiding)
794 {
796 GetWindowRect(hwnd, &rc);
797 if (PtInRect(&rc, pt))
798 {
800 }
801 }
802 break;
803 }
804 }
#define GetWindowOwner(hwnd)
Definition: windowsx.h:314
HWND WINAPI GetForegroundWindow(void)
Definition: ntwrapper.h:392
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)

Referenced by WindowProcDx().

◆ OnWindowPosChanged()

void Window::OnWindowPosChanged ( HWND  hwnd,
const LPWINDOWPOS  lpwpos 
)
inlineprotected

Definition at line 709 of file SHAppBarMessage.cpp.

710 {
711 APPBARDATA abd = { sizeof(abd) };
712 abd.hWnd = hwnd;
714
716 }
#define ABM_WINDOWPOSCHANGED
Definition: shellapi.h:71
#define FORWARD_WM_WINDOWPOSCHANGED(hwnd, lpwpos, fn)
Definition: windowsx.h:240

Referenced by WindowProcDx().

◆ PostParent()

LRESULT Window::PostParent ( UINT  nmsg,
WPARAM  wparam = 0,
LPARAM  lparam = 0 
)

Definition at line 667 of file window.cpp.

668{
669 HWND parent = GetParent(_hwnd);
670
671 if (!parent)
672 return 0;
673
674 return PostMessage(parent, nmsg, wparam, lparam);
675}
r parent
Definition: btrfs.c:3010
HWND WINAPI GetParent(_In_ HWND)

Referenced by PostParent(), and StartMenuButton::WndProc().

◆ pretranslate_msg()

BOOL Window::pretranslate_msg ( LPMSG  pmsg)
static

Definition at line 589 of file window.cpp.

590{
591 if ((pmsg->message != WM_KEYDOWN) &&
592 (pmsg->message != WM_SYSKEYDOWN) &&
593 (pmsg->message != WM_SYSCHAR) &&
594 (pmsg->message != WM_CHAR))
595 {
596 return FALSE;
597 }
598
599 for(WindowSet::const_iterator it=Window::s_pretranslate_windows.begin(); it!=s_pretranslate_windows.end(); ++it)
600 if (SendMessage(*it, PM_TRANSLATE_MSG, 0, (LPARAM)pmsg))
601 return TRUE;
602
603 return FALSE;
604}
#define PM_TRANSLATE_MSG
Definition: window.h:266
static WindowSet s_pretranslate_windows
Definition: window.h:137
UINT message
Definition: winuser.h:3126
#define WM_SYSCHAR
Definition: winuser.h:1732
#define WM_CHAR
Definition: winuser.h:1728
#define WM_KEYDOWN
Definition: winuser.h:1726
#define WM_SYSKEYDOWN
Definition: winuser.h:1730

Referenced by MessageLoop(), pretranslate_msg(), and StartMenuRoot::TrackStartmenu().

◆ PropSheetCBTHookProc()

LRESULT CALLBACK Window::PropSheetCBTHookProc ( int  code,
WPARAM  wparam,
LPARAM  lparam 
)
staticprotected

Definition at line 185 of file window.cpp.

186{
187 if (code == HCBT_CREATEWND) {
188 HWND hwnd = (HWND)wparam;
189
190 // create Window controller and associate it with the window handle
192
193 if (!child)
195 }
196
198}

Referenced by PropSheetCBTHookProc().

◆ register_dialog()

void Window::register_dialog ( HWND  hwnd)
static

Definition at line 609 of file window.cpp.

610{
612}
pair< iterator, bool > insert(const value_type &__x)
Definition: _set.h:168

Referenced by Dialog::Dialog(), DialogWindow::DialogWindow(), and register_dialog().

◆ register_pretranslate()

void Window::register_pretranslate ( HWND  hwnd)
static

◆ SendParent()

LRESULT Window::SendParent ( UINT  nmsg,
WPARAM  wparam = 0,
LPARAM  lparam = 0 
)

Definition at line 657 of file window.cpp.

658{
659 HWND parent = GetParent(_hwnd);
660
661 if (!parent)
662 return 0;
663
664 return SendMessage(parent, nmsg, wparam, lparam);
665}

Referenced by StartMenu::CloseStartMenu(), NotifyArea::Command(), SendParent(), StartMenuButton::WndProc(), StartMenu::WndProc(), EditController::WndProc(), and StartMenu::~StartMenu().

◆ unregister_dialog()

void Window::unregister_dialog ( HWND  hwnd)
static

Definition at line 614 of file window.cpp.

615{
617}
void erase(iterator __pos)
Definition: _set.h:182

Referenced by unregister_dialog(), Dialog::~Dialog(), and DialogWindow::~DialogWindow().

◆ unregister_pretranslate()

void Window::unregister_pretranslate ( HWND  hwnd)
static

◆ WindowProc()

static LRESULT CALLBACK Window::WindowProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinestatic

Definition at line 230 of file SHAppBarMessage.cpp.

231 {
232 Window *this_ = GetAppbarData(hwnd);
233 if (uMsg == WM_CREATE)
234 {
236 this_ = (Window *)pCS->lpCreateParams;
238 }
239 if (this_)
240 return this_->WindowProcDx(hwnd, uMsg, wParam, lParam);
241 return DefWindowProc(hwnd, uMsg, wParam, lParam);
242 }
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
static Window * GetAppbarData(HWND hwnd)
virtual LRESULT CALLBACK WindowProcDx(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
LPVOID lpCreateParams
Definition: winuser.h:2951
CREATESTRUCTA * LPCREATESTRUCT
Definition: winuser.h:5746
#define WM_CREATE
Definition: winuser.h:1619

Referenced by DoRegisterClass().

◆ WindowProcDx()

virtual LRESULT CALLBACK Window::WindowProcDx ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
inlinevirtual

Definition at line 196 of file SHAppBarMessage.cpp.

197 {
198#ifdef VERBOSE
199 MD_msgdump(hwnd, uMsg, wParam, lParam);
200#endif
201 switch (uMsg)
202 {
218
219 case APPBAR_CALLBACK:
221 break;
222
223 default:
224 return DefWindowProc(hwnd, uMsg, wParam, lParam);
225 }
226 return 0;
227 }
static __inline LRESULT MSGDUMP_API MD_msgdump(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: msgdump.h:4655
void OnSize(HWND hwnd, UINT state, int cx, int cy)
void OnTimer(HWND hwnd, UINT id)
UINT OnNCHitTest(HWND hwnd, int x, int y)
void OnMove(HWND hwnd, int x, int y)
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
void OnLButtonUp(HWND hwnd, int x, int y, UINT keyFlags)
void OnAppBarCallback(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
void OnNCDestroy(HWND hwnd)
void OnRButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
void OnWindowPosChanged(HWND hwnd, const LPWINDOWPOS lpwpos)
void OnPaint(HWND hwnd)
void OnActivate(HWND hwnd, UINT state, HWND hwndActDeact, BOOL fMinimized)
void OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
void OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
#define HANDLE_MSG(hwnd, message, fn)
Definition: windowsx.h:322
#define WM_PAINT
Definition: winuser.h:1631
#define WM_SIZE
Definition: winuser.h:1622
#define WM_NCHITTEST
Definition: winuser.h:1697
#define WM_MOUSEMOVE
Definition: winuser.h:1786
#define WM_LBUTTONDOWN
Definition: winuser.h:1787
#define WM_ACTIVATE
Definition: winuser.h:1623
#define WM_RBUTTONDOWN
Definition: winuser.h:1790
#define WM_TIMER
Definition: winuser.h:1753
#define WM_LBUTTONUP
Definition: winuser.h:1788
#define WM_MOVE
Definition: winuser.h:1621
#define WM_WINDOWPOSCHANGED
Definition: winuser.h:1673

Referenced by WindowProc().

◆ WindowWndProc()

LRESULT CALLBACK Window::WindowWndProc ( HWND  hwnd,
UINT  nmsg,
WPARAM  wparam,
LPARAM  lparam 
)
static

Definition at line 247 of file window.cpp.

248{
249 Window* pThis = get_window(hwnd);
250
251 if (!pThis)
252 pThis = create_controller(hwnd);
253
254 if (pThis) {
255 switch(nmsg) {
256 case WM_COMMAND:
257 return pThis->Command(LOWORD(wparam), HIWORD(wparam));
258
259 case WM_NOTIFY:
260 return pThis->Notify(wparam, (NMHDR*)lparam);
261
262 case WM_NOTIFYFORMAT:
263 return NFR_CURRENT;
264
265 case WM_CREATE:
266 return pThis->Init((LPCREATESTRUCT)lparam);
267
268 case WM_NCDESTROY:
269 delete pThis;
270 return 0;
271
272 default:
273 return pThis->WndProc(nmsg, wparam, lparam);
274 }
275 }
276 else
277 return DefWindowProc(hwnd, nmsg, wparam, lparam);
278}

Referenced by WindowWndProc().

◆ WndProc()

Member Data Documentation

◆ IAccessible_iface

IAccessible Window::IAccessible_iface

Definition at line 29 of file window.c.

◆ IEnumVARIANT_iface

IEnumVARIANT Window::IEnumVARIANT_iface

Definition at line 31 of file window.c.

◆ IOleWindow_iface

IOleWindow Window::IOleWindow_iface

Definition at line 30 of file window.c.

◆ m_bDragged

BOOL Window::m_bDragged
protected

Definition at line 256 of file SHAppBarMessage.cpp.

Referenced by OnCreate(), OnLButtonDown(), OnLButtonUp(), and OnMouseMove().

◆ m_cxSave

LONG Window::m_cxSave
protected

◆ m_cxWidth

LONG Window::m_cxWidth
protected

◆ m_cyHeight

LONG Window::m_cyHeight
protected

◆ m_cySave

LONG Window::m_cySave
protected

◆ m_fAppBarRegd

BOOL Window::m_fAppBarRegd
protected

Definition at line 254 of file SHAppBarMessage.cpp.

Referenced by AppBar_Register(), AppBar_Size(), AppBar_UnRegister(), and OnCreate().

◆ m_fAutoHide

◆ m_fHiding

BOOL Window::m_fHiding
protected

◆ m_fMoving

BOOL Window::m_fMoving
protected

◆ m_fOnTop

BOOL Window::m_fOnTop
protected

Definition at line 247 of file SHAppBarMessage.cpp.

Referenced by AppBar_SetAlwaysOnTop(), OnAppBarCallback(), and OnCreate().

◆ m_hwnd

HWND Window::m_hwnd
protected

Definition at line 245 of file SHAppBarMessage.cpp.

Referenced by OnCreate(), and OnNCDestroy().

◆ m_ptDragOn

POINT Window::m_ptDragOn
protected

Definition at line 257 of file SHAppBarMessage.cpp.

Referenced by OnLButtonDown(), and OnMouseMove().

◆ m_rcAppBar

RECT Window::m_rcAppBar
protected

◆ m_rcDrag

RECT Window::m_rcDrag
protected

Definition at line 259 of file SHAppBarMessage.cpp.

Referenced by OnLButtonUp(), and OnMouseMove().

◆ m_uSide

◆ ref

LONG Window::ref

Definition at line 33 of file window.c.

◆ s_dialogs

WindowSet Window::s_dialogs
staticprotected

Definition at line 138 of file window.h.

Referenced by dispatch_dialog_msg(), register_dialog(), and unregister_dialog().

◆ s_hcbtHook

HHOOK Window::s_hcbtHook = 0
staticprotected

Definition at line 133 of file window.h.

Referenced by create_mdi_child(), MDICBTHookProc(), and PropSheetCBTHookProc().

◆ s_new_info

const void * Window::s_new_info = NULL
staticprotected

Definition at line 119 of file window.h.

Referenced by Create(), create_controller(), create_mdi_child(), and Dialog::DoModal().

◆ s_pretranslate_windows

WindowSet Window::s_pretranslate_windows
staticprotected

Definition at line 137 of file window.h.

Referenced by pretranslate_msg(), register_pretranslate(), and unregister_pretranslate().

◆ s_window_creator

Window::CREATORFUNC Window::s_window_creator = NULL
staticprotected

Definition at line 120 of file window.h.

Referenced by Create(), create_controller(), create_mdi_child(), and Dialog::DoModal().

◆ s_wnd_map

Window::WindowMap Window::s_wnd_map
staticprotected

Definition at line 117 of file window.h.

Referenced by get_window(), Window(), and ~Window().


The documentation for this class was generated from the following files: