comparison src/device-msw.c @ 249:83b3d10dcba9 r20-5b23

Import from CVS: tag r20-5b23
author cvs
date Mon, 13 Aug 2007 10:19:09 +0200
parents 51092a27c943
children 727739f917cb
comparison
equal deleted inserted replaced
248:ad40ac2754d8 249:83b3d10dcba9
33 #include "lisp.h" 33 #include "lisp.h"
34 34
35 #include "console-msw.h" 35 #include "console-msw.h"
36 #include "console-stream.h" 36 #include "console-stream.h"
37 #include "events.h" 37 #include "events.h"
38 #include "event-msw.h"
39 #include "faces.h" 38 #include "faces.h"
40 #include "frame.h" 39 #include "frame.h"
40 #include "sysdep.h"
41
42 /* win32 DDE management library globals */
43 DWORD mswindows_dde_mlid;
44 HSZ mswindows_dde_service;
45 HSZ mswindows_dde_topic_system;
46 HSZ mswindows_dde_item_open;
41 47
42 Lisp_Object Qinit_pre_mswindows_win, Qinit_post_mswindows_win; 48 Lisp_Object Qinit_pre_mswindows_win, Qinit_post_mswindows_win;
43 49
44 static void 50 static void
45 mswindows_init_device (struct device *d, Lisp_Object props) 51 mswindows_init_device (struct device *d, Lisp_Object props)
46 { 52 {
47 WNDCLASS wc; 53 WNDCLASSEX wc;
48 HWND desktop; 54 HWND desktop;
49 HDC hdc; 55 HDC hdc;
50 56
51 DEVICE_INFD (d) = DEVICE_OUTFD (d) = -1; 57 DEVICE_INFD (d) = DEVICE_OUTFD (d) = -1;
52 init_baud_rate (d); 58 init_baud_rate (d);
69 ReleaseDC(desktop, hdc); 75 ReleaseDC(desktop, hdc);
70 76
71 DEVICE_CLASS(d) = Qcolor; 77 DEVICE_CLASS(d) = Qcolor;
72 78
73 /* Register the main window class */ 79 /* Register the main window class */
80 wc.cbSize = sizeof (WNDCLASSEX);
74 wc.style = CS_OWNDC; /* One DC per window */ 81 wc.style = CS_OWNDC; /* One DC per window */
75 wc.lpfnWndProc = (WNDPROC) mswindows_wnd_proc; 82 wc.lpfnWndProc = (WNDPROC) mswindows_wnd_proc;
76 wc.cbClsExtra = 0; 83 wc.cbClsExtra = 0;
77 wc.cbWndExtra = MSWINDOWS_WINDOW_EXTRA_BYTES; 84 wc.cbWndExtra = MSWINDOWS_WINDOW_EXTRA_BYTES;
78 wc.hInstance = NULL; /* ? */ 85 wc.hInstance = NULL; /* ? */
81 /* Background brush is only used during sizing, when XEmacs cannot 88 /* Background brush is only used during sizing, when XEmacs cannot
82 take over */ 89 take over */
83 wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1); 90 wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
84 wc.lpszMenuName = NULL; 91 wc.lpszMenuName = NULL;
85 wc.lpszClassName = XEMACS_CLASS; 92 wc.lpszClassName = XEMACS_CLASS;
86 RegisterClass(&wc); /* XXX FIXME: Should use RegisterClassEx */ 93 wc.hIconSm = LoadImage (GetModuleHandle (NULL), XEMACS_CLASS,
94 IMAGE_ICON, 16, 16, 0);
95 RegisterClassEx (&wc);
96 }
97
98 static void
99 mswindows_finish_init_device (struct device *d, Lisp_Object props)
100 {
101 /* Initialise DDE management library and our related globals */
102 mswindows_dde_mlid = 0;
103 DdeInitialize (&mswindows_dde_mlid, mswindows_dde_callback,
104 APPCMD_FILTERINITS|CBF_FAIL_SELFCONNECTIONS|CBF_FAIL_ADVISES|
105 CBF_FAIL_POKES|CBF_FAIL_REQUESTS|CBF_SKIP_ALLNOTIFICATIONS, 0);
106
107 mswindows_dde_service = DdeCreateStringHandle (mswindows_dde_mlid, XEMACS_CLASS, 0);
108 mswindows_dde_topic_system = DdeCreateStringHandle (mswindows_dde_mlid, SZDDESYS_TOPIC, 0);
109 mswindows_dde_item_open = DdeCreateStringHandle (mswindows_dde_mlid,
110 TEXT(MSWINDOWS_DDE_ITEM_OPEN), 0);
111 DdeNameService (mswindows_dde_mlid, mswindows_dde_service, 0L, DNS_REGISTER);
112 }
113
114 static void
115 mswindows_delete_device (struct device *d)
116 {
117 DdeNameService (mswindows_dde_mlid, 0L, 0L, DNS_REGISTER);
118 DdeUninitialize (mswindows_dde_mlid);
87 } 119 }
88 120
89 static int 121 static int
90 mswindows_device_pixel_width (struct device *d) 122 mswindows_device_pixel_width (struct device *d)
91 { 123 {
136 168
137 void 169 void
138 console_type_create_device_mswindows (void) 170 console_type_create_device_mswindows (void)
139 { 171 {
140 CONSOLE_HAS_METHOD (mswindows, init_device); 172 CONSOLE_HAS_METHOD (mswindows, init_device);
141 /* CONSOLE_HAS_METHOD (mswindows, finish_init_device); */ 173 CONSOLE_HAS_METHOD (mswindows, finish_init_device);
142 /* CONSOLE_HAS_METHOD (mswindows, mark_device); */ 174 /* CONSOLE_HAS_METHOD (mswindows, mark_device); */
143 /* CONSOLE_HAS_METHOD (mswindows, delete_device); */ 175 CONSOLE_HAS_METHOD (mswindows, delete_device);
144 CONSOLE_HAS_METHOD (mswindows, device_pixel_width); 176 CONSOLE_HAS_METHOD (mswindows, device_pixel_width);
145 CONSOLE_HAS_METHOD (mswindows, device_pixel_height); 177 CONSOLE_HAS_METHOD (mswindows, device_pixel_height);
146 CONSOLE_HAS_METHOD (mswindows, device_mm_width); 178 CONSOLE_HAS_METHOD (mswindows, device_mm_width);
147 CONSOLE_HAS_METHOD (mswindows, device_mm_height); 179 CONSOLE_HAS_METHOD (mswindows, device_mm_height);
148 CONSOLE_HAS_METHOD (mswindows, device_bitplanes); 180 CONSOLE_HAS_METHOD (mswindows, device_bitplanes);