当前位置:  开发笔记 > 编程语言 > 正文

在Visual Studio中更改Solution Explorer的背景颜色

如何解决《在VisualStudio中更改SolutionExplorer的背景颜色》经验,为你挑选了2个好方法。

有没有办法在Visual Studio中使用主题更改解决方案资源管理器的背景颜色? - 或者其他任何方式?

我可以通过改变窗口范围的颜色设置来改变它,但显然这会影响太多.



1> Ivan G...:

刚刚在一小时内创建了VS扩展,搜索扩展管理器为"SExColor".请享用 ;)


你能指导我们的源代码吗?这是github吗?我问的原因是因为我想为"服务器资源管理器","待办事项资源管理器","属性","错误列表"和"宏资源管理器"获得相同的结果
你有没有适应2012年?:)

2> 小智..:

@aloneguid ......早就应该见过了..谢谢先生!

@ver(关于vs 2008解决方案的解决方案;) - 一种B52类型的方法,对devenv.exe内的任何SysTreeView32进行地毯式轰炸.可能的额外参数为所需的颜色,否则RGB(220,220,220) - 对我来说效果最好

#include 
#include "psapi.h"
#include "shlwapi.h"
#include "commctrl.h"


COLORREF clr = RGB(220,220,220);

BOOL CALLBACK wenum( HWND hwnd, LPARAM lParam)
{
   const UINT cb = 261;
   static wchar_t    name[] = L"SysTreeView32",
                     tmp[cb] = {0};
   if( ::GetClassNameW( hwnd, tmp, 260 ) && 0 == _wcsicmp( name, tmp ) )
   {
      ::SendMessageW( hwnd, TVM_SETBKCOLOR, 0, (LPARAM)clr );
   }

   return TRUE;
}

BOOL CALLBACK EnumTops(HWND hwnd, LPARAM lParam) 
{
    DWORD             dwThreadId  = 0, 
                     dwProcessId = 0;
    HINSTANCE         hInstance;
   static wchar_t derVS[]     = L"devenv.exe";
   wchar_t  name[_MAX_PATH]   = {0},
            *exe              = 0;

    HANDLE hProcess;
   if (!hwnd)  return TRUE;     // Not a window
   if (!::IsWindowVisible(hwnd)) return TRUE;       // Not visible

   if (!SendMessage(hwnd, WM_GETTEXT, sizeof(name), (LPARAM)name))
      return TRUE;      // No window title
   dwThreadId = GetWindowThreadProcessId(hwnd, &dwProcessId);
   hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
   if( !GetModuleFileNameEx(hProcess, 0, name, sizeof(name))) goto exit;

   exe = ::PathFindFileNameW( name );
   if( (void*)exe == (void*)name ) goto exit; // mhm? maybe not exit?

   if( _wcsicmp( derVS, exe ) ) goto exit;

   EnumChildWindows( hwnd, wenum, (LPARAM)hProcess );

exit:
   CloseHandle(hProcess);
   int res = GetLastError();
   return res;
}

int wmain(int argc, wchar_t * argv[]) 
{
   if( argc >= 2 )
   {
      wchar_t *end = 0;
      long l = wcstol( argv[1], &end, 16 );
      clr = (DWORD)l;
   }
   ::EnumWindows(EnumTops, NULL);
   return 0;
}

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有