diff src/event-w32.h @ 209:41ff10fd062f r20-4b3

Import from CVS: tag r20-4b3
author cvs
date Mon, 13 Aug 2007 10:04:58 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/event-w32.h	Mon Aug 13 10:04:58 2007 +0200
@@ -0,0 +1,123 @@
+/* Win32 specific defines for event-handling.
+   Copyright (C) 1997 Jonathan Harris.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not in FSF. */
+
+/* Authorship:
+
+   Jonathan Harris, November 1997 for 20.4.
+ */
+
+#include <windows.h>
+
+/*
+ * XXX FIXME: The following X modifier defs in events-mod.h clash with win32
+ * hotkey defs in winuser.h. For the moment lose the win32 versions.
+ * Maybe we should rename all of MOD_* to something that doesn't clash.
+ */
+#ifdef MOD_CONTROL
+#  undef MOD_CONTROL
+#endif  
+#ifdef MOD_ALT
+#  undef MOD_ALT
+#endif  
+#ifdef MOD_SHIFT
+#  undef MOD_SHIFT
+#endif  
+#include "events-mod.h"
+
+/* The name of the main window class */
+#define XEMACS_CLASS "XEmacs"
+
+/* Random globals shared between main and message-processing thread */
+extern DWORD w32_main_thread_id;
+extern DWORD w32_win_thread_id;
+extern CRITICAL_SECTION w32_dispatch_crit;
+
+
+/*
+ * Communication between main and windows thread
+ */
+#define WM_XEMACS_BASE		(WM_APP + 0)
+#define WM_XEMACS_ACK		(WM_XEMACS_BASE + 0x00)
+#define WM_XEMACS_CREATEWINDOW	(WM_XEMACS_BASE + 0x01)
+#define WM_XEMACS_SETTIMER	(WM_XEMACS_BASE + 0x02)
+#define WM_XEMACS_KILLTIMER	(WM_XEMACS_BASE + 0x03)
+#define WM_XEMACS_END		(WM_XEMACS_BASE + 0x10)
+
+typedef struct w32_request_type
+{
+  void *thing1;
+  void *thing2;
+} w32_request_type;
+
+LPARAM w32_make_request(UINT message, WPARAM wParam, w32_request_type *request);
+void w32_handle_request(MSG *msg);
+
+
+/*
+ * Event generating stuff
+ */
+
+/* The number of things we can wait on */
+#define MAX_WAITABLE 256
+
+typedef enum w32_waitable_type
+{
+  w32_waitable_type_none,
+  w32_waitable_type_dispatch,
+  w32_waitable_type_timeout,
+  w32_waitable_type_process,
+  w32_waitable_type_socket
+} w32_waitable_type;
+
+typedef struct w32_timeout_data
+{
+  int milliseconds;
+  int id;
+} w32_timeout_data;
+
+typedef struct w32_waitable_info_type
+{
+  w32_waitable_type type;
+  union
+    {
+      w32_timeout_data	timeout;
+    } data;
+} w32_waitable_info_type;
+
+w32_waitable_info_type *w32_add_waitable(w32_waitable_info_type *info);
+void w32_remove_waitable(w32_waitable_info_type *info);
+
+/*
+ * Some random function declarations in w32-proc.c
+ */
+DWORD w32_win_thread();
+extern void w32_enqeue_dispatch_event (Lisp_Object event);
+
+
+/*
+ * Inside w32 magic events
+ */
+#define EVENT_W32_MAGIC_EVENT(e)	((e)->event.magic.underlying_w32_event)
+#define EVENT_W32_MAGIC_TYPE(e)		(EVENT_W32_MAGIC_EVENT(e).message)
+#define EVENT_W32_MAGIC_DATA(e)	\
+	(*((RECT *) (&(EVENT_W32_MAGIC_EVENT(e).data))))
+