diff -Nur vim60.old/runtime/doc/options.txt vim60/runtime/doc/options.txt --- vim60.old/runtime/doc/options.txt Wed Sep 26 19:46:46 2001 +++ vim60/runtime/doc/options.txt Tue Oct 30 00:44:36 2001 @@ -2428,6 +2428,15 @@ otherwise it's "grep -n". This option cannot be set from a |modeline|, for security reasons. + *'guialphablend'* *'gal'* +'guialphablend' 'gal' number (default 255) + global + {not in Vi} + {only available when compiled with GUI enabled} + This option makes VIM GUI on Windows 2000 semi-transparent. + 0 and 255 means disable, and the range between 1 and 254 will + make the GUI window semi-transparent. + *'guicursor'* *'gcr'* 'guicursor' 'gcr' string (default "n-v-c:block-Cursor/lCursor, ve:ver35-Cursor, diff -Nur vim60.old/runtime/optwin.vim vim60/runtime/optwin.vim --- vim60.old/runtime/optwin.vim Sun Sep 2 20:36:58 2001 +++ vim60/runtime/optwin.vim Tue Oct 30 00:46:42 2001 @@ -493,6 +493,10 @@ if has("gui") call Header("GUI") + if has("win32") + call append("$", "guialphablend\tsemi-transparency of GUI") + call OptionG("gal", &gal) + endif call append("$", "guifont\tlist of font names to be used in the GUI") call OptionG("gfn", &gfn) if has("xfontset") diff -Nur vim60.old/src/gui_w32.c vim60/src/gui_w32.c --- vim60.old/src/gui_w32.c Wed Sep 19 20:43:48 2001 +++ vim60/src/gui_w32.c Tue Oct 30 00:13:00 2001 @@ -28,6 +28,11 @@ */ #include "gui_w48.c" +/* piaip: alphablend support */ +#define WS_EX_LAYERED (0x80000) +#define LWA_ALPHA (2) +typedef BOOL (WINAPI *TSetLayeredWindowAttributes)(HANDLE, COLORREF, BYTE, DWORD); +static TSetLayeredWindowAttributes SetLayeredWindowAttributes = NULL; #ifdef __MINGW32__ /* @@ -985,6 +990,16 @@ dyn_imm_load(); #endif + // piaip: Load SetLayeredWindowAttributes Library for AlphaBlend in W2k + { + HMODULE usr32 = GetModuleHandle("User32.DLL"); + if(usr32) { + SetLayeredWindowAttributes = (TSetLayeredWindowAttributes) + GetProcAddress(usr32, "SetLayeredWindowAttributes"); + FreeLibrary(usr32); + } + } + /* Create the text area window */ if (GetClassInfo(s_hinst, szTextAreaClass, &wndclass) == 0) { @@ -3324,6 +3339,22 @@ SetForegroundWindow(s_hwnd); } #endif + +// piaip: new alphablend + int +gui_set_alphablend(long alpha) +{ + int AStyle = GetWindowLong(s_hwnd, GWL_EXSTYLE); + + if (alpha < 255 && alpha > 0) { + if ((AStyle & WS_EX_LAYERED) == 0) + SetWindowLong(s_hwnd, GWL_EXSTYLE, AStyle | WS_EX_LAYERED); + SetLayeredWindowAttributes(s_hwnd, 0, (BYTE)alpha, LWA_ALPHA); + return alpha; + } + SetWindowLong(s_hwnd, GWL_EXSTYLE, AStyle & (~WS_EX_LAYERED)); + return 0; +} #if defined(FEAT_MBYTE_IME) && defined(DYNAMIC_IME) static void diff -Nur vim60.old/src/option.c vim60/src/option.c --- vim60.old/src/option.c Wed Sep 26 22:25:52 2001 +++ vim60/src/option.c Mon Oct 29 23:42:06 2001 @@ -911,6 +911,15 @@ {(char_u *)NULL, (char_u *)0L} #endif }, + {"guialphablend", "gal", P_NUM|P_VI_DEF, +#if (defined(FEAT_GUI) && defined(WIN32)) + (char_u *)&p_guialphablend, PV_NONE, + {(char_u *)255L, (char_u *)NULL} +#else + (char_u *)NULL, PV_NONE, + {(char_u *)NULL, (char_u *)NULL} +#endif + }, {"guicursor", "gcr", P_STRING|P_VI_DEF|P_COMMA|P_NODUP, #ifdef CURSOR_SHAPE (char_u *)&p_guicursor, PV_NONE, @@ -2355,6 +2364,7 @@ static int check_opt_strings __ARGS((char_u *val, char **values, int)); static int check_opt_wim __ARGS((void)); + /* * Initialize the options, first part. * @@ -5965,6 +5975,13 @@ if (gui.in_use && gui_mch_adjust_charsize() == OK) gui_set_shellsize(FALSE, FALSE); } +#ifdef WIN32 + else if (pp == &p_guialphablend) + { + if (gui.in_use) + p_guialphablend = gui_set_alphablend(p_guialphablend); + } +#endif #endif #ifdef FEAT_FOLDING diff -Nur vim60.old/src/option.h vim60/src/option.h --- vim60.old/src/option.h Sun Sep 16 21:03:16 2001 +++ vim60/src/option.h Mon Oct 29 23:35:14 2001 @@ -428,6 +428,9 @@ #ifdef FEAT_MOUSESHAPE EXTERN char_u *p_mouseshape; /* 'mouseshape' */ #endif +#if defined(FEAT_GUI) && defined(WIN32) +EXTERN long p_guialphablend; /* 'guialphablend' */ +#endif #if defined(FEAT_GUI) EXTERN char_u *p_go; /* 'guioptions' */ #endif diff -Nur vim60.old/src/proto/gui_w32.pro vim60/src/proto/gui_w32.pro --- vim60.old/src/proto/gui_w32.pro Wed Sep 26 03:49:30 2001 +++ vim60/src/proto/gui_w32.pro Mon Oct 29 23:01:44 2001 @@ -74,4 +74,5 @@ void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey)); int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield)); void gui_mch_set_foreground __ARGS((void)); +int gui_set_alphablend(long alpha); /* vim: set ft=c : */