Mercurial > hg > xemacs-beta
diff src/console-msw.h @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children | 11054d720c21 |
line wrap: on
line diff
--- a/src/console-msw.h Mon Aug 13 11:19:22 2007 +0200 +++ b/src/console-msw.h Mon Aug 13 11:20:41 2007 +0200 @@ -29,24 +29,46 @@ Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0. */ -#ifndef INCLUDED_console_msw_h_ -#define INCLUDED_console_msw_h_ +#ifndef _XEMACS_CONSOLE_MSW_H_ +#define _XEMACS_CONSOLE_MSW_H_ #include "console.h" -#include "syswindows.h" -#include "syscommctrl.h" +#ifdef CONST /* I suspect this is safe */ +#undef CONST +#endif +#include <windows.h> +#include <ddeml.h> /* DDE management library */ +#if !defined (__CYGWIN32__) && !defined(__MINGW32__) +#include <shellapi.h> /* FileManager/Explorer drag and drop */ +#include <commctrl.h> +#endif #ifdef HAVE_XPM #include <X11/xpm.h> #endif +/* + * XXX FIXME: The following X modifier defs in events-mod.h clash with win32 + * hotkey defs in winuser.h. For the moment lose the win32 versions. + * Maybe we should rename all of MOD_* to something that doesn't clash. + */ +#ifdef MOD_CONTROL +# undef MOD_CONTROL +#endif +#ifdef MOD_ALT +# undef MOD_ALT +#endif +#ifdef MOD_SHIFT +# undef MOD_SHIFT +#endif + + /* The name of the main window class */ #define XEMACS_CLASS "XEmacs" -#define XEMACS_CONTROL_CLASS "XEmacsControl" /* - * Consoles + * Console */ DECLARE_CONSOLE_TYPE (mswindows); @@ -56,105 +78,44 @@ int infd, outfd; }; -DECLARE_CONSOLE_TYPE (msprinter); /* - * Printer settings, aka devmode - */ - -typedef struct Lisp_Devmode -{ - struct lcrecord_header header; - - /* Pointer to the DEVMODE structure */ - DEVMODE* devmode; - - /* Full printer name. It can be longer than devmode->dmDeviceName - can accomodate, so need to keep it separately */ - char* printer_name; - - /* Printer device this object is currently selected in, or Qnil - if not selected */ - Lisp_Object device; - -} Lisp_Devmode; - - -DECLARE_LRECORD (devmode, Lisp_Devmode); -#define XDEVMODE(x) XRECORD (x, devmode, Lisp_Devmode) -#define XSETDEVMODE(x, p) XSETRECORD (x, p, devmode) -#define DEVMODEP(x) RECORDP (x, devmode) -#define CHECK_DEVMODE(x) CHECK_RECORD (x, devmode) -#define CONCHECK_DEVMODE(x) CONCHECK_RECORD (x, devmode) - -#define DEVMODE_SIZE(dm) ((dm)->dmSize + (dm)->dmDriverExtra) -#define XDEVMODE_SIZE(x) ((x)->devmode ? DEVMODE_SIZE((x)->devmode) : 0) - -/* - * Devices + * Device */ #define MSW_FONTSIZE (LF_FACESIZE*4+12) +struct mswindows_font_enum +{ + char fontname[MSW_FONTSIZE]; + struct mswindows_font_enum *next; +}; + struct mswindows_device { - Lisp_Object fontlist; /* List of strings, device fonts */ - HDC hcdc; /* Compatible DC */ - DWORD update_tick; /* Used when device is modified through - Windows mwssages, see WM_DISPLAYCHANGE - in event-msw.c */ + int logpixelsx, logpixelsy; + int planes, cells; + int horzres, vertres; /* Size in pixels */ + int horzsize, vertsize; /* Size in mm */ + int bitspixel; + struct mswindows_font_enum *fontlist; }; #define DEVICE_MSWINDOWS_DATA(d) DEVICE_TYPE_DATA (d, mswindows) -#define DEVICE_MSWINDOWS_FONTLIST(d) (DEVICE_MSWINDOWS_DATA (d)->fontlist) -#define DEVICE_MSWINDOWS_HCDC(d) (DEVICE_MSWINDOWS_DATA (d)->hcdc) -#define DEVICE_MSWINDOWS_UPDATE_TICK(d) (DEVICE_MSWINDOWS_DATA (d)->update_tick) - -struct msprinter_device -{ - HDC hdc, hcdc; /* Printer and the comp. DCs */ - HANDLE hprinter; - char* name; - Lisp_Object devmode; - Lisp_Object fontlist; -}; - -#define DEVICE_MSPRINTER_DATA(d) DEVICE_TYPE_DATA (d, msprinter) -#define DEVICE_MSPRINTER_HDC(d) (DEVICE_MSPRINTER_DATA (d)->hdc) -#define DEVICE_MSPRINTER_HCDC(d) (DEVICE_MSPRINTER_DATA (d)->hcdc) -#define DEVICE_MSPRINTER_HPRINTER(d) (DEVICE_MSPRINTER_DATA (d)->hprinter) -#define DEVICE_MSPRINTER_FONTLIST(d) (DEVICE_MSPRINTER_DATA (d)->fontlist) -#define DEVICE_MSPRINTER_NAME(d) (DEVICE_MSPRINTER_DATA (d)->name) -#define DEVICE_MSPRINTER_DEVMODE(d) (DEVICE_MSPRINTER_DATA (d)->devmode) +#define DEVICE_MSWINDOWS_LOGPIXELSX(d) (DEVICE_MSWINDOWS_DATA (d)->logpixelsx) +#define DEVICE_MSWINDOWS_LOGPIXELSY(d) (DEVICE_MSWINDOWS_DATA (d)->logpixelsy) +#define DEVICE_MSWINDOWS_PLANES(d) (DEVICE_MSWINDOWS_DATA (d)->planes) +#define DEVICE_MSWINDOWS_CELLS(d) (DEVICE_MSWINDOWS_DATA (d)->cells) +#define DEVICE_MSWINDOWS_HORZRES(d) (DEVICE_MSWINDOWS_DATA (d)->horzres) +#define DEVICE_MSWINDOWS_VERTRES(d) (DEVICE_MSWINDOWS_DATA (d)->vertres) +#define DEVICE_MSWINDOWS_HORZSIZE(d) (DEVICE_MSWINDOWS_DATA (d)->horzsize) +#define DEVICE_MSWINDOWS_VERTSIZE(d) (DEVICE_MSWINDOWS_DATA (d)->vertsize) +#define DEVICE_MSWINDOWS_BITSPIXEL(d) (DEVICE_MSWINDOWS_DATA (d)->bitspixel) +#define DEVICE_MSWINDOWS_FONTLIST(d) (DEVICE_MSWINDOWS_DATA (d)->fontlist) -#define CONSOLE_TYPESYM_MSPRINTER_P(typesym) EQ (typesym, Qmsprinter) -#define DEVICE_MSPRINTER_P(dev) CONSOLE_TYPESYM_MSPRINTER_P (DEVICE_TYPE (dev)) -#define CHECK_MSPRINTER_DEVICE(z) CHECK_DEVICE_TYPE (z, msprinter) -#define CONCHECK_MSPRINTER_DEVICE(z) CONCHECK_DEVICE_TYPE (z, msprinter) - -/* Printer functions in frame-msw.c */ -void msprinter_start_page (struct frame *f); - -/* Common checks */ - -#define DEVICE_MSGDI_P(dev) (DEVICE_MSWINDOWS_P(dev) || DEVICE_MSPRINTER_P(dev)) -#define CHECK_MSGDI_DEVICE(d) \ - do { \ - CHECK_DEVICE (d); \ - if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \ - dead_wrong_type_argument \ - (list3 (Qor, Qmswindows, Qmsprinter), d); \ - } while (0) -#define CONCHECK_MSGDI_DEVICE(d) \ - do { \ - CHECK_DEVICE (d); \ - if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \ - wrong_type_argument \ - (list3 (Qor, Qmswindows, Qmsprinter), d); \ - } while (0) /* - * Frames + * Frame */ typedef struct { @@ -172,8 +133,8 @@ /* DC for this win32 window */ HDC hdc; - /* Used with DeferWindowPos */ - HDWP hdwp; + /* compatible DC for bitmap operations */ + HDC cdc; /* Time of last click event, for button 2 emul */ DWORD last_click_time; @@ -193,7 +154,7 @@ unsigned int menu_checksum; /* Widget glyphs attached to this frame. See glyphs-msw.c */ - Lisp_Object widget_hash_table1, widget_hash_table2, widget_hash_table3; + Lisp_Object widget_hash_table; /* Frame title hash value. See frame-msw.c */ unsigned int title_checksum; @@ -209,7 +170,6 @@ int ignore_next_lbutton_up : 1; int ignore_next_rbutton_up : 1; int sizing : 1; - int paint_pending : 1; /* Whether a WM_PAINT magic event has been queued */ /* Geometry, in characters, as specified by proplist during frame creation. Memebers are set to -1 for unspecified */ @@ -220,15 +180,12 @@ #define FRAME_MSWINDOWS_HANDLE(f) (FRAME_MSWINDOWS_DATA (f)->hwnd) #define FRAME_MSWINDOWS_DC(f) (FRAME_MSWINDOWS_DATA (f)->hdc) +#define FRAME_MSWINDOWS_CDC(f) (FRAME_MSWINDOWS_DATA (f)->cdc) #define FRAME_MSWINDOWS_MENU_HASH_TABLE(f) (FRAME_MSWINDOWS_DATA (f)->menu_hash_table) #define FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) \ (FRAME_MSWINDOWS_DATA (f)->toolbar_hash_table) -#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE1(f) \ - (FRAME_MSWINDOWS_DATA (f)->widget_hash_table1) -#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE2(f) \ - (FRAME_MSWINDOWS_DATA (f)->widget_hash_table2) -#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE3(f) \ - (FRAME_MSWINDOWS_DATA (f)->widget_hash_table3) +#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE(f) \ + (FRAME_MSWINDOWS_DATA (f)->widget_hash_table) #define FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos) \ (FRAME_MSWINDOWS_DATA (f)->toolbar_checksum[pos]) #define FRAME_MSWINDOWS_MENU_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->menu_checksum) @@ -247,31 +204,6 @@ #define XWL_COUNT 1 /* Number of LONGs that we use */ #define MSWINDOWS_WINDOW_EXTRA_BYTES (XWL_COUNT*4) -/* - * Printer frame, aka printer job - */ - -struct msprinter_frame -{ - int left_margin, top_margin, /* All in twips */ - right_margin, bottom_margin; - int charheight, charwidth; /* As per proplist or -1 if not gven */ - int pix_left, pix_top; /* Calculated in init_frame_*, VP offset */ - int job_started : 1; - int page_started : 1; -}; - -#define FRAME_MSPRINTER_DATA(f) FRAME_TYPE_DATA (f, msprinter) -#define FRAME_MSPRINTER_LEFT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->left_margin) -#define FRAME_MSPRINTER_RIGHT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->top_margin) -#define FRAME_MSPRINTER_TOP_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->right_margin) -#define FRAME_MSPRINTER_BOTTOM_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->bottom_margin) -#define FRAME_MSPRINTER_JOB_STARTED(f) (FRAME_MSPRINTER_DATA (f)->job_started) -#define FRAME_MSPRINTER_PAGE_STARTED(f) (FRAME_MSPRINTER_DATA (f)->page_started) -#define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charheight) -#define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charwidth) -#define FRAME_MSPRINTER_PIXLEFT(f) (FRAME_MSPRINTER_DATA (f)->pix_left) -#define FRAME_MSPRINTER_PIXTOP(f) (FRAME_MSPRINTER_DATA (f)->pix_top) /* * Events @@ -292,15 +224,11 @@ /* win32 "Windows" procedure */ LRESULT WINAPI mswindows_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); -LRESULT WINAPI mswindows_control_wnd_proc (HWND hwnd, - UINT msg, WPARAM wParam, - LPARAM lParam); void mswindows_redraw_exposed_area (struct frame *f, int x, int y, int width, int height); void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest); -HWND mswindows_get_selected_frame_hwnd (void); -void mswindows_enqueue_magic_event (HWND hwnd, UINT msg); +void mswindows_enqueue_magic_event (HWND hwnd, UINT message); /* win32 DDE management library */ #define MSWINDOWS_DDE_ITEM_OPEN "Open" @@ -309,62 +237,25 @@ extern HSZ mswindows_dde_topic_system; extern HSZ mswindows_dde_item_open; HDDEDATA CALLBACK mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv, - HSZ hszTopic, HSZ hszItem, - HDDEDATA hdata, + HSZ hszTopic, HSZ hszItem, HDDEDATA hdata, DWORD dwData1, DWORD dwData2); -void mswindows_enqueue_dispatch_event (Lisp_Object event); void mswindows_enqueue_misc_user_event (Lisp_Object channel, Lisp_Object function, Lisp_Object object); -Lisp_Object mswindows_cancel_dispatch_event (Lisp_Event* event); +Lisp_Object mswindows_cancel_dispatch_event (struct Lisp_Event* event); Lisp_Object mswindows_pump_outstanding_events (void); -Lisp_Object mswindows_protect_modal_loop (Lisp_Object (*bfun) - (Lisp_Object barg), +Lisp_Object mswindows_protect_modal_loop (Lisp_Object (*bfun) (Lisp_Object barg), Lisp_Object barg); void mswindows_unmodalize_signal_maybe (void); -COLORREF mswindows_string_to_color (const char *name); -USID emacs_mswindows_create_stream_pair (void* inhandle, void* outhandle, - Lisp_Object* instream, - Lisp_Object* outstream, - int flags); -USID emacs_mswindows_delete_stream_pair (Lisp_Object instream, - Lisp_Object outstream); - #ifdef HAVE_WIN32_PROCESSES -HANDLE get_nt_process_handle (Lisp_Process *p); +HANDLE get_nt_process_handle (struct Lisp_Process *p); #endif extern Lisp_Object Vmswindows_frame_being_created; extern Lisp_Object mswindows_frame_being_created; -void mswindows_get_workspace_coords (RECT *rc); - -HWND mswindows_get_console_hwnd (void); -void mswindows_hide_console (void); -void mswindows_show_console (void); -int mswindows_output_console_string (CONST Extbyte *str, Extcount len); - -Lisp_Object mswindows_enumerate_fonts (HDC hdc); - -int mswindows_char_is_accelerator (struct frame *f, Emchar ch); -Bytecount mswindows_translate_menu_or_dialog_item (Bufbyte *item, Bytecount len, - Bytecount maxlen, Emchar *accel, - Lisp_Object error_name); +void mswindows_enumerate_fonts (struct device *d); -#ifdef HAVE_TOOLBARS -Lisp_Object mswindows_get_toolbar_button_text (struct frame* f, - int command_id); -Lisp_Object mswindows_handle_toolbar_wm_command (struct frame* f, - HWND ctrl, WORD id); -#endif -Lisp_Object mswindows_handle_gui_wm_command (struct frame* f, - HWND ctrl, LPARAM id); - -int mswindows_windows9x_p (void); - - -void mswindows_output_last_error (char *frob); - -#endif /* INCLUDED_console_msw_h_ */ +#endif /* _XEMACS_CONSOLE_MSW_H_ */