annotate src/console-msw.c @ 410:de805c49cfc1 r21-2-35

Import from CVS: tag r21-2-35
author cvs
date Mon, 13 Aug 2007 11:19:21 +0200
parents 501cfd01ee6d
children 697ef44129c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
1 /* Console functions for mswindows.
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
2 Copyright (C) 1996, 2000 Ben Wing.
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
3
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
4 This file is part of XEmacs.
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
5
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
9 later version.
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
10
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
14 for more details.
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
15
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
20
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
22
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
23 /* Authorship:
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
24
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
25 Ben Wing: January 1996, for 19.14.
272
c5d627a313b1 Import from CVS: tag r21-0b34
cvs
parents: 249
diff changeset
26 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
27 */
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
28
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
29 #include <config.h>
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
30 #include "lisp.h"
408
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
31
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
32 #include "buffer.h"
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
33 #include "console-msw.h"
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
34 #include "events.h"
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
35 #include "opaque.h"
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
36
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
37 DEFINE_CONSOLE_TYPE (mswindows);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
38 DEFINE_CONSOLE_TYPE (msprinter);
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
39
408
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
40 Lisp_Object Qabortretryignore;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
41 Lisp_Object Qapplmodal;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
42 Lisp_Object Qdefault_desktop_only;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
43 Lisp_Object Qdefbutton1;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
44 Lisp_Object Qdefbutton2;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
45 Lisp_Object Qdefbutton3;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
46 Lisp_Object Qdefbutton4;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
47 /* Lisp_Object Qhelp; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
48 Lisp_Object Qiconasterisk;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
49 Lisp_Object Qiconexclamation;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
50 Lisp_Object Qiconhand;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
51 Lisp_Object Qiconinformation;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
52 Lisp_Object Qiconquestion;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
53 Lisp_Object Qiconstop;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
54 /* Lisp_Object Qok; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
55 Lisp_Object Qokcancel;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
56 Lisp_Object Qretrycancel;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
57 /* Lisp_Object Qright; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
58 Lisp_Object Qrtlreading;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
59 Lisp_Object Qservice_notification;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
60 Lisp_Object Qsetforeground;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
61 Lisp_Object Qsystemmodal;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
62 Lisp_Object Qtaskmodal;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
63 Lisp_Object Qtopmost;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
64 Lisp_Object Qyesno;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
65 Lisp_Object Qyesnocancel;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
66
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
67 /* Lisp_Object Qabort; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
68 /* Lisp_Object Qcancel; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
69 /* Lisp_Object Qignore; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
70 /* Lisp_Object Qno; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
71 /* Lisp_Object Qok; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
72 /* Lisp_Object Qretry; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
73 /* Lisp_Object Qyes; */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
74
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
75
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
76 /************************************************************************/
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
77 /* mswindows console methods */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
78 /************************************************************************/
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
79
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
80 static int
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
81 mswindows_initially_selected_for_input (struct console *con)
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
82 {
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
83 return 1;
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
84 }
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
85
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
86 static HWND mswindows_console_hwnd = 0;
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
87
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
88 #define KLUDGE_BUFSIZE 1024 /* buffer size for console window titles */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
89
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
90 /* Direct from the horse's mouth: Microsoft KB article Q124103 */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
91 static HWND
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
92 GetConsoleHwnd (void)
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
93 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
94 HWND hwndFound; /* this is what is returned to the caller */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
95 char pszNewWindowTitle[KLUDGE_BUFSIZE]; /* contains fabricated WindowTitle */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
96 char pszOldWindowTitle[KLUDGE_BUFSIZE]; /* contains original WindowTitle */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
97
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
98 /* fetch current window title */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
99
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
100 GetConsoleTitle(pszOldWindowTitle, KLUDGE_BUFSIZE);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
101
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
102 /* format a "unique" NewWindowTitle */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
103
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
104 wsprintf(pszNewWindowTitle,"%d/%d",
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
105 GetTickCount(),
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
106 GetCurrentProcessId());
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
107
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
108 /* change current window title */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
109
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
110 SetConsoleTitle(pszNewWindowTitle);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
111
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
112 /* ensure window title has been updated */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
113
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
114 Sleep(40);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
115
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
116 /* look for NewWindowTitle */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
117
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
118 hwndFound=FindWindow(NULL, pszNewWindowTitle);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
119
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
120 /* restore original window title */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
121
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
122 SetConsoleTitle(pszOldWindowTitle);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
123
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
124 return(hwndFound);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
125 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
126
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
127 HWND
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
128 mswindows_get_console_hwnd (void)
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
129 {
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
130 if (!mswindows_console_hwnd)
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
131 mswindows_console_hwnd = GetConsoleHwnd ();
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
132 return mswindows_console_hwnd;
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
133 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
134
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
135 static int
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
136 mswindows_ensure_console_allocated (void)
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
137 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
138 HWND fgwin = GetForegroundWindow ();
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
139 /* stupid mswin api won't let you create the console window
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
140 hidden! creating it changes the focus! fuck me! */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
141 if (AllocConsole ())
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
142 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
143 SetForegroundWindow (fgwin);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
144 return 1;
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
145 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
146 return 0;
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
147 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
148
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
149 static Lisp_Object
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
150 mswindows_canonicalize_console_connection (Lisp_Object connection,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
151 Error_behavior errb)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
152 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
153 /* Do not allow more than one mswindows device, by explicitly
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
154 requiring that CONNECTION is nil, the only allowed connection in
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
155 Windows. */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
156 if (!NILP (connection))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
157 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
158 if (ERRB_EQ (errb, ERROR_ME))
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
159 signal_simple_error
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
160 ("Invalid (non-nil) connection for mswindows device/console",
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
161 connection);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
162 else
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
163 return Qunbound;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
164 }
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
165
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
166 return Qnil;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
167 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
168
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
169 static Lisp_Object
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
170 mswindows_canonicalize_device_connection (Lisp_Object connection,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
171 Error_behavior errb)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
172 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
173 return mswindows_canonicalize_console_connection (connection, errb);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
174 }
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
175
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
176 void
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
177 mswindows_hide_console (void)
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
178 {
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
179 ShowWindow (mswindows_get_console_hwnd (), SW_HIDE);
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
180 }
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
181
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
182 void
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
183 mswindows_show_console (void)
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
184 {
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
185 HWND hwnd = mswindows_get_console_hwnd ();
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
186 ShowWindow (hwnd, SW_SHOWNA);
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
187
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
188 /* I tried to raise the window to the top without activating
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
189 it, but this fails. Apparently Windows just doesn't like
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
190 having the active window not be on top. So instead, we
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
191 at least put it just below our own window, where part of it
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
192 will likely be seen. */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
193 SetWindowPos (hwnd, GetForegroundWindow (), 0, 0, 0, 0,
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
194 SWP_NOSIZE | SWP_NOMOVE | SWP_NOSENDCHANGING |
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
195 SWP_NOACTIVATE);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
196 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
197
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
198 static int mswindows_console_buffered = 0;
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
199 HANDLE mswindows_console_buffer;
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
200
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
201 static void
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
202 mswindows_ensure_console_buffered (void)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
203 {
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
204 if (!mswindows_console_buffered)
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
205 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
206 COORD new_size;
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
207
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
208 new_size.X = 80;
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
209 new_size.Y = 1000;
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
210 mswindows_ensure_console_allocated ();
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
211 mswindows_console_buffer =
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
212 CreateConsoleScreenBuffer (GENERIC_WRITE, 0, NULL,
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
213 CONSOLE_TEXTMODE_BUFFER, NULL);
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
214 SetConsoleScreenBufferSize (mswindows_console_buffer, new_size);
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
215 SetConsoleActiveScreenBuffer (mswindows_console_buffer);
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
216 mswindows_console_buffered = 1;
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
217 }
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
218 }
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
219
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
220 int mswindows_message_outputted;
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
221
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
222 int
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
223 mswindows_output_console_string (CONST Extbyte *str, Extcount len)
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
224 {
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
225 DWORD num_written;
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
226
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
227 mswindows_message_outputted = 1;
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
228 mswindows_ensure_console_buffered ();
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
229 mswindows_show_console ();
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
230 return WriteConsole (mswindows_console_buffer, str, len, &num_written, NULL);
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
231 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
232
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
233 /* Determine if running on Windows 9x and not NT */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
234 int
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
235 mswindows_windows9x_p (void)
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
236 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
237 return GetVersion () & 0x80000000;
213
78f53ef88e17 Import from CVS: tag r20-4b5
cvs
parents:
diff changeset
238 }
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
239
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
240
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
241 #ifdef DEBUG_XEMACS
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
242
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
243 /*
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
244 * Random helper functions for debugging.
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
245 * Intended for use in the MSVC "Watch" window which doesn't like
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
246 * the aborts that the error_check_foo() functions can make.
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
247 */
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
248 struct lrecord_header *DHEADER (Lisp_Object obj);
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
249 struct lrecord_header *
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
250 DHEADER (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
251 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
252 return LRECORDP (obj) ? XRECORD_LHEADER (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
253 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
254
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
255 void *DOPAQUE_DATA (Lisp_Object obj);
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
256 void *
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
257 DOPAQUE_DATA (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
258 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
259 return OPAQUEP (obj) ? OPAQUE_DATA (XOPAQUE (obj)) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
260 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
261
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
262 Lisp_Event *DEVENT (Lisp_Object obj);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
263 Lisp_Event *
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
264 DEVENT (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
265 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
266 return EVENTP (obj) ? XEVENT (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
267 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
268
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
269 Lisp_Cons *DCONS (Lisp_Object obj);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
270 Lisp_Cons *
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
271 DCONS (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
272 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
273 return CONSP (obj) ? XCONS (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
274 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
275
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
276 Lisp_Cons *DCONSCDR (Lisp_Object obj);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
277 Lisp_Cons *
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
278 DCONSCDR (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
279 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
280 return (CONSP (obj) && CONSP (XCDR (obj))) ? XCONS (XCDR (obj)) : 0;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
281 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
282
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
283 Bufbyte *DSTRING (Lisp_Object obj);
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
284 Bufbyte *
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
285 DSTRING (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
286 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
287 return STRINGP (obj) ? XSTRING_DATA (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
288 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
289
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
290 Lisp_Vector *DVECTOR (Lisp_Object obj);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
291 Lisp_Vector *
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
292 DVECTOR (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
293 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
294 return VECTORP (obj) ? XVECTOR (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
295 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
296
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
297 Lisp_Symbol *DSYMBOL (Lisp_Object obj);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
298 Lisp_Symbol *
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
299 DSYMBOL (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
300 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
301 return SYMBOLP (obj) ? XSYMBOL (obj) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
302 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
303
410
de805c49cfc1 Import from CVS: tag r21-2-35
cvs
parents: 408
diff changeset
304 Bufbyte *DSYMNAME (Lisp_Object obj);
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
305 Bufbyte *
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
306 DSYMNAME (Lisp_Object obj)
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
307 {
382
064ab7fed2e0 Import from CVS: tag r21-2-6
cvs
parents: 280
diff changeset
308 return SYMBOLP (obj) ? string_data (XSYMBOL (obj)->name) : NULL;
249
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
309 }
83b3d10dcba9 Import from CVS: tag r20-5b23
cvs
parents: 213
diff changeset
310
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents: 382
diff changeset
311 #endif /* DEBUG_XEMACS */
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
312
408
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
313 DEFUN ("mswindows-message-box", Fmswindows_message_box, 1, 3, 0, /*
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
314 Pop up an MS Windows message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
315 MESSAGE is the string to display. Optional argument FLAG controls
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
316 what appears in the box and how it behaves; it is a symbol or list of
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
317 symbols, described below. Second optional argument TITLE controls the
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
318 title bar; if omitted, a standard title bar will be used, probably
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
319 displaying "XEmacs".
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
320
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
321 Possible flags are
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
322
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
323
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
324 -- To specify the buttons in the message box:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
325
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
326 abortretryignore
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
327 The message box contains three push buttons: Abort, Retry, and Ignore.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
328 ok
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
329 The message box contains one push button: OK. This is the default.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
330 okcancel
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
331 The message box contains two push buttons: OK and Cancel.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
332 retrycancel
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
333 The message box contains two push buttons: Retry and Cancel.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
334 yesno
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
335 The message box contains two push buttons: Yes and No.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
336 yesnocancel
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
337 The message box contains three push buttons: Yes, No, and Cancel.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
338
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
339
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
340 -- To display an icon in the message box:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
341
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
342 iconexclamation, iconwarning
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
343 An exclamation-point icon appears in the message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
344 iconinformation, iconasterisk
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
345 An icon consisting of a lowercase letter i in a circle appears in
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
346 the message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
347 iconquestion
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
348 A question-mark icon appears in the message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
349 iconstop, iconerror, iconhand
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
350 A stop-sign icon appears in the message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
351
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
352
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
353 -- To indicate the default button:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
354
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
355 defbutton1
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
356 The first button is the default button. This is the default.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
357 defbutton2
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
358 The second button is the default button.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
359 defbutton3
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
360 The third button is the default button.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
361 defbutton4
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
362 The fourth button is the default button.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
363
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
364
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
365 -- To indicate the modality of the dialog box:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
366
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
367 applmodal
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
368 The user must respond to the message box before continuing work in
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
369 the window identified by the hWnd parameter. However, the user can
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
370 move to the windows of other applications and work in those windows.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
371 Depending on the hierarchy of windows in the application, the user
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
372 may be able to move to other windows within the application. All
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
373 child windows of the parent of the message box are automatically
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
374 disabled, but popup windows are not. This is the default.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
375 systemmodal
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
376 Same as applmodal except that the message box has the WS_EX_TOPMOST
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
377 style. Use system-modal message boxes to notify the user of serious,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
378 potentially damaging errors that require immediate attention (for
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
379 example, running out of memory). This flag has no effect on the
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
380 user's ability to interact with windows other than those associated
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
381 with hWnd.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
382 taskmodal
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
383 Same as applmodal except that all the top-level windows belonging to
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
384 the current task are disabled if the hWnd parameter is NULL. Use
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
385 this flag when the calling application or library does not have a
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
386 window handle available but still needs to prevent input to other
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
387 windows in the current application without suspending other
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
388 applications.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
389
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
390
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
391 In addition, you can specify the following flags:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
392
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
393 default-desktop-only
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
394 The desktop currently receiving input must be a default desktop;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
395 otherwise, the function fails. A default desktop is one an
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
396 application runs on after the user has logged on.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
397 help
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
398 Adds a Help button to the message box. Choosing the Help button or
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
399 pressing F1 generates a Help event.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
400 right
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
401 The text is right-justified.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
402 rtlreading
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
403 Displays message and caption text using right-to-left reading order
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
404 on Hebrew and Arabic systems.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
405 setforeground
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
406 The message box becomes the foreground window. Internally, Windows
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
407 calls the SetForegroundWindow function for the message box.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
408 topmost
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
409 The message box is created with the WS_EX_TOPMOST window style.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
410 service-notification
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
411 Windows NT only: The caller is a service notifying the user of an
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
412 event. The function displays a message box on the current active
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
413 desktop, even if there is no user logged on to the computer. If
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
414 this flag is set, the hWnd parameter must be NULL. This is so the
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
415 message box can appear on a desktop other than the desktop
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
416 corresponding to the hWnd.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
417
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
418
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
419
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
420 The return value is one of the following menu-item values returned by
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
421 the dialog box:
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
422
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
423 abort
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
424 Abort button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
425 cancel
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
426 Cancel button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
427 ignore
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
428 Ignore button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
429 no
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
430 No button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
431 ok
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
432 OK button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
433 retry
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
434 Retry button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
435 yes
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
436 Yes button was selected.
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
437
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
438 If a message box has a Cancel button, the function returns the
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
439 `cancel' value if either the ESC key is pressed or the Cancel button
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
440 is selected. If the message box has no Cancel button, pressing ESC has
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
441 no effect. */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
442 (message_, flags, title))
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
443 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
444 Lisp_Object tail;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
445 Extbyte *msgout;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
446 Extbyte *titleout = 0;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
447 UINT sty = 0;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
448
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
449 if (noninteractive)
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
450 return Qcancel;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
451
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
452 if (!CONSP (flags))
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
453 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
454 CHECK_SYMBOL (flags);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
455 flags = list1 (flags);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
456 }
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
457
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
458 CHECK_STRING (message_);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
459 TO_EXTERNAL_FORMAT (LISP_STRING, message_,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
460 C_STRING_ALLOCA, msgout,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
461 Qmswindows_tstr);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
462
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
463 if (!NILP (title))
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
464 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
465 CHECK_STRING (title);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
466 TO_EXTERNAL_FORMAT (LISP_STRING, title,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
467 C_STRING_ALLOCA, titleout,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
468 Qmswindows_tstr);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
469 }
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
470
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
471 EXTERNAL_LIST_LOOP (tail, flags)
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
472 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
473 Lisp_Object st = XCAR (tail);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
474 CHECK_SYMBOL (st);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
475 if (0)
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
476 ;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
477 #define FROB(sym, val) else if (EQ (st, sym)) sty |= val
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
478 FROB (Qabortretryignore, MB_ABORTRETRYIGNORE);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
479 FROB (Qapplmodal, MB_APPLMODAL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
480 FROB (Qdefault_desktop_only, MB_DEFAULT_DESKTOP_ONLY);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
481 FROB (Qdefbutton1, MB_DEFBUTTON1);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
482 FROB (Qdefbutton2, MB_DEFBUTTON2);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
483 FROB (Qdefbutton3, MB_DEFBUTTON3);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
484 FROB (Qdefbutton4, MB_DEFBUTTON4);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
485 FROB (Qhelp, MB_HELP);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
486 FROB (Qiconasterisk, MB_ICONASTERISK);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
487 FROB (Qiconexclamation, MB_ICONEXCLAMATION);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
488 FROB (Qiconhand, MB_ICONHAND);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
489 FROB (Qiconinformation, MB_ICONINFORMATION);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
490 FROB (Qiconquestion, MB_ICONQUESTION);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
491 FROB (Qiconstop, MB_ICONSTOP);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
492 FROB (Qok, MB_OK);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
493 FROB (Qokcancel, MB_OKCANCEL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
494 FROB (Qretrycancel, MB_RETRYCANCEL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
495 FROB (Qright, MB_RIGHT);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
496 FROB (Qrtlreading, MB_RTLREADING);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
497 FROB (Qservice_notification, MB_SERVICE_NOTIFICATION);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
498 FROB (Qsetforeground, MB_SETFOREGROUND);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
499 FROB (Qsystemmodal, MB_SYSTEMMODAL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
500 FROB (Qtaskmodal, MB_TASKMODAL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
501 FROB (Qtopmost, MB_TOPMOST);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
502 FROB (Qyesno, MB_YESNO);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
503 FROB (Qyesnocancel, MB_YESNOCANCEL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
504 #undef FROB
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
505
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
506 else
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
507 signal_simple_error ("Unrecognized flag", st);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
508 }
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
509
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
510 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
511 int retval = MessageBox (NULL, msgout, titleout, sty);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
512
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
513 if (retval == 0)
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
514 error ("Out of memory when calling `mswindows-message-box'");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
515
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
516 #define FROB(sym, val) if (retval == val) return sym
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
517 FROB (Qabort, IDABORT);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
518 FROB (Qcancel, IDCANCEL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
519 FROB (Qignore, IDIGNORE);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
520 FROB (Qno, IDNO);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
521 FROB (Qok, IDOK);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
522 FROB (Qretry, IDRETRY);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
523 FROB (Qyes, IDYES);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
524 #undef FROB
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
525
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
526 signal_simple_error ("Unknown return value from MessageBox()",
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
527 make_int (retval));
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
528 }
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
529
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
530 return Qnil;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
531 }
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
532
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
533 void
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
534 mswindows_output_last_error (char *frob)
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
535 {
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
536 LPVOID lpMsgBuf;
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
537 int errval = GetLastError();
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
538
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
539 FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
540 | FORMAT_MESSAGE_FROM_SYSTEM,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
541 NULL, errval,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
542 MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
543 (LPTSTR) &lpMsgBuf,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
544 0,
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
545 NULL);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
546 stderr_out ("last error during %s is %d: %s\n",
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
547 frob, errval, (char*)lpMsgBuf);
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
548 }
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
549
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
550
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
551 /************************************************************************/
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
552 /* initialization */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
553 /************************************************************************/
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
554
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
555 void
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
556 syms_of_console_mswindows (void)
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
557 {
408
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
558 defsymbol (&Qabortretryignore, "abortretryignore");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
559 defsymbol (&Qapplmodal, "applmodal");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
560 defsymbol (&Qdefault_desktop_only, "default-desktop-only");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
561 defsymbol (&Qdefbutton1, "defbutton1");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
562 defsymbol (&Qdefbutton2, "defbutton2");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
563 defsymbol (&Qdefbutton3, "defbutton3");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
564 defsymbol (&Qdefbutton4, "defbutton4");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
565 /* defsymbol (&Qhelp, "help"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
566 defsymbol (&Qiconasterisk, "iconasterisk");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
567 defsymbol (&Qiconexclamation, "iconexclamation");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
568 defsymbol (&Qiconhand, "iconhand");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
569 defsymbol (&Qiconinformation, "iconinformation");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
570 defsymbol (&Qiconquestion, "iconquestion");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
571 defsymbol (&Qiconstop, "iconstop");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
572 /* defsymbol (&Qok, "ok"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
573 defsymbol (&Qokcancel, "okcancel");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
574 defsymbol (&Qretrycancel, "retrycancel");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
575 /* defsymbol (&Qright, "right"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
576 defsymbol (&Qrtlreading, "rtlreading");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
577 defsymbol (&Qservice_notification, "service-notification");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
578 defsymbol (&Qsetforeground, "setforeground");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
579 defsymbol (&Qsystemmodal, "systemmodal");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
580 defsymbol (&Qtaskmodal, "taskmodal");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
581 defsymbol (&Qtopmost, "topmost");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
582 defsymbol (&Qyesno, "yesno");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
583 defsymbol (&Qyesnocancel, "yesnocancel");
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
584
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
585 /* defsymbol (&Qabort, "abort"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
586 /* defsymbol (&Qcancel, "cancel"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
587 /* defsymbol (&Qignore, "ignore"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
588 /* defsymbol (&Qno, "no"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
589 /* defsymbol (&Qok, "ok"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
590 /* defsymbol (&Qretry, "retry"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
591 /* defsymbol (&Qyes, "yes"); */
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
592
501cfd01ee6d Import from CVS: tag r21-2-34
cvs
parents: 404
diff changeset
593 DEFSUBR (Fmswindows_message_box);
404
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
594 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
595
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
596 void
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
597 console_type_create_mswindows (void)
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
598 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
599 INITIALIZE_CONSOLE_TYPE (mswindows, "mswindows", "console-mswindows-p");
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
600
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
601 /* console methods */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
602 /* CONSOLE_HAS_METHOD (mswindows, init_console); */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
603 /* CONSOLE_HAS_METHOD (mswindows, mark_console); */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
604 CONSOLE_HAS_METHOD (mswindows, initially_selected_for_input);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
605 /* CONSOLE_HAS_METHOD (mswindows, delete_console); */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
606 CONSOLE_HAS_METHOD (mswindows, canonicalize_console_connection);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
607 CONSOLE_HAS_METHOD (mswindows, canonicalize_device_connection);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
608 /* CONSOLE_HAS_METHOD (mswindows, semi_canonicalize_console_connection); */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
609 /* CONSOLE_HAS_METHOD (mswindows, semi_canonicalize_device_connection); */
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
610
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
611 INITIALIZE_CONSOLE_TYPE (msprinter, "msprinter", "console-msprinter-p");
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
612 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
613
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
614 void
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
615 reinit_console_type_create_mswindows (void)
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
616 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
617 REINITIALIZE_CONSOLE_TYPE (mswindows);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
618 REINITIALIZE_CONSOLE_TYPE (msprinter);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
619 }
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
620
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
621 void
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
622 vars_of_console_mswindows (void)
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
623 {
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
624 Fprovide (Qmswindows);
2f8bb876ab1d Import from CVS: tag r21-2-32
cvs
parents: 398
diff changeset
625 }