Mercurial > hg > xemacs-beta
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); |