comparison src/console-msw.h @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 8de8e3f6228a
children 39ccc7dd8077
comparison
equal deleted inserted replaced
441:72a7cfa4a488 442:abe6d1db359e
31 31
32 #ifndef INCLUDED_console_msw_h_ 32 #ifndef INCLUDED_console_msw_h_
33 #define INCLUDED_console_msw_h_ 33 #define INCLUDED_console_msw_h_
34 34
35 #include "console.h" 35 #include "console.h"
36 #ifdef CONST /* I suspect this is safe */ 36 #include "syswindows.h"
37 #undef CONST 37 #include "syscommctrl.h"
38 #endif
39 #include <windows.h>
40 #include <ddeml.h> /* DDE management library */
41 #if !defined(__CYGWIN32__) && !defined(__MINGW32__) \
42 || CYGWIN_VERSION_DLL_MAJOR > 20
43 #include <shellapi.h> /* FileManager/Explorer drag and drop */
44 #include <commctrl.h>
45 #endif
46 38
47 #ifdef HAVE_XPM 39 #ifdef HAVE_XPM
48 #include <X11/xpm.h> 40 #include <X11/xpm.h>
49 #endif 41 #endif
50 42
51 /*
52 * XXX FIXME: The following X modifier defs in events-mod.h clash with win32
53 * hotkey defs in winuser.h. For the moment lose the win32 versions.
54 * Maybe we should rename all of MOD_* to something that doesn't clash.
55 */
56 #ifdef MOD_CONTROL
57 # undef MOD_CONTROL
58 #endif
59 #ifdef MOD_ALT
60 # undef MOD_ALT
61 #endif
62 #ifdef MOD_SHIFT
63 # undef MOD_SHIFT
64 #endif
65
66
67 /* The name of the main window class */ 43 /* The name of the main window class */
68 #define XEMACS_CLASS "XEmacs" 44 #define XEMACS_CLASS "XEmacs"
69 45
70 #define XEMACS_CONTROL_CLASS "XEmacsControl" 46 #define XEMACS_CONTROL_CLASS "XEmacsControl"
71 47
72 /* 48 /*
73 * Console 49 * Consoles
74 */ 50 */
75 51
76 DECLARE_CONSOLE_TYPE (mswindows); 52 DECLARE_CONSOLE_TYPE (mswindows);
77 53
78 struct mswindows_console 54 struct mswindows_console
81 }; 57 };
82 58
83 DECLARE_CONSOLE_TYPE (msprinter); 59 DECLARE_CONSOLE_TYPE (msprinter);
84 60
85 /* 61 /*
86 * Device 62 * Printer settings, aka devmode
63 */
64
65 typedef struct Lisp_Devmode
66 {
67 struct lcrecord_header header;
68
69 /* Pointer to the DEVMODE structure */
70 DEVMODE* devmode;
71
72 /* Full printer name. It can be longer than devmode->dmDeviceName
73 can accommodate, so need to keep it separately */
74 char* printer_name;
75
76 /* Printer device this object is currently selected in, or Qnil
77 if not selected */
78 Lisp_Object device;
79
80 } Lisp_Devmode;
81
82
83 DECLARE_LRECORD (devmode, Lisp_Devmode);
84 #define XDEVMODE(x) XRECORD (x, devmode, Lisp_Devmode)
85 #define XSETDEVMODE(x, p) XSETRECORD (x, p, devmode)
86 #define DEVMODEP(x) RECORDP (x, devmode)
87 #define CHECK_DEVMODE(x) CHECK_RECORD (x, devmode)
88 #define CONCHECK_DEVMODE(x) CONCHECK_RECORD (x, devmode)
89
90 #define DEVMODE_SIZE(dm) ((dm)->dmSize + (dm)->dmDriverExtra)
91 #define XDEVMODE_SIZE(x) ((x)->devmode ? DEVMODE_SIZE((x)->devmode) : 0)
92
93 /*
94 * Devices
87 */ 95 */
88 96
89 #define MSW_FONTSIZE (LF_FACESIZE*4+12) 97 #define MSW_FONTSIZE (LF_FACESIZE*4+12)
90 98
91 struct mswindows_device 99 struct mswindows_device
92 { 100 {
93 int logpixelsx, logpixelsy;
94 int planes, cells;
95 int horzres, vertres; /* Size in pixels */
96 int horzsize, vertsize; /* Size in mm */
97 int bitspixel;
98 Lisp_Object fontlist; /* List of strings, device fonts */ 101 Lisp_Object fontlist; /* List of strings, device fonts */
102 HDC hcdc; /* Compatible DC */
103 DWORD update_tick; /* Used when device is modified through
104 Windows messages, see WM_DISPLAYCHANGE
105 in event-msw.c */
99 }; 106 };
100 107
101 #define DEVICE_MSWINDOWS_DATA(d) DEVICE_TYPE_DATA (d, mswindows) 108 #define DEVICE_MSWINDOWS_DATA(d) DEVICE_TYPE_DATA (d, mswindows)
102 #define DEVICE_MSWINDOWS_LOGPIXELSX(d) (DEVICE_MSWINDOWS_DATA (d)->logpixelsx) 109 #define DEVICE_MSWINDOWS_FONTLIST(d) (DEVICE_MSWINDOWS_DATA (d)->fontlist)
103 #define DEVICE_MSWINDOWS_LOGPIXELSY(d) (DEVICE_MSWINDOWS_DATA (d)->logpixelsy) 110 #define DEVICE_MSWINDOWS_HCDC(d) (DEVICE_MSWINDOWS_DATA (d)->hcdc)
104 #define DEVICE_MSWINDOWS_PLANES(d) (DEVICE_MSWINDOWS_DATA (d)->planes) 111 #define DEVICE_MSWINDOWS_UPDATE_TICK(d) (DEVICE_MSWINDOWS_DATA (d)->update_tick)
105 #define DEVICE_MSWINDOWS_CELLS(d) (DEVICE_MSWINDOWS_DATA (d)->cells)
106 #define DEVICE_MSWINDOWS_HORZRES(d) (DEVICE_MSWINDOWS_DATA (d)->horzres)
107 #define DEVICE_MSWINDOWS_VERTRES(d) (DEVICE_MSWINDOWS_DATA (d)->vertres)
108 #define DEVICE_MSWINDOWS_HORZSIZE(d) (DEVICE_MSWINDOWS_DATA (d)->horzsize)
109 #define DEVICE_MSWINDOWS_VERTSIZE(d) (DEVICE_MSWINDOWS_DATA (d)->vertsize)
110 #define DEVICE_MSWINDOWS_BITSPIXEL(d) (DEVICE_MSWINDOWS_DATA (d)->bitspixel)
111 #define DEVICE_MSWINDOWS_FONTLIST(d) (DEVICE_MSWINDOWS_DATA (d)->fontlist)
112 112
113 struct msprinter_device 113 struct msprinter_device
114 { 114 {
115 HDC hdc; 115 HDC hdc, hcdc; /* Printer and the comp. DCs */
116 HANDLE hprinter; 116 HANDLE hprinter;
117 char* name;
118 Lisp_Object devmode;
117 Lisp_Object fontlist; 119 Lisp_Object fontlist;
118 char* name;
119 DEVMODE *devmode, *devmode_mirror;
120 size_t devmode_size;
121 }; 120 };
122 121
123 #define DEVICE_MSPRINTER_DATA(d) DEVICE_TYPE_DATA (d, msprinter) 122 #define DEVICE_MSPRINTER_DATA(d) DEVICE_TYPE_DATA (d, msprinter)
124 #define DEVICE_MSPRINTER_HDC(d) (DEVICE_MSPRINTER_DATA (d)->hdc) 123 #define DEVICE_MSPRINTER_HDC(d) (DEVICE_MSPRINTER_DATA (d)->hdc)
124 #define DEVICE_MSPRINTER_HCDC(d) (DEVICE_MSPRINTER_DATA (d)->hcdc)
125 #define DEVICE_MSPRINTER_HPRINTER(d) (DEVICE_MSPRINTER_DATA (d)->hprinter) 125 #define DEVICE_MSPRINTER_HPRINTER(d) (DEVICE_MSPRINTER_DATA (d)->hprinter)
126 #define DEVICE_MSPRINTER_FONTLIST(d) (DEVICE_MSPRINTER_DATA (d)->fontlist) 126 #define DEVICE_MSPRINTER_FONTLIST(d) (DEVICE_MSPRINTER_DATA (d)->fontlist)
127 #define DEVICE_MSPRINTER_NAME(d) (DEVICE_MSPRINTER_DATA (d)->name) 127 #define DEVICE_MSPRINTER_NAME(d) (DEVICE_MSPRINTER_DATA (d)->name)
128 #define DEVICE_MSPRINTER_DEVMODE(d) (DEVICE_MSPRINTER_DATA (d)->devmode) 128 #define DEVICE_MSPRINTER_DEVMODE(d) (DEVICE_MSPRINTER_DATA (d)->devmode)
129 #define DEVICE_MSPRINTER_DEVMODE_MIRROR(d) \
130 (DEVICE_MSPRINTER_DATA (d)->devmode_mirror)
131 #define DEVICE_MSPRINTER_DEVMODE_SIZE(d) \
132 (DEVICE_MSPRINTER_DATA (d)->devmode_size)
133 129
134 #define CONSOLE_TYPESYM_MSPRINTER_P(typesym) EQ (typesym, Qmsprinter) 130 #define CONSOLE_TYPESYM_MSPRINTER_P(typesym) EQ (typesym, Qmsprinter)
135 #define DEVICE_MSPRINTER_P(dev) CONSOLE_TYPESYM_MSPRINTER_P (DEVICE_TYPE (dev)) 131 #define DEVICE_MSPRINTER_P(dev) CONSOLE_TYPESYM_MSPRINTER_P (DEVICE_TYPE (dev))
136 #define CHECK_MSPRINTER_DEVICE(z) CHECK_DEVICE_TYPE (z, msprinter) 132 #define CHECK_MSPRINTER_DEVICE(z) CHECK_DEVICE_TYPE (z, msprinter)
137 #define CONCHECK_MSPRINTER_DEVICE(z) CONCHECK_DEVICE_TYPE (z, msprinter) 133 #define CONCHECK_MSPRINTER_DEVICE(z) CONCHECK_DEVICE_TYPE (z, msprinter)
138 134
139 /* Printer functions */ 135 /* Printer functions in frame-msw.c */
140 DEVMODE* msprinter_get_devmode_copy (struct device *d); 136 void msprinter_start_page (struct frame *f);
141 void msprinter_apply_devmode (struct device *d, DEVMODE *devmode); 137
142 138 /* Common checks */
143 /* 139
144 * Frame 140 #define DEVICE_MSGDI_P(dev) (DEVICE_MSWINDOWS_P(dev) || DEVICE_MSPRINTER_P(dev))
141 #define CHECK_MSGDI_DEVICE(d) \
142 do { \
143 CHECK_DEVICE (d); \
144 if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \
145 dead_wrong_type_argument \
146 (list3 (Qor, Qmswindows, Qmsprinter), d); \
147 } while (0)
148 #define CONCHECK_MSGDI_DEVICE(d) \
149 do { \
150 CHECK_DEVICE (d); \
151 if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \
152 wrong_type_argument \
153 (list3 (Qor, Qmswindows, Qmsprinter), d); \
154 } while (0)
155
156 /*
157 * Frames
145 */ 158 */
146 typedef struct 159 typedef struct
147 { 160 {
148 int left; 161 int left;
149 int top; 162 int top;
157 HWND hwnd; 170 HWND hwnd;
158 171
159 /* DC for this win32 window */ 172 /* DC for this win32 window */
160 HDC hdc; 173 HDC hdc;
161 174
162 /* compatible DC for bitmap operations */ 175 /* Used with DeferWindowPos */
163 HDC cdc; 176 HDWP hdwp;
164 177
165 /* Time of last click event, for button 2 emul */ 178 /* Time of last click event, for button 2 emul */
166 DWORD last_click_time; 179 DWORD last_click_time;
180
181 /* Mods of last click event */
182 DWORD last_click_mods;
167 183
168 /* Coordinates of last click event, screen-relative */ 184 /* Coordinates of last click event, screen-relative */
169 POINTS last_click_point; 185 POINTS last_click_point;
170 #ifdef HAVE_TOOLBARS 186 #ifdef HAVE_TOOLBARS
171 /* Toolbar hash table. See toolbar-msw.c */ 187 /* Toolbar hash table. See toolbar-msw.c */
178 194
179 /* Menu checksum. See menubar-msw.c */ 195 /* Menu checksum. See menubar-msw.c */
180 unsigned int menu_checksum; 196 unsigned int menu_checksum;
181 197
182 /* Widget glyphs attached to this frame. See glyphs-msw.c */ 198 /* Widget glyphs attached to this frame. See glyphs-msw.c */
183 Lisp_Object widget_hash_table; 199 Lisp_Object widget_hash_table1, widget_hash_table2, widget_hash_table3;
184 200
185 /* Frame title hash value. See frame-msw.c */ 201 /* Frame title hash value. See frame-msw.c */
186 unsigned int title_checksum; 202 unsigned int title_checksum;
187 203
188 /* Real character width and height of the frame. 204 /* Real character width and height of the frame.
194 int button2_need_rbutton : 1; 210 int button2_need_rbutton : 1;
195 int button2_is_down : 1; 211 int button2_is_down : 1;
196 int ignore_next_lbutton_up : 1; 212 int ignore_next_lbutton_up : 1;
197 int ignore_next_rbutton_up : 1; 213 int ignore_next_rbutton_up : 1;
198 int sizing : 1; 214 int sizing : 1;
215 int paint_pending : 1; /* Whether a WM_PAINT magic event has been queued */
216 int popup : 1; /* frame is a popup frame */
199 217
200 /* Geometry, in characters, as specified by proplist during frame 218 /* Geometry, in characters, as specified by proplist during frame
201 creation. Memebers are set to -1 for unspecified */ 219 creation. Members are set to -1 for unspecified */
202 XEMACS_RECT_WH* target_rect; 220 XEMACS_RECT_WH* target_rect;
203 }; 221 };
204 222
205 #define FRAME_MSWINDOWS_DATA(f) FRAME_TYPE_DATA (f, mswindows) 223 #define FRAME_MSWINDOWS_DATA(f) FRAME_TYPE_DATA (f, mswindows)
206 224
207 #define FRAME_MSWINDOWS_HANDLE(f) (FRAME_MSWINDOWS_DATA (f)->hwnd) 225 #define FRAME_MSWINDOWS_HANDLE(f) (FRAME_MSWINDOWS_DATA (f)->hwnd)
208 #define FRAME_MSWINDOWS_DC(f) (FRAME_MSWINDOWS_DATA (f)->hdc) 226 #define FRAME_MSWINDOWS_DC(f) (FRAME_MSWINDOWS_DATA (f)->hdc)
209 #define FRAME_MSWINDOWS_CDC(f) (FRAME_MSWINDOWS_DATA (f)->cdc)
210 #define FRAME_MSWINDOWS_MENU_HASH_TABLE(f) (FRAME_MSWINDOWS_DATA (f)->menu_hash_table) 227 #define FRAME_MSWINDOWS_MENU_HASH_TABLE(f) (FRAME_MSWINDOWS_DATA (f)->menu_hash_table)
211 #define FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) \ 228 #define FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) \
212 (FRAME_MSWINDOWS_DATA (f)->toolbar_hash_table) 229 (FRAME_MSWINDOWS_DATA (f)->toolbar_hash_table)
213 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE(f) \ 230 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE1(f) \
214 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table) 231 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table1)
232 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE2(f) \
233 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table2)
234 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE3(f) \
235 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table3)
215 #define FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos) \ 236 #define FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos) \
216 (FRAME_MSWINDOWS_DATA (f)->toolbar_checksum[pos]) 237 (FRAME_MSWINDOWS_DATA (f)->toolbar_checksum[pos])
217 #define FRAME_MSWINDOWS_MENU_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->menu_checksum) 238 #define FRAME_MSWINDOWS_MENU_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->menu_checksum)
218 #define FRAME_MSWINDOWS_TITLE_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->title_checksum) 239 #define FRAME_MSWINDOWS_TITLE_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->title_checksum)
219 #define FRAME_MSWINDOWS_CHARWIDTH(f) (FRAME_MSWINDOWS_DATA (f)->charwidth) 240 #define FRAME_MSWINDOWS_CHARWIDTH(f) (FRAME_MSWINDOWS_DATA (f)->charwidth)
220 #define FRAME_MSWINDOWS_CHARHEIGHT(f) (FRAME_MSWINDOWS_DATA (f)->charheight) 241 #define FRAME_MSWINDOWS_CHARHEIGHT(f) (FRAME_MSWINDOWS_DATA (f)->charheight)
221 #define FRAME_MSWINDOWS_TARGET_RECT(f) (FRAME_MSWINDOWS_DATA (f)->target_rect) 242 #define FRAME_MSWINDOWS_TARGET_RECT(f) (FRAME_MSWINDOWS_DATA (f)->target_rect)
243 #define FRAME_MSWINDOWS_POPUP(f) (FRAME_MSWINDOWS_DATA (f)->popup)
222 244
223 /* Frame check and validation macros */ 245 /* Frame check and validation macros */
224 #define FRAME_MSWINDOWS_P(frm) CONSOLE_TYPESYM_MSWINDOWS_P (FRAME_TYPE (frm)) 246 #define FRAME_MSWINDOWS_P(frm) CONSOLE_TYPESYM_MSWINDOWS_P (FRAME_TYPE (frm))
225 #define CHECK_MSWINDOWS_FRAME(z) CHECK_FRAME_TYPE (z, mswindows) 247 #define CHECK_MSWINDOWS_FRAME(z) CHECK_FRAME_TYPE (z, mswindows)
226 #define CONCHECK_MSWINDOWS_FRAME(z) CONCHECK_FRAME_TYPE (z, mswindows) 248 #define CONCHECK_MSWINDOWS_FRAME(z) CONCHECK_FRAME_TYPE (z, mswindows)
234 * Printer frame, aka printer job 256 * Printer frame, aka printer job
235 */ 257 */
236 258
237 struct msprinter_frame 259 struct msprinter_frame
238 { 260 {
239 HDC hcdc; /* Compatoble DC */
240 int left_margin, top_margin, /* All in twips */ 261 int left_margin, top_margin, /* All in twips */
241 right_margin, bottom_margin; 262 right_margin, bottom_margin;
242 int charheight, charwidth; /* As per proplist or -1 if not gven */ 263 int charheight, charwidth; /* As per proplist or -1 if not given */
243 Lisp_Object orientation, duplex; /* nil for printer's default */ 264 int pix_left, pix_top; /* Calculated in init_frame_*, VP offset */
244 int job_started : 1; 265 int job_started : 1;
266 int page_started : 1;
245 }; 267 };
246 268
247 #define FRAME_MSPRINTER_DATA(f) FRAME_TYPE_DATA (f, msprinter) 269 #define FRAME_MSPRINTER_DATA(f) FRAME_TYPE_DATA (f, msprinter)
248 #define FRAME_MSPRINTER_LEFT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->left_margin) 270 #define FRAME_MSPRINTER_LEFT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->left_margin)
249 #define FRAME_MSPRINTER_RIGHT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->top_margin) 271 #define FRAME_MSPRINTER_RIGHT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->top_margin)
250 #define FRAME_MSPRINTER_TOP_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->right_margin) 272 #define FRAME_MSPRINTER_TOP_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->right_margin)
251 #define FRAME_MSPRINTER_BOTTOM_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->bottom_margin) 273 #define FRAME_MSPRINTER_BOTTOM_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->bottom_margin)
252 #define FRAME_MSPRINTER_CDC(f) (FRAME_MSPRINTER_DATA (f)->hcdc)
253 #define FRAME_MSPRINTER_JOB_STARTED(f) (FRAME_MSPRINTER_DATA (f)->job_started) 274 #define FRAME_MSPRINTER_JOB_STARTED(f) (FRAME_MSPRINTER_DATA (f)->job_started)
254 #define FRAME_MSPRINTER_ORIENTATION(f) (FRAME_MSPRINTER_DATA (f)->orientation) 275 #define FRAME_MSPRINTER_PAGE_STARTED(f) (FRAME_MSPRINTER_DATA (f)->page_started)
255 #define FRAME_MSPRINTER_DUPLEX(f) (FRAME_MSPRINTER_DATA (f)->duplex)
256 #define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charheight) 276 #define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charheight)
257 #define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charwidth) 277 #define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charwidth)
278 #define FRAME_MSPRINTER_PIXLEFT(f) (FRAME_MSPRINTER_DATA (f)->pix_left)
279 #define FRAME_MSPRINTER_PIXTOP(f) (FRAME_MSPRINTER_DATA (f)->pix_top)
258 280
259 /* 281 /*
260 * Events 282 * Events
261 */ 283 */
262 284
277 LPARAM lParam); 299 LPARAM lParam);
278 LRESULT WINAPI mswindows_control_wnd_proc (HWND hwnd, 300 LRESULT WINAPI mswindows_control_wnd_proc (HWND hwnd,
279 UINT msg, WPARAM wParam, 301 UINT msg, WPARAM wParam,
280 LPARAM lParam); 302 LPARAM lParam);
281 303
282 void mswindows_redraw_exposed_area (struct frame *f, int x, int y, 304 void mswindows_redraw_exposed_area (struct frame *f, int x, int y,
283 int width, int height); 305 int width, int height);
284 void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest); 306 void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest);
307 HWND mswindows_get_selected_frame_hwnd (void);
285 void mswindows_enqueue_magic_event (HWND hwnd, UINT msg); 308 void mswindows_enqueue_magic_event (HWND hwnd, UINT msg);
309 int mswindows_is_dialog_msg (MSG *msg);
286 310
287 /* win32 DDE management library */ 311 /* win32 DDE management library */
288 #define MSWINDOWS_DDE_ITEM_OPEN "Open" 312 #define MSWINDOWS_DDE_ITEM_OPEN "Open"
289 extern DWORD mswindows_dde_mlid; 313 extern DWORD mswindows_dde_mlid;
290 extern HSZ mswindows_dde_service; 314 extern HSZ mswindows_dde_service;
291 extern HSZ mswindows_dde_topic_system; 315 extern HSZ mswindows_dde_topic_system;
292 extern HSZ mswindows_dde_item_open; 316 extern HSZ mswindows_dde_item_open;
293 HDDEDATA CALLBACK mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv, 317 HDDEDATA CALLBACK mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv,
294 HSZ hszTopic, HSZ hszItem, HDDEDATA hdata, 318 HSZ hszTopic, HSZ hszItem,
319 HDDEDATA hdata,
295 DWORD dwData1, DWORD dwData2); 320 DWORD dwData1, DWORD dwData2);
296 321
322 void mswindows_enqueue_dispatch_event (Lisp_Object event);
297 void mswindows_enqueue_misc_user_event (Lisp_Object channel, 323 void mswindows_enqueue_misc_user_event (Lisp_Object channel,
298 Lisp_Object function, 324 Lisp_Object function,
299 Lisp_Object object); 325 Lisp_Object object);
300 Lisp_Object mswindows_cancel_dispatch_event (Lisp_Event* event); 326 Lisp_Object mswindows_cancel_dispatch_event (Lisp_Event* event);
301 Lisp_Object mswindows_pump_outstanding_events (void); 327 Lisp_Object mswindows_pump_outstanding_events (void);
302 Lisp_Object mswindows_protect_modal_loop (Lisp_Object (*bfun) (Lisp_Object barg), 328 Lisp_Object mswindows_protect_modal_loop (Lisp_Object (*bfun)
329 (Lisp_Object barg),
303 Lisp_Object barg); 330 Lisp_Object barg);
304 void mswindows_unmodalize_signal_maybe (void); 331 void mswindows_unmodalize_signal_maybe (void);
305 332
306 #ifdef HAVE_TOOLBARS 333 COLORREF mswindows_string_to_color (const char *name);
307 Lisp_Object
308 mswindows_get_toolbar_button_text ( struct frame* f, int command_id );
309 Lisp_Object
310 mswindows_handle_toolbar_wm_command (struct frame* f, HWND ctrl, WORD id);
311 #endif
312 Lisp_Object
313 mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, DWORD id);
314 COLORREF mswindows_string_to_color (CONST char *name);
315 USID emacs_mswindows_create_stream_pair (void* inhandle, void* outhandle, 334 USID emacs_mswindows_create_stream_pair (void* inhandle, void* outhandle,
316 Lisp_Object* instream, 335 Lisp_Object* instream,
317 Lisp_Object* outstream, 336 Lisp_Object* outstream,
318 int flags); 337 int flags);
319 USID emacs_mswindows_delete_stream_pair (Lisp_Object instream, 338 USID emacs_mswindows_delete_stream_pair (Lisp_Object instream,
324 #endif 343 #endif
325 344
326 extern Lisp_Object Vmswindows_frame_being_created; 345 extern Lisp_Object Vmswindows_frame_being_created;
327 extern Lisp_Object mswindows_frame_being_created; 346 extern Lisp_Object mswindows_frame_being_created;
328 347
348 void mswindows_get_workspace_coords (RECT *rc);
349
350 HWND mswindows_get_console_hwnd (void);
351 void mswindows_hide_console (void);
352 void mswindows_show_console (void);
353 int mswindows_output_console_string (CONST Extbyte *str, Extcount len);
354
329 Lisp_Object mswindows_enumerate_fonts (HDC hdc); 355 Lisp_Object mswindows_enumerate_fonts (HDC hdc);
330 356
357 int mswindows_char_is_accelerator (struct frame *f, Emchar ch);
358 Bytecount mswindows_translate_menu_or_dialog_item (Bufbyte *item, Bytecount len,
359 Bytecount maxlen, Emchar *accel,
360 Lisp_Object error_name);
361
362 #ifdef HAVE_TOOLBARS
331 Lisp_Object mswindows_get_toolbar_button_text (struct frame* f, 363 Lisp_Object mswindows_get_toolbar_button_text (struct frame* f,
332 int command_id); 364 int command_id);
333 Lisp_Object mswindows_handle_toolbar_wm_command (struct frame* f, 365 Lisp_Object mswindows_handle_toolbar_wm_command (struct frame* f,
334 HWND ctrl, WORD id); 366 HWND ctrl, WORD id);
367 #endif
335 Lisp_Object mswindows_handle_gui_wm_command (struct frame* f, 368 Lisp_Object mswindows_handle_gui_wm_command (struct frame* f,
336 HWND ctrl, DWORD id); 369 HWND ctrl, LPARAM id);
370
371 int mswindows_windows9x_p (void);
372
373 void mswindows_output_last_error (char *frob);
374
375 Lisp_Object mswindows_handle_print_dialog_box (struct frame *f,
376 Lisp_Object keys);
377 Lisp_Object mswindows_handle_page_setup_dialog_box (struct frame *f,
378 Lisp_Object keys);
379 Lisp_Object mswindows_handle_print_setup_dialog_box (struct frame *f,
380 Lisp_Object keys);
381
382 void mswindows_register_popup_frame (Lisp_Object frame);
383 void mswindows_unregister_popup_frame (Lisp_Object frame);
384
385 void mswindows_destroy_selection (Lisp_Object selection);
386
387 Lisp_Object msprinter_default_printer (void);
388
389 struct mswindows_dialog_id
390 {
391 struct lcrecord_header header;
392
393 Lisp_Object frame;
394 Lisp_Object callbacks;
395 HWND hwnd;
396 };
397
398 DECLARE_LRECORD (mswindows_dialog_id, struct mswindows_dialog_id);
399 #define XMSWINDOWS_DIALOG_ID(x) XRECORD (x, mswindows_dialog_id, struct mswindows_dialog_id)
400 #define XSETMSWINDOWS_DIALOG_ID(x, p) XSETRECORD (x, p, mswindows_dialog_id)
401 #define MSWINDOWS_DIALOG_IDP(x) RECORDP (x, mswindows_dialog_id)
402 #define CHECK_MSWINDOWS_DIALOG_ID(x) CHECK_RECORD (x, mswindows_dialog_id)
403 #define CONCHECK_MSWINDOWS_DIALOG_ID(x) CONCHECK_RECORD (x, mswindows_dialog_id)
337 404
338 #endif /* INCLUDED_console_msw_h_ */ 405 #endif /* INCLUDED_console_msw_h_ */