Release 951212
[wine] / include / win.h
1 /*
2  * Window definitions
3  *
4  * Copyright 1993 Alexandre Julliard
5  */
6
7 #ifndef WIN_H
8 #define WIN_H
9
10 #include <X11/Xlib.h>
11
12 #include "ldt.h"
13 #include "class.h"
14
15 #define WND_MAGIC     0x444e4957  /* 'WIND' */
16
17   /* Built-in class names (see _Undocumented_Windows_ p.418) */
18 #define POPUPMENU_CLASS_NAME "#32768"  /* PopupMenu */
19 #define DESKTOP_CLASS_NAME   "#32769"  /* Desktop */
20 #define DIALOG_CLASS_NAME    "#32770"  /* Dialog */
21 #define WINSWITCH_CLASS_NAME "#32771"  /* WinSwitch */
22 #define ICONTITLE_CLASS_NAME "#32772"  /* IconTitle */
23
24 #define POPUPMENU_CLASS_ATOM MAKEINTATOM(32768)  /* PopupMenu */
25 #define DESKTOP_CLASS_ATOM   MAKEINTATOM(32769)  /* Desktop */
26 #define DIALOG_CLASS_ATOM    MAKEINTATOM(32770)  /* Dialog */
27 #define WINSWITCH_CLASS_ATOM MAKEINTATOM(32771)  /* WinSwitch */
28 #define ICONTITLE_CLASS_ATOM MAKEINTATOM(32772)  /* IconTitle */
29
30 typedef struct tagWND
31 {
32     HWND         hwndNext;       /* Next sibling */
33     HWND         hwndChild;      /* First child */
34     DWORD        dwMagic;        /* Magic number (must be WND_MAGIC) */
35     HWND         hwndParent;     /* Window parent (from CreateWindow) */
36     HWND         hwndOwner;      /* Window owner */
37     HCLASS       hClass;         /* Window class */
38     HANDLE       hInstance;      /* Window hInstance (from CreateWindow) */
39     RECT         rectClient;     /* Client area rel. to parent client area */
40     RECT         rectWindow;     /* Whole window rel. to parent client area */
41     RECT         rectNormal;     /* Window rect. when in normal state */
42     POINT        ptIconPos;      /* Icon position */
43     POINT        ptMaxPos;       /* Maximized window position */
44     HGLOBAL      hmemTaskQ;      /* Task queue global memory handle */
45     HRGN         hrgnUpdate;     /* Update region */
46     HWND         hwndLastActive; /* Last active popup hwnd */
47     WNDPROC      lpfnWndProc;    /* Window procedure */
48     DWORD        dwStyle;        /* Window style (from CreateWindow) */
49     DWORD        dwExStyle;      /* Extended style (from CreateWindowEx) */
50     HANDLE       hdce;           /* Window DCE (if CS_OWNDC or CS_CLASSDC) */
51     HANDLE       hVScroll;       /* Vertical scroll-bar info */
52     HANDLE       hHScroll;       /* Horizontal scroll-bar info */
53     UINT         wIDmenu;        /* ID or hmenu (from CreateWindow) */
54     HANDLE       hText;          /* Handle of window text */
55     WORD         flags;          /* Misc. flags (see below) */
56     Window       window;         /* X window (only for top-level windows) */
57     HMENU        hSysMenu;       /* window's copy of System Menu */
58     HANDLE       hProp;          /* Handle of Properties List */
59     WORD         wExtra[1];      /* Window extra bytes */
60 } WND;
61
62   /* WND flags values */
63 #define WIN_NEEDS_BEGINPAINT    0x01  /* WM_PAINT sent to window */
64 #define WIN_NEEDS_ERASEBKGND    0x02  /* WM_ERASEBKGND must be sent to window*/
65 #define WIN_NEEDS_NCPAINT       0x04  /* WM_NCPAINT must be sent to window */
66 #define WIN_RESTORE_MAX         0x08  /* Maximize when restoring */
67 #define WIN_INTERNAL_PAINT      0x10  /* Internal WM_PAINT message pending */
68 #define WIN_NO_REDRAW           0x20  /* WM_SETREDRAW called for this window */
69 #define WIN_GOT_SIZEMSG         0x40  /* WM_SIZE has been sent to the window */
70 #define WIN_NCACTIVATED         0x80  /* last WM_NCACTIVATE was positive */
71
72 #define WIN_CLASS_INFO(wndPtr)   (CLASS_FindClassPtr((wndPtr)->hClass)->wc)
73 #define WIN_CLASS_STYLE(wndPtr)  (WIN_CLASS_INFO(wndPtr).style)
74
75   /* Window functions */
76 extern WND *WIN_FindWndPtr( HWND hwnd );
77 extern Window WIN_GetXWindow( HWND hwnd );
78 extern BOOL WIN_UnlinkWindow( HWND hwnd );
79 extern BOOL WIN_LinkWindow( HWND hwnd, HWND hwndInsertAfter );
80 extern HWND WIN_FindWinToRepaint( HWND hwnd );
81 extern void WIN_SendParentNotify( HWND hwnd, WORD event,
82                                   WORD idChild, LONG lValue );
83 extern BOOL WIN_CreateDesktopWindow(void);
84 extern HWND WIN_GetTopParent( HWND hwnd );
85 extern HINSTANCE WIN_GetWindowInstance( HWND hwnd );
86
87 extern Display * display;
88 extern Screen * screen;
89 extern Window rootWindow;
90
91 #endif  /* WIN_H */