Mercurial > emacs
view nt/runemacs.c @ 15148:220145cf7546
(continuation of previous checkin)
(Fwin32_rgb): Dead procedure removed.
(Fwin32_define_rgb_color, Fwin32_load_color_file, win32_map_color,
win32_regenerate_palette, win32_unmap_color): New functions.
(syms_of_w32fns): Set up new lisp functions.
(define_color): Use palettes. Simulate use of PALETTE_RGB to
use closest color instead of dithering.
(map_mode): Function removed.
(WIN32_COLOR, SET_WIN32_COLOR): New macros.
(win32_init_class): Don't set CS_OWNDC in the WNDCLASS style.
(win32_createwindow): Invoke ShowWindow to discard defaults
from parent.
(win32_wnd_proc): Use separate critical sections appropriately.
Handle palette change, show window, and set window position messages.
Record WINDOWPLACEMENT structure length.
D
Detect quit_char.
(Fx_create_frame): Set scrollbar width to be the system standard.
(Ffocus_frame, Funfocus_frame): Functions now do nothing.
(x_to_win32_weight, win32_to_x_weight): Handle "heavy", "extrabold",
"light", "extralight", and "thin" fonts.
(x_to_win32_charset, win32_to_x_charset): New functions.
(win32_to_x_font): Use new height units. Use win32_to_x_charset.
(x_to_win32_font): Use x_to_win32_charset. Support Win32 font names
in addition to X font names.
(win32_load_font, Fx_list_fonts, Fx_display_color_cells,
Fx_display_mm_height, Fx_display_mm_width: Use GetDC directly.
(Fx_open_connection): Support external color mapping files.
(win32_abort): Map abort button to abort, retry to debug, and
ignore to continue.
author | Geoff Voelker <voelker@cs.washington.edu> |
---|---|
date | Fri, 03 May 1996 18:41:13 +0000 |
parents | 4d638e5a9e7d |
children | b76f57d4320b |
line wrap: on
line source
/* Simple program to start Emacs with its console window hidden. This program is provided purely for convenience, since most users will use Emacs in windowing (GUI) mode, and will not want to have an extra console window lying around. */ #define WIN32 #include <windows.h> #include <string.h> #include <malloc.h> int WINAPI WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow) { STARTUPINFO start; SECURITY_ATTRIBUTES sec_attrs; SECURITY_DESCRIPTOR sec_desc; PROCESS_INFORMATION child; int wait_for_child = FALSE; DWORD ret_code = 0; char * new_cmdline; char * p; char modname[MAX_PATH]; if (!GetModuleFileName (NULL, modname, MAX_PATH)) goto error; if ((p = strrchr (modname, '\\')) == NULL) goto error; *p = 0; new_cmdline = alloca (MAX_PATH + strlen (cmdline) + 1); strcpy (new_cmdline, modname); strcat (new_cmdline, "\\emacs.exe "); /* append original arguments if any; first look for -wait as first argument, and apply that ourselves */ if (strncmp (cmdline, "-wait", 5) == 0) { wait_for_child = TRUE; cmdline += 5; } strcat (new_cmdline, cmdline); /* set emacs_dir variable if runemacs was in "%emacs_dir%\bin" */ if ((p = strrchr (modname, '\\')) && stricmp (p, "\\bin") == 0) { *p = 0; SetEnvironmentVariable ("emacs_dir", modname); } memset (&start, 0, sizeof (start)); start.cb = sizeof (start); start.dwFlags = STARTF_USESHOWWINDOW; start.wShowWindow = SW_HIDE; sec_attrs.nLength = sizeof (sec_attrs); sec_attrs.lpSecurityDescriptor = NULL; sec_attrs.bInheritHandle = FALSE; if (CreateProcess (NULL, new_cmdline, &sec_attrs, NULL, TRUE, 0, NULL, NULL, &start, &child)) { if (wait_for_child) { WaitForSingleObject (child.hProcess, INFINITE); GetExitCodeProcess (child.hProcess, &ret_code); } CloseHandle (child.hThread); CloseHandle (child.hProcess); } else goto error; return (int) ret_code; error: MessageBox (NULL, "Could not start Emacs.", "Error", MB_ICONSTOP); return 1; }