문제

나는 이상한 문제가 있습니다 (음, 적어도 나는 이상하다 =)). 나는 Windows API 주변의 래퍼 인 내 자신의 GUI 라이브러리를 작성하고 있습니다 (예, WTL과 MFC =와 같은 프레임 워크를 알고 있습니다). 현재 단계에서 나는 그러한 방식으로 공통 컨트롤을 배출했습니다. 예를 들어, 편집 클래스는 간단한 창과 그 위의 표준 편집 창 (mainwindow-> ghostwindow-> editbox)으로 구성됩니다. 예를 들어 편집 클래스 자체 내에서 편집의 배경색을 변경할 수있는 방법입니다.

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

그리고 initcommoncontrolsex를 불렀고 Manifest 파일을 프로그램에 첨부 할 때까지 잘 작동했습니다. 이 작업을 수행 한 후에는 내 편집이 초점이있을 때만 색상을 변경할 수 있습니다. 솔직히 말해서, 나는 왜 이런 식으로 행동하는지, 내가 무엇을 잘못하고 있는지에 대한 포괄적 인 생각이 없으므로 어떤 도움을 주셔서 감사합니다.

감사합니다, #535.

도움이 되었습니까?

해결책 2

글쎄, 내가 생각했던 것보다 모든 것이 훨씬 쉽습니다. 나는 너무 부주의했다 = (스타일링을 사용하지 않을 때, 하나의 지팡이를 사용하여 :: setbkcolor (...)를 사용하여 배경색을 변경하고 WM_CTLCOLOR*에서 브러시를 반환하여 테두리 색상을 변경합니다. 스타일링을 활성화 한 후에는 상황이 다릅니다. . now :: setbkcolor (...)에 해당합니다 집중하다 색상과 반환 브러시는 배경색이 변경됩니다. 나를 부끄러워 = (

다른 팁

  1. 버전 6 매니페스트를 첨부하면 initcommoncontrolsex에 대한 호출은 불필요 해집니다.

  2. 그래도. 버전 6 공통 컨트롤이로드되면 표준 Windows 컨트롤에도 XP 테마가 사용됩니다. 컨트롤의 배경색은 XP 테마 색상을 사용하여 페인트되어 있으므로 WM_CTLCOLOR* 메시지는 덜 사용됩니다.

  3. 현재 WM_CTLCOLOR* 메시지를 사용하여 다양한 제어 요소의 쿨러를 무시하고 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top