annotate src/console-msw.c @ 5921:68639fb08af8 cygwin

no obvious 64 vs. 32 pblms in compilation, but still crashing in event-msw
author Henry Thompson <ht@markup.co.uk>
date Wed, 23 Apr 2014 22:22:37 +0100
parents 56144c8593a8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* Console functions for mswindows.
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 771
diff changeset
2 Copyright (C) 1996, 2000, 2001, 2002 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5191
diff changeset
6 XEmacs is free software: you can redistribute it and/or modify it
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5191
diff changeset
8 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5191
diff changeset
9 option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5191
diff changeset
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 /* Synched up with: Not in FSF. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
21 /* This file essentially Mule-ized (except perhaps some Unicode splitting).
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
22 5-2000. */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
23
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 /* Authorship:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 Ben Wing: January 1996, for 19.14.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
30 /* See win32.c for info about the different Windows files in XEmacs. */
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
31
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include <config.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 #include "lisp.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 867
diff changeset
35 #include "console-msw-impl.h"
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
36 #include "events.h"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
37 #include "opaque.h"
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
38 #include "elhash.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
40 DEFINE_CONSOLE_TYPE (mswindows);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
41 DEFINE_CONSOLE_TYPE (msprinter);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
43 Lisp_Object Qabortretryignore;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
44 Lisp_Object Qapplmodal;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
45 Lisp_Object Qdefault_desktop_only;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
46 Lisp_Object Qdefbutton1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
47 Lisp_Object Qdefbutton2;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
48 Lisp_Object Qdefbutton3;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
49 Lisp_Object Qdefbutton4;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
50 /* Lisp_Object Qhelp; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
51 Lisp_Object Qiconasterisk;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
52 Lisp_Object Qiconexclamation;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
53 Lisp_Object Qiconhand;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
54 Lisp_Object Qiconinformation;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
55 Lisp_Object Qiconquestion;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
56 Lisp_Object Qiconstop;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
57 /* Lisp_Object Qok; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
58 Lisp_Object Qokcancel;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
59 Lisp_Object Qretrycancel;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
60 /* Lisp_Object Qright; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
61 Lisp_Object Qrtlreading;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
62 Lisp_Object Qservice_notification;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
63 Lisp_Object Qsetforeground;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
64 Lisp_Object Qsystemmodal;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
65 Lisp_Object Qtaskmodal;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
66 Lisp_Object Qtopmost;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
67 Lisp_Object Qyesno;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
68 Lisp_Object Qyesnocancel;
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
69 Lisp_Object Vmswindows_seen_characters;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
70
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
71 /* Lisp_Object Qabort; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
72 /* Lisp_Object Qcancel; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
73 /* Lisp_Object Qignore; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
74 /* Lisp_Object Qno; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
75 /* Lisp_Object Qok; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
76 /* Lisp_Object Qretry; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
77 /* Lisp_Object Qyes; */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
78
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
79
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
80 /************************************************************************/
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
81 /* mswindows console methods */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
82 /************************************************************************/
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1346
diff changeset
85 mswindows_initially_selected_for_input (struct console *UNUSED (con))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 return 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
90 static HWND mswindows_console_hwnd = 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
91
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
92 /* Based on Microsoft KB article Q124103 */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
93 static HWND
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
94 GetConsoleHwnd (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
95 {
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
96 HWND hwndFound;
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
97 Ascbyte newtitle[100];
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
98 Extbyte *oldtitle;
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
99 int numchars;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
100
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
101 /* fetch current window title */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
102
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
103 {
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
104 int size = 64;
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
105 do
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
106 {
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
107 size *= 2;
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
108 oldtitle = alloca_extbytes (size * XETCHAR_SIZE);
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
109 numchars = qxeGetConsoleTitle (oldtitle, size);
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
110 }
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
111 while (numchars >= size - 1);
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
112 }
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
113
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
114 /* format a "unique" new title */
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
115
5921
68639fb08af8 no obvious 64 vs. 32 pblms in compilation, but still crashing in event-msw
Henry Thompson <ht@markup.co.uk>
parents: 5581
diff changeset
116 sprintf (newtitle, "%ld/%ld", (long)GetTickCount (), (long)GetCurrentProcessId ());
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
117
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
118 /* change current window title; we may be called during armageddon
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
119 so don't do any conversion */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
120
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
121 SetConsoleTitleA (newtitle);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
122
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
123 /* ensure window title has been updated */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
124
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
125 Sleep (40);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
126
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
127 /* look for NewWindowTitle */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
128
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
129 hwndFound = FindWindowA (NULL, newtitle);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
130
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
131 /* restore original window title */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
132
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
133 qxeSetConsoleTitle (oldtitle);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
134
800
a5954632b187 [xemacs-hg @ 2002-03-31 08:27:14 by ben]
ben
parents: 793
diff changeset
135 return hwndFound;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
136 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
137
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
138 static HWND
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
139 mswindows_get_console_hwnd (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
140 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
141 if (!mswindows_console_hwnd)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
142 mswindows_console_hwnd = GetConsoleHwnd ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
143 return mswindows_console_hwnd;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
144 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
145
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
146 static int
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
147 mswindows_ensure_console_allocated (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
148 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
149 HWND fgwin = GetForegroundWindow ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
150 /* stupid mswin api won't let you create the console window
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
151 hidden! creating it changes the focus! fuck me! */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
152 if (AllocConsole ())
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
153 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
154 SetForegroundWindow (fgwin);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
155 return 1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
156 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
157 return 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
158 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
159
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
160 static Lisp_Object
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
161 mswindows_canonicalize_console_connection (Lisp_Object connection,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
162 Error_Behavior errb)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
163 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
164 /* Do not allow more than one mswindows device, by explicitly
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
165 requiring that CONNECTION is nil, the only allowed connection in
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
166 Windows. */
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
167 if (!NILP (connection))
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
168 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
169 if (ERRB_EQ (errb, ERROR_ME))
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
170 invalid_argument
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
171 ("Invalid (non-nil) connection for mswindows device/console",
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
172 connection);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
173 else
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
174 return Qunbound;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
175 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
177 return Qnil;
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
178 }
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
179
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
180 static Lisp_Object
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
181 mswindows_canonicalize_device_connection (Lisp_Object connection,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
182 Error_Behavior errb)
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
183 {
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
184 return mswindows_canonicalize_console_connection (connection, errb);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
185 }
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
187 /* The actual console doesn't matter, because the global map is global. See
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
188 console-x.c for a corner case, though. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
189
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
190 static Lisp_Object
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
191 mswindows_perhaps_init_unseen_key_defaults (struct console *UNUSED(con),
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
192 Lisp_Object key)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
193 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
194 Ichar val;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
195 extern Lisp_Object Vcurrent_global_map;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
196
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
197 if (SYMBOLP(key))
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
198 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
199 /* We've no idea what to default a symbol to on MS Windows, and most
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
200 of the keys I'm aware of that have
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
201 symbols--cf. event-msw.c--_shouldn't_ have associated chars. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
202 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
203 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
204
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
205 CHECK_CHAR(key);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
206
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
207 if (!(HASH_TABLEP(Vmswindows_seen_characters)))
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
208 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
209 /* All the keysym we deal with are character objects; therefore, we
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
210 can use eq as the test without worrying. */
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
211 Vmswindows_seen_characters = make_lisp_hash_table (128,
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
212 HASH_TABLE_NON_WEAK,
5191
71ee43b8a74d Add #'equalp as a hash test by default; add #'define-hash-table-test, GNU API
Aidan Kehoe <kehoea@parhasard.net>
parents: 4981
diff changeset
213 Qeq);
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
214 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
215 /* Might give the user an opaque error if make_lisp_hash_table fails,
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
216 but it shouldn't crash. */
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
217 CHECK_HASH_TABLE(Vmswindows_seen_characters);
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
218
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
219 val = XCHAR(key);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
220
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
221 /* Same logic as in x_has_keysym; I'm not convinced it's sane. */
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
222 if (val < 0x80)
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
223 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
224 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
225 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
226
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
227 if (!NILP(Fgethash(key, Vmswindows_seen_characters, Qnil)))
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
228 {
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
229 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
230 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
231
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
232 if (NILP (Flookup_key (Vcurrent_global_map, key, Qnil)))
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
233 {
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
234 Fputhash(key, Qt, Vmswindows_seen_characters);
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
235 Fdefine_key (Vcurrent_global_map, key, Qself_insert_command);
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
236 return Qt;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
237 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
238
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
239 return Qnil;
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
240 }
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
241
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
242 void
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
243 mswindows_hide_console (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
244 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
245 ShowWindow (mswindows_get_console_hwnd (), SW_HIDE);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
246 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
247
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
248 static void
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
249 mswindows_show_console (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
250 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
251 /* What I really want is for the console window to appear on top of other
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
252 windows, but NOT get the focus. This seems hard-to-impossible under
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
253 Windows. The following sequence seems to do the best possible, along
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
254 with keeping the console window on top when xemacs --help is used. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
255 HWND hwnd = mswindows_get_console_hwnd ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
256 HWND hwndf = GetFocus ();
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
257 if (!IsWindowVisible (hwnd))
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
258 ShowWindow (hwnd, SW_SHOWNA);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
259 if (noninteractive)
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
260 BringWindowToTop (hwnd);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
261 else
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
262 SetWindowPos (hwnd, hwndf, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
263 | SWP_NOACTIVATE);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
264 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
265
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
266 static int mswindows_console_buffered = 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
267 HANDLE mswindows_console_buffer;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
268
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
269 static void
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
270 mswindows_ensure_console_buffered (void)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
271 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
272 if (!mswindows_console_buffered)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
273 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
274 COORD new_size;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
275
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
276 new_size.X = 80;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
277 new_size.Y = 1000;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
278 mswindows_ensure_console_allocated ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
279 mswindows_console_buffer =
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
280 CreateConsoleScreenBuffer (GENERIC_WRITE, 0, NULL,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
281 CONSOLE_TEXTMODE_BUFFER, NULL);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
282 SetConsoleScreenBufferSize (mswindows_console_buffer, new_size);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
283 SetConsoleActiveScreenBuffer (mswindows_console_buffer);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
284 mswindows_console_buffered = 1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
285 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
286 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
287
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
288 int mswindows_message_outputted;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
289
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
290 int
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
291 mswindows_output_console_string (const Ibyte *ptr, Bytecount len)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
292 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
293 DWORD num_written;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
294
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
295 mswindows_message_outputted = 1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
296 mswindows_ensure_console_buffered ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
297 mswindows_show_console ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
298
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
299 if (initialized && !inhibit_non_essential_conversion_operations)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
300 {
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
301 const Extbyte *extptr;
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
302 Bytecount extlen;
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
303 TO_EXTERNAL_FORMAT (DATA, (ptr, len),
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
304 ALLOCA, (extptr, extlen),
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
305 Qmswindows_tstr);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
306 return qxeWriteConsole (mswindows_console_buffer, extptr,
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
307 extlen / XETCHAR_SIZE, &num_written, NULL);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
308 }
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
309 else
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
310 #ifdef NON_ASCII_INTERNAL_FORMAT
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
311 #error Do something here
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
312 #endif
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
313 return WriteConsoleA (mswindows_console_buffer, (Chbyte *) ptr, len,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
314 &num_written, NULL);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
315 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
316
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
317 DEFUN ("mswindows-debugging-output", Fmswindows_debugging_output, 1, 1, 0, /*
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
318 Write CHAR-OR-STRING to the Windows debugger, using OutputDebugString().
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
319 This function can be used as the STREAM argument of Fprint() or the like.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
320 */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
321 (char_or_string))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
322 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
323 if (STRINGP (char_or_string))
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
324 /* It's safe to pass in string data because TO_EXTERNAL_FORMAT
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
325 inhibits GC. */
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
326 write_string_to_mswindows_debugging_output
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
327 (XSTRING_DATA (char_or_string), XSTRING_LENGTH (char_or_string));
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
328 else
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
329 {
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
330 Ibyte str[MAX_ICHAR_LEN];
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
331 Bytecount len;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
332
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
333 CHECK_CHAR_COERCE_INT (char_or_string);
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
334 len = set_itext_ichar (str, XCHAR (char_or_string));
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
335 write_string_to_mswindows_debugging_output (str, len);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
336 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
337
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
338 return char_or_string;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
339 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
340
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
341 void
1346
01c57eb70ae9 [xemacs-hg @ 2003-03-09 02:27:27 by ben]
ben
parents: 1204
diff changeset
342 write_string_to_mswindows_debugging_output (const Ibyte *str, Bytecount len)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
343 {
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
344 const Extbyte *extptr;
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
345 if (initialized && !inhibit_non_essential_conversion_operations)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
346 {
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
347 TO_EXTERNAL_FORMAT (DATA, (str, len),
4981
4aebb0131297 Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
Ben Wing <ben@xemacs.org>
parents: 2850
diff changeset
348 C_STRING_ALLOCA, extptr, Qmswindows_tstr);
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
349 qxeOutputDebugString (extptr);
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
350 }
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
351 else
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
352 {
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
353 #ifdef NON_ASCII_INTERNAL_FORMAT
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
354 #error Do something here
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
355 #endif
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
356 /* STR may not be null-terminated so make it that way. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
357 Extbyte *ext = alloca_extbytes (len + 1);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
358 memcpy (ext, str, len);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
359 ext[len] = '\0';
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
360 OutputDebugStringA (ext);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 872
diff changeset
361 }
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
362 }
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
363
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
364 #ifdef DEBUG_XEMACS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
365
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
366 /*
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
367 * Random helper functions for debugging.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
368 * Intended for use in the MSVC "Watch" window which doesn't like
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
369 * the aborts that the error_check_foo() functions can make.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
370 */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
371 struct lrecord_header *DHEADER (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
372 struct lrecord_header *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
373 DHEADER (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
374 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
375 return LRECORDP (obj) ? XRECORD_LHEADER (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
376 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
377
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
378 void *DOPAQUE_DATA (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
379 void *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
380 DOPAQUE_DATA (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
381 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
382 return OPAQUEP (obj) ? OPAQUE_DATA (XOPAQUE (obj)) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
383 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
384
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
385 Lisp_Event *DEVENT (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
386 Lisp_Event *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
387 DEVENT (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
388 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
389 return EVENTP (obj) ? XEVENT (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
390 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
391
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
392 Lisp_Cons *DCONS (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
393 Lisp_Cons *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
394 DCONS (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
395 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
396 return CONSP (obj) ? XCONS (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
397 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
398
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
399 Lisp_Cons *DCONSCDR (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
400 Lisp_Cons *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
401 DCONSCDR (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
402 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
403 return (CONSP (obj) && CONSP (XCDR (obj))) ? XCONS (XCDR (obj)) : 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
404 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
405
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
406 Ibyte *DSTRING (Lisp_Object obj);
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
407 Ibyte *
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
408 DSTRING (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
409 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
410 return STRINGP (obj) ? XSTRING_DATA (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
411 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
412
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
413 Lisp_Vector *DVECTOR (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
414 Lisp_Vector *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
415 DVECTOR (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
416 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
417 return VECTORP (obj) ? XVECTOR (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
418 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
419
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
420 Lisp_Symbol *DSYMBOL (Lisp_Object obj);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
421 Lisp_Symbol *
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
422 DSYMBOL (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
423 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
424 return SYMBOLP (obj) ? XSYMBOL (obj) : NULL;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
425 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
426
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
427 Ibyte *DSYMNAME (Lisp_Object obj);
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 800
diff changeset
428 Ibyte *
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
429 DSYMNAME (Lisp_Object obj)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
430 {
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 771
diff changeset
431 return SYMBOLP (obj) ? XSTRING_DATA (XSYMBOL (obj)->name) : NULL;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
432 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
433
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
434 #endif /* DEBUG_XEMACS */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
435
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
436 DEFUN ("mswindows-message-box", Fmswindows_message_box, 1, 3, 0, /*
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
437 Pop up an MS Windows message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
438 MESSAGE is the string to display. Optional argument FLAG controls
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
439 what appears in the box and how it behaves; it is a symbol or list of
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
440 symbols, described below. Second optional argument TITLE controls the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
441 title bar; if omitted, a standard title bar will be used, probably
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
442 displaying "XEmacs".
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
443
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
444 Possible flags are
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
445
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
446
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
447 -- To specify the buttons in the message box:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
448
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
449 abortretryignore
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
450 The message box contains three push buttons: Abort, Retry, and Ignore.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
451 ok
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
452 The message box contains one push button: OK. This is the default.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
453 okcancel
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
454 The message box contains two push buttons: OK and Cancel.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
455 retrycancel
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
456 The message box contains two push buttons: Retry and Cancel.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
457 yesno
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
458 The message box contains two push buttons: Yes and No.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
459 yesnocancel
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
460 The message box contains three push buttons: Yes, No, and Cancel.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
461
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
462
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
463 -- To display an icon in the message box:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
464
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
465 iconexclamation, iconwarning
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
466 An exclamation-point icon appears in the message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
467 iconinformation, iconasterisk
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
468 An icon consisting of a lowercase letter i in a circle appears in
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
469 the message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
470 iconquestion
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
471 A question-mark icon appears in the message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
472 iconstop, iconerror, iconhand
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
473 A stop-sign icon appears in the message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
474
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
475
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
476 -- To indicate the default button:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
477
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
478 defbutton1
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
479 The first button is the default button. This is the default.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
480 defbutton2
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
481 The second button is the default button.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
482 defbutton3
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
483 The third button is the default button.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
484 defbutton4
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
485 The fourth button is the default button.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
486
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
487
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
488 -- To indicate the modality of the dialog box:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
489
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
490 applmodal
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
491 The user must respond to the message box before continuing work in
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
492 the window identified by the hWnd parameter. However, the user can
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
493 move to the windows of other applications and work in those windows.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
494 Depending on the hierarchy of windows in the application, the user
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
495 may be able to move to other windows within the application. All
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
496 child windows of the parent of the message box are automatically
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
497 disabled, but popup windows are not. This is the default.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
498 systemmodal
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
499 Same as applmodal except that the message box has the WS_EX_TOPMOST
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
500 style. Use system-modal message boxes to notify the user of serious,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
501 potentially damaging errors that require immediate attention (for
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
502 example, running out of memory). This flag has no effect on the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
503 user's ability to interact with windows other than those associated
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
504 with hWnd.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
505 taskmodal
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
506 Same as applmodal except that all the top-level windows belonging to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
507 the current task are disabled if the hWnd parameter is NULL. Use
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
508 this flag when the calling application or library does not have a
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
509 window handle available but still needs to prevent input to other
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
510 windows in the current application without suspending other
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
511 applications.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
512
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
513
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
514 In addition, you can specify the following flags:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
515
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
516 default-desktop-only
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
517 The desktop currently receiving input must be a default desktop;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
518 otherwise, the function fails. A default desktop is one an
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
519 application runs on after the user has logged on.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
520 help
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
521 Adds a Help button to the message box. Choosing the Help button or
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
522 pressing F1 generates a Help event.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
523 right
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
524 The text is right-justified.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
525 rtlreading
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
526 Displays message and caption text using right-to-left reading order
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
527 on Hebrew and Arabic systems.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
528 setforeground
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
529 The message box becomes the foreground window. Internally, Windows
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
530 calls the SetForegroundWindow function for the message box.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
531 topmost
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
532 The message box is created with the WS_EX_TOPMOST window style.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
533 service-notification
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
534 Windows NT only: The caller is a service notifying the user of an
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
535 event. The function displays a message box on the current active
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
536 desktop, even if there is no user logged on to the computer. If
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
537 this flag is set, the hWnd parameter must be NULL. This is so the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
538 message box can appear on a desktop other than the desktop
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
539 corresponding to the hWnd.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
540
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
541
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
542
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
543 The return value is one of the following menu-item values returned by
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
544 the dialog box:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
545
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
546 abort
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
547 Abort button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
548 cancel
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
549 Cancel button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
550 ignore
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
551 Ignore button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
552 no
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
553 No button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
554 ok
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
555 OK button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
556 retry
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
557 Retry button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
558 yes
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
559 Yes button was selected.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
560
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
561 If a message box has a Cancel button, the function returns the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
562 `cancel' value if either the ESC key is pressed or the Cancel button
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
563 is selected. If the message box has no Cancel button, pressing ESC has
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
564 no effect. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
565 (message_, flags, title))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
566 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
567 Extbyte *msgout;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
568 Extbyte *titleout = 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
569 UINT sty = 0;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
570
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
571 if (!LISTP (flags))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
572 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
573 CHECK_SYMBOL (flags);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
574 flags = list1 (flags);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
575 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
576
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
577 CHECK_STRING (message_);
4981
4aebb0131297 Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
Ben Wing <ben@xemacs.org>
parents: 2850
diff changeset
578 msgout = LISP_STRING_TO_TSTR (message_);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
579
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
580 if (!NILP (title))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
581 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
582 CHECK_STRING (title);
4981
4aebb0131297 Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
Ben Wing <ben@xemacs.org>
parents: 2850
diff changeset
583 titleout = LISP_STRING_TO_TSTR (title);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
584 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
585
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
586 {
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
587 EXTERNAL_LIST_LOOP_2 (st, flags)
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
588 {
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
589 CHECK_SYMBOL (st);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
590 if (0)
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
591 ;
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
592 #define FROB(sym, val) else if (EQ (st, sym)) sty |= val
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
593 FROB (Qabortretryignore, MB_ABORTRETRYIGNORE);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
594 FROB (Qapplmodal, MB_APPLMODAL);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
595 FROB (Qdefault_desktop_only, MB_DEFAULT_DESKTOP_ONLY);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
596 FROB (Qdefbutton1, MB_DEFBUTTON1);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
597 FROB (Qdefbutton2, MB_DEFBUTTON2);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
598 FROB (Qdefbutton3, MB_DEFBUTTON3);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
599 FROB (Qdefbutton4, MB_DEFBUTTON4);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
600 FROB (Qhelp, MB_HELP);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
601 FROB (Qiconasterisk, MB_ICONASTERISK);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
602 FROB (Qiconexclamation, MB_ICONEXCLAMATION);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
603 FROB (Qiconhand, MB_ICONHAND);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
604 FROB (Qiconinformation, MB_ICONINFORMATION);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
605 FROB (Qiconquestion, MB_ICONQUESTION);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
606 FROB (Qiconstop, MB_ICONSTOP);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
607 FROB (Qok, MB_OK);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
608 FROB (Qokcancel, MB_OKCANCEL);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
609 FROB (Qretrycancel, MB_RETRYCANCEL);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
610 FROB (Qright, MB_RIGHT);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
611 FROB (Qrtlreading, MB_RTLREADING);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
612 FROB (Qservice_notification, MB_SERVICE_NOTIFICATION);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
613 FROB (Qsetforeground, MB_SETFOREGROUND);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
614 FROB (Qsystemmodal, MB_SYSTEMMODAL);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
615 FROB (Qtaskmodal, MB_TASKMODAL);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
616 FROB (Qtopmost, MB_TOPMOST);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
617 FROB (Qyesno, MB_YESNO);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
618 FROB (Qyesnocancel, MB_YESNOCANCEL);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
619 #undef FROB
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
620
2367
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
621 else
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
622 invalid_constant ("Unrecognized flag", st);
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
623 }
ecf1ebac70d8 [xemacs-hg @ 2004-11-04 23:05:23 by ben]
ben
parents: 2286
diff changeset
624 }
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
625
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
626 {
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
627 int retval = qxeMessageBox (NULL, msgout, titleout, sty);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
628
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
629 if (retval == 0)
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
630 out_of_memory ("When calling `mswindows-message-box'", Qunbound);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
631
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
632 #define FROB(sym, val) if (retval == val) return sym
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
633 FROB (Qabort, IDABORT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
634 FROB (Qcancel, IDCANCEL);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
635 FROB (Qignore, IDIGNORE);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
636 FROB (Qno, IDNO);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
637 FROB (Qok, IDOK);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
638 FROB (Qretry, IDRETRY);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
639 FROB (Qyes, IDYES);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
640 #undef FROB
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
641
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
642 invalid_argument ("Unknown return value from MessageBox()",
5581
56144c8593a8 Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5402
diff changeset
643 make_fixnum (retval));
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
644 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
645
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
646 return Qnil;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
647 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
648
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
649 static Lisp_Object
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
650 msprinter_canonicalize_console_connection (Lisp_Object connection,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
651 Error_Behavior errb)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
652 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
653 /* If nil connection is specified, transform it into the name
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
654 of the default printer */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
655 if (NILP (connection))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
656 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
657 connection = msprinter_default_printer ();
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
658 if (NILP (connection))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
659 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
660 if (ERRB_EQ (errb, ERROR_ME))
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
661 invalid_state ("There is no default printer in the system",
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
662 Qunbound);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
663 else
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
664 return Qunbound;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
665 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
666 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
667
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
668 CHECK_STRING (connection);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
669 return connection;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
670 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
671
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
672 static Lisp_Object
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
673 msprinter_canonicalize_device_connection (Lisp_Object connection,
578
190b164ddcac [xemacs-hg @ 2001-05-25 11:26:50 by ben]
ben
parents: 563
diff changeset
674 Error_Behavior errb)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
675 {
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
676 return msprinter_canonicalize_console_connection (connection, errb);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
677 }
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
678
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
681 /* initialization */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
682 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
683
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
684 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
685 syms_of_console_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
686 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
687 DEFSUBR (Fmswindows_debugging_output);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
688
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
689 DEFSYMBOL (Qabortretryignore);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
690 DEFSYMBOL (Qapplmodal);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
691 DEFSYMBOL (Qdefault_desktop_only);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
692 DEFSYMBOL (Qdefbutton1);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
693 DEFSYMBOL (Qdefbutton2);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
694 DEFSYMBOL (Qdefbutton3);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
695 DEFSYMBOL (Qdefbutton4);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
696 /* DEFSYMBOL (Qhelp); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
697 DEFSYMBOL (Qiconasterisk);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
698 DEFSYMBOL (Qiconexclamation);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
699 DEFSYMBOL (Qiconhand);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
700 DEFSYMBOL (Qiconinformation);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
701 DEFSYMBOL (Qiconquestion);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
702 DEFSYMBOL (Qiconstop);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
703 /* DEFSYMBOL (Qok); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
704 DEFSYMBOL (Qokcancel);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
705 DEFSYMBOL (Qretrycancel);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
706 /* DEFSYMBOL (Qright); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
707 DEFSYMBOL (Qrtlreading);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
708 DEFSYMBOL (Qservice_notification);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
709 DEFSYMBOL (Qsetforeground);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
710 DEFSYMBOL (Qsystemmodal);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
711 DEFSYMBOL (Qtaskmodal);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
712 DEFSYMBOL (Qtopmost);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
713 DEFSYMBOL (Qyesno);
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
714 DEFSYMBOL (Qyesnocancel);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
715
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
716 /* DEFSYMBOL (Qabort); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
717 /* DEFSYMBOL (Qcancel); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
718 /* DEFSYMBOL (Qignore); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
719 /* DEFSYMBOL (Qno); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
720 /* DEFSYMBOL (Qok); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
721 /* DEFSYMBOL (Qretry); */
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 442
diff changeset
722 /* DEFSYMBOL (Qyes); */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
723
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
724 DEFSUBR (Fmswindows_message_box);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
725 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
726
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
727 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
728 console_type_create_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
729 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
730 INITIALIZE_CONSOLE_TYPE (mswindows, "mswindows", "console-mswindows-p");
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
731
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
732 /* console methods */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
733 /* CONSOLE_HAS_METHOD (mswindows, init_console); */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
734 /* CONSOLE_HAS_METHOD (mswindows, mark_console); */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
735 CONSOLE_HAS_METHOD (mswindows, initially_selected_for_input);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
736 /* CONSOLE_HAS_METHOD (mswindows, delete_console); */
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
737 CONSOLE_HAS_METHOD (mswindows, canonicalize_console_connection);
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
738 CONSOLE_HAS_METHOD (mswindows, canonicalize_device_connection);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
739 /* CONSOLE_HAS_METHOD (mswindows, semi_canonicalize_console_connection); */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
740 /* CONSOLE_HAS_METHOD (mswindows, semi_canonicalize_device_connection); */
2828
a25c824ed558 [xemacs-hg @ 2005-06-26 18:04:49 by aidan]
aidan
parents: 2367
diff changeset
741 CONSOLE_HAS_METHOD (mswindows, perhaps_init_unseen_key_defaults);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
742
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
743 INITIALIZE_CONSOLE_TYPE (msprinter, "msprinter", "console-msprinter-p");
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
744 CONSOLE_HAS_METHOD (msprinter, canonicalize_console_connection);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
745 CONSOLE_HAS_METHOD (msprinter, canonicalize_device_connection);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
746 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
747
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
748 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
749 reinit_console_type_create_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
750 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
751 REINITIALIZE_CONSOLE_TYPE (mswindows);
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
752 REINITIALIZE_CONSOLE_TYPE (msprinter);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
753 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
754
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
755 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
756 vars_of_console_mswindows (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
757 {
2850
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
758 DEFVAR_LISP ("mswindows-seen-characters", &Vmswindows_seen_characters /*
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
759 Hash table of non-ASCII characters the MS Windows subsystem has seen.
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
760 */ );
ad0054aa11f1 [xemacs-hg @ 2005-07-08 08:27:32 by aidan]
aidan
parents: 2828
diff changeset
761 Vmswindows_seen_characters = Qnil;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
762 Fprovide (Qmswindows);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
763 }