2014-04-26 4 views
0

CTreeCtrl을 사용하는 C++ MFC 응용 프로그램이 있습니다. Windows 7 및 Visual Studio 2008을 실행하고 있습니다. 대신 확장/축소 단추에 화살표가있는 트리 컨트롤을 얻으려고합니다. +/-CTreeCtrl에 대한 업데이트 된 테마를 얻는 방법

내가 찾고있는 좋은 예는 Visual Studio에서 프로젝트의 속성을 편집 할 때 표시되는 트리 컨트롤입니다.

상관없이 테마를 수정하려면 어떤 스타일 또는 시도 난 아직도 간단한 뭔가를 놓친 거지 같은 느낌 +/-

이 어떤 도움을 주시면 감사하겠습니다 이전 XP의 스타일이 없습니다.

+1

앱에 매니페스트를 제공하셨습니까? – user1793036

+0

Microsoft 제품에서 내부적으로 사용하는 일부 컨트롤은 개발자가 사용할 수 없습니다 **. 이 경우 모양과 느낌을 직접 렌더링해야합니다. – rrirower

답변

0

, 비스타 스타일

LRESULT EnableVistaTheme(HWND hwnd, LPCWSTR classList, LPCWSTR subApp, LPCWSTR idlist) 
{ 
    LRESULT lResult = S_FALSE; 

HRESULT (__stdcall *pSetWindowTheme)(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList); 
HANDLE (__stdcall *pOpenThemeData)(HWND hwnd, LPCWSTR pszClassList); 
HRESULT (__stdcall *pCloseThemeData)(HANDLE hTheme); 

HMODULE hinstDll = ::LoadLibrary(_T("UxTheme.dll")); 
if (hinstDll) 
{ 
    (FARPROC&)pOpenThemeData = ::GetProcAddress(hinstDll, "OpenThemeData"); 
    (FARPROC&)pCloseThemeData = ::GetProcAddress(hinstDll, "CloseThemeData"); 
    (FARPROC&)pSetWindowTheme = ::GetProcAddress(hinstDll, "SetWindowTheme"); 
    if (pSetWindowTheme && pOpenThemeData && pCloseThemeData) 
    { 
     HANDLE theme = pOpenThemeData(hwnd,classList); 
     if (theme!=NULL) 
     { 
      VERIFY(pCloseThemeData(theme)==S_OK); 
      lResult = pSetWindowTheme(hwnd, subApp, idlist); 
     } 
    } 
    ::FreeLibrary(hinstDll); 
} 
return lResult; 
} 

를 얻을 수와 같은 매개 변수를 사용하여이 함수를 호출하기 위해이 기능을 추가

HWND :귀하의 트리 컨트롤의 핸들

classList :L"TreeView"

subApp :L"Explorer"

IDLIST :NULL

관련 문제