Release 950319
[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 typedef struct tagWND
25 {
26     HWND         hwndNext;       /* Next sibling */
27     HWND         hwndChild;      /* First child */
28     DWORD        dwMagic;        /* Magic number (must be WND_MAGIC) */
29     HWND         hwndParent;     /* Window parent (from CreateWindow) */
30     HWND         hwndOwner;      /* Window owner */
31     HCLASS       hClass;         /* Window class */
32     HANDLE       hInstance;      /* Window hInstance (from CreateWindow) */
33     RECT         rectClient;     /* Client area rel. to parent client area */
34     RECT         rectWindow;     /* Whole window rel. to parent client area */
35     RECT         rectNormal;     /* Window rect. when in normal state */
36     POINT        ptIconPos;      /* Icon position */
37     POINT        ptMaxPos;       /* Maximized window position */
38     HANDLE       hmemTaskQ;      /* Task queue global memory handle */
39     HRGN         hrgnUpdate;     /* Update region */
40     HWND         hwndPrevActive; /* Previous active top-level window */
41     HWND         hwndLastActive; /* Last active popup hwnd */
42     WNDPROC      lpfnWndProc;    /* Window procedure */
43     DWORD        dwStyle;        /* Window style (from CreateWindow) */
44     DWORD        dwExStyle;      /* Extended style (from CreateWindowEx) */
45     HANDLE       hdce;           /* Window DCE (if CS_OWNDC or CS_CLASSDC) */
46     HANDLE       hVScroll;       /* Vertical scroll-bar info */
47     HANDLE       hHScroll;       /* Horizontal scroll-bar info */
48     WORD         wIDmenu;        /* ID or hmenu (from CreateWindow) */
49     HANDLE       hText;          /* Handle of window text */
50     WORD         flags;          /* Misc. flags (see below) */
51     Window       window;         /* X window (only for top-level windows) */
52     HMENU        hSysMenu;       /* window's copy of System Menu */
53     HANDLE       hProp;          /* Handle of Properties List */
54     HTASK        hTask;          /* Task Handle of the owner */
55     WORD         wExtra[1];      /* Window extra bytes */
56 } WND;
57
58   /* WND flags values */
59 #define WIN_NEEDS_BEGINPAINT    0x01  /* WM_PAINT sent to window */
60 #define WIN_NEEDS_ERASEBKGND    0x02  /* WM_ERASEBKGND must be sent to window*/
61 #define WIN_NEEDS_NCPAINT       0x04  /* WM_NCPAINT must be sent to window */
62 #define WIN_RESTORE_MAX         0x08  /* Maximize when restoring */
63 #define WIN_INTERNAL_PAINT      0x10  /* Internal WM_PAINT message pending */
64 #define WIN_NO_REDRAW           0x20  /* WM_SETREDRAW called for this window */
65 #define WIN_GOT_SIZEMSG         0x40  /* WM_SIZE has been sent to the window */
66
67 #define WIN_CLASS_INFO(wndPtr)   (CLASS_FindClassPtr((wndPtr)->hClass)->wc)
68 #define WIN_CLASS_STYLE(wndPtr)  (WIN_CLASS_INFO(wndPtr).style)
69
70   /* Window functions */
71 extern WND *WIN_FindWndPtr( HWND hwnd );
72 extern Window WIN_GetXWindow( HWND hwnd );
73 extern BOOL WIN_UnlinkWindow( HWND hwnd );
74 extern BOOL WIN_LinkWindow( HWND hwnd, HWND hwndInsertAfter );
75 extern HWND WIN_FindWinToRepaint( HWND hwnd );
76 extern void WIN_SendParentNotify( HWND hwnd, WORD event, LONG lParam );
77 extern BOOL WIN_CreateDesktopWindow(void);
78
79 extern Display * display;
80 extern Screen * screen;
81 extern Window rootWindow;
82
83 #endif  /* WIN_H */