Office 2007 스타일에서 MFC 기능 팩을 사용할 때 어떤 색상이 사용되는지 알아보세요.
-
08-06-2019 - |
문제
Microsoft가 Visual Studio 2008용으로 출시한 "MFC 기능 팩"을 사용하도록 레거시 C++ 코드 중 일부를 업데이트하고 있습니다.우리는 새 클래스를 사용하여 CFrameWndEx에서 응용 프로그램을 파생시켰으며 Office 2007 스타일을 적용하여 응용 프로그램을 더욱 현대적인 모양으로 만들고 있습니다.이를 통해 그라데이션으로 채워진 창 제목, 상태 표시줄 등이 제공되고 리본 도구 모음을 사용할 수 있습니다.
그러나 우리 응용 프로그램에는 소유자가 그린 컨트롤이 일부 포함되어 있으므로 기능 팩에서 사용하는 색 구성표와 일치하도록 이를 업데이트하고 싶습니다.이상적으로는 현재 사용중인 밝은색과 음영처리된 도구모음 색상을 알고 싶습니다.
문서와 웹을 검색했지만 아직 아무것도 찾지 못했습니다.이 정보를 찾는 방법을 아는 사람이 있나요?
[편집하다]
특히 런타임에 어떤 색상이 사용되는지 알아내야 합니다.새로운 정적 함수 CMFCVisualManager::SetDefaultManager를 사용하여 런타임 시 애플리케이션의 모양을 변경할 수 있습니다.
다음 msdn 페이지에서는 사용 가능한 스타일 종류, 특히 Office2007 모양을 보여줍니다.msdn에 링크
해결책
MFC 소스 코드를 살펴보셨나요? 다음과 같은 내용을 찾을 수 있습니다.
C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc
다른 팁
CMFCVisualManager는 색상 정보를 얻기 위한 여러 가지 방법을 제공하는 것 같습니다.
cmfcvisualManager :: getSmartDockingBaseGuideColors () cmfcvisualManager :: getToolbarhighlightColor ()
CMFCVisualManager에 대한 MSDN 문서를 살펴보세요.
좋은 제안이지만 불행히도 현재 CMFCVisualManagerOffice2007::Office2007_LunaBlue 스타일로 응용 프로그램을 실행하는 경우 다양한 회색 음영만 반환됩니다.
짜증나게도 msdn 도움말은 "작업 중"이므로 그들이 무엇을 해야 하는지조차 알려주지 않습니다!
afxGlobalData
MFC 기능 팩에서 사용되는 현재 색상, 브러시 및 글꼴에 대한 유용한 정보가 포함되어 있습니다.특히 나는 afxGlobalData.m_clrBarFace
내 자신의 컨트롤 막대 배경을 칠할 때.
(저는 업무용 PC 앞에 있지 않기 때문에 위의 구문이 정확하지 않습니다.)
시도해 보셨나요: 2007 오피스 시스템 문서:솔루션 및 추가 기능을 위한 UI 스타일 가이드 ?
좋아하는 이미지 편집기를 사용하고 화면 캡처에서 색상을 선택할 수 있을 것 같습니다.
"좋아하는 이미지 편집기를 사용하고 화면 캡처에서 색상을 선택할 수 있을 것 같습니다."
이것이 본질적으로 제가 지금 하고 있는 일이며, 색상을 추출하는 상수 목록을 정의했습니다.그래도 별로 고급스러워 보이지는 않네요!
CMFCVisualManager는 색상 정보를 얻기 위한 여러 가지 방법을 제공하는 것 같습니다.
CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()
CMFCVisualManager에 대한 MSDN 문서를 살펴보세요.
@GateKiller, OP는 Office 2007 추가 기능을 개발하지 않으므로 UI 지침은 실제로 도움이 되지 않습니다.다음을 사용하는 MFC 응용 프로그램입니다. Visual C++ 2008 기능 팩 이를 통해 MFC 앱은 Office 2007의 모양과 느낌을 가질 수 있습니다.
좋은 제안이지만 불행히도 현재 CMFCVisualManagerOffice2007::Office2007_LunaBlue 스타일로 응용 프로그램을 실행하는 경우 다양한 회색 음영만 반환됩니다.
CMFCVisualManagerOffice2007::GetTabFrameColors - clrFace 출력 매개변수가 회색입니까?
아마도 그들은 각 테마에 대한 단일 기본 색상 위에 모두 마스크가 있는 것일까요?CMFCVisualManagerOffice2007::GetStyle()을 사용하여 어떤 색 구성표가 적용되는지 확인할 수 있다고 가정하면 해당 색상이 무엇인지 파악한 다음 GetxxxColor() 메서드를 사용하여 일부 마스킹을 수행할 수 있습니다.