Mercurial > hg > xemacs-beta
comparison src/gui-msw.c @ 440:8de8e3f6228a r21-2-28
Import from CVS: tag r21-2-28
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:33:38 +0200 |
parents | 3ecd8885ac67 |
children | abe6d1db359e |
comparison
equal
deleted
inserted
replaced
439:357dd071b03c | 440:8de8e3f6228a |
---|---|
25 #include "gui.h" | 25 #include "gui.h" |
26 #include "redisplay.h" | 26 #include "redisplay.h" |
27 #include "frame.h" | 27 #include "frame.h" |
28 #include "elhash.h" | 28 #include "elhash.h" |
29 #include "console-msw.h" | 29 #include "console-msw.h" |
30 #include "buffer.h" | |
30 | 31 |
31 /* | 32 /* |
32 * Return value is Qt if we have dispatched the command, | 33 * Return value is Qt if we have dispatched the command, |
33 * or Qnil if id has not been mapped to a callback. | 34 * or Qnil if id has not been mapped to a callback. |
34 * Window procedure may try other targets to route the | 35 * Window procedure may try other targets to route the |
35 * command if we return nil | 36 * command if we return nil |
36 */ | 37 */ |
37 Lisp_Object | 38 Lisp_Object |
38 mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, WORD id) | 39 mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, DWORD id) |
39 { | 40 { |
40 /* Try to map the command id through the proper hash table */ | 41 /* Try to map the command id through the proper hash table */ |
41 Lisp_Object data, fn, arg, frame; | 42 Lisp_Object data, fn, arg, frame; |
43 | |
44 /* #### make_int should assert that --kkm */ | |
45 assert (XINT (make_int (id)) == id); | |
42 | 46 |
43 data = Fgethash (make_int (id), | 47 data = Fgethash (make_int (id), |
44 FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f), Qnil); | 48 FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f), Qnil); |
45 | 49 |
46 if (NILP (data) || UNBOUNDP (data)) | 50 if (NILP (data) || UNBOUNDP (data)) |
53 mswindows_enqueue_misc_user_event (frame, fn, arg); | 57 mswindows_enqueue_misc_user_event (frame, fn, arg); |
54 | 58 |
55 return Qt; | 59 return Qt; |
56 } | 60 } |
57 | 61 |
62 DEFUN ("mswindows-shell-execute", Fmswindows_shell_execute, 2, 4, 0, /* | |
63 Get Windows to perform OPERATION on DOCUMENT. | |
64 This is a wrapper around the ShellExecute system function, which | |
65 invokes the application registered to handle OPERATION for DOCUMENT. | |
66 OPERATION is typically \"open\", \"print\" or \"explore\" (but can be | |
67 nil for the default action), and DOCUMENT is typically the name of a | |
68 document file or URL, but can also be a program executable to run or | |
69 a directory to open in the Windows Explorer. | |
70 | |
71 If DOCUMENT is a program executable, PARAMETERS can be a string | |
72 containing command line parameters, but otherwise should be nil. | |
73 | |
74 SHOW-FLAG can be used to control whether the invoked application is hidden | |
75 or minimized. If SHOW-FLAG is nil, the application is displayed normally, | |
76 otherwise it is an integer representing a ShowWindow flag: | |
77 | |
78 0 - start hidden | |
79 1 - start normally | |
80 3 - start maximized | |
81 6 - start minimized | |
82 */ | |
83 (operation, document, parameters, show_flag)) | |
84 { | |
85 Lisp_Object current_dir; | |
86 | |
87 CHECK_STRING (document); | |
88 | |
89 /* Encode filename and current directory. */ | |
90 current_dir = current_buffer->directory; | |
91 if ((int) ShellExecute (NULL, | |
92 (STRINGP (operation) ? | |
93 XSTRING (operation)->data : NULL), | |
94 XSTRING (document)->data, | |
95 (STRINGP (parameters) ? | |
96 XSTRING (parameters)->data : NULL), | |
97 XSTRING (current_dir)->data, | |
98 (INTP (show_flag) ? | |
99 XINT (show_flag) : SW_SHOWDEFAULT)) | |
100 > 32) | |
101 return Qt; | |
102 | |
103 error ("ShellExecute failed"); | |
104 return Qnil; | |
105 } | |
106 | |
107 void | |
108 syms_of_gui_mswindows (void) | |
109 { | |
110 DEFSUBR (Fmswindows_shell_execute); | |
111 } |