分享

消除gvim全屏时的3D边框

 Rainboy913 2013-11-21
消除gvim全屏时的边框,有两种方法:
 
第一种修改源代码,重新编译gvim. 有高手编译好了,你可以到这里下载:http://www./entry/note/vim-73-any-fonts.html
 
第二种,外部插件通过设置gvim窗口位置和大小,视觉上消除变宽. SetWindowPos 函数可以做到.
但最终做到的效果,四周还是有1个像素的边框.
 
下面是我修改了vimtweak.c 插件中的EnableMaximize 函数,重新编译生成新的vimtweak.dll
 
改好的函数如下:

LONG _declspec(dllexport) EnableMaximize(LONG bEnable)
{
 HWND hTop = NULL;
 DWORD dwThreadID;
 int x,y;
 dwThreadID = GetCurrentThreadId();
 EnumThreadWindows(dwThreadID, FindWindowProc, (LPARAM)&hTop);
 if (hTop)
 {
  if (bEnable == 0){
   
   SetWindowLong(hTop, GWL_STYLE,
    GetWindowLong(hTop, GWL_STYLE)|WS_CAPTION);  //还原恢复标题
   
   SendMessage(hTop, WM_SYSCOMMAND, SC_RESTORE, 0);
  }
  else{
   SetWindowLong(hTop, GWL_STYLE,
    GetWindowLong(hTop, GWL_STYLE) & ~WS_CAPTION); //无标题 no title
   SendMessage(hTop, WM_SYSCOMMAND, SC_MAXIMIZE, 0); //最大化
   
   x=GetDeviceCaps(GetDC(hTop),HORZRES); //1024 取得当前显示器的 宽度和高度
   y=GetDeviceCaps(GetDC(hTop),VERTRES); //768

    //设置窗口位置及大小 把窗口最大宽度和最大高度分辨增加14和7像素,位置从 -4,-3 坐标开始.
    //这样边框就画在屏幕外面了,视觉上消除gvim的边框. gvim no border

   SetWindowPos(hTop,0,-4,-3,x+14,y+7,SWP_NOZORDER); 
  }
 }
 return GetLastError();
}
稍后上传修改好的vimtweak.dll.
.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约