Windows API를 사용하여 기본 GUI를 만들고 있는데 문제가 발생했습니다. 먼저 (RGB(230,230,230))
을 설정 한 사용자 정의 배경색으로 열리는 기본 창으로 시작합니다. 그런 다음 정적 컨트롤이있는 왼쪽 상단 모서리에 텍스트를 표시합니다.C++의 정적 컨트롤 배경색
settingstext = CreateWindow("STATIC",
"SETTINGS",
SS_LEFT | WS_CHILD,
12,
20,
100,
20,
hwnd,
NULL,
proginstance,
NULL);
ShowWindow(settingstext, 1);
이 작동하지만 텍스트가 표시 될 때 기본 창에 맞게 그것의 배경을 변경하는 방법이 필요합니다 그렇지 않으면이 조화되지 않는 것처럼 그냥 보인다.
내 질문을 내가 어떻게하면 돼? 저는 현재 아래의 방법을 사용하고 있습니다 만, 저는 알고 싶습니다. 시스템 색상을 변경하지 않고 정적 컨트롤에 대한 CreateWindow
함수 바로 다음에 백그라운드 색상을 어떻게 든 영구적으로 설정하는 방법이 있습니까? 제어하지 말고 WM_CTLCOLORSTATIC
메시지를 보내는 것은 아닙니다. 나는 GetDC
함수를 사용하고 메시지 루프 외부에서 SetBkColor
함수를 사용하여 실험했지만 아무 것도 작동하지 않습니다.
case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(0,0,0));
SetBkColor(hdcStatic, RGB(230,230,230));
return (INT_PTR)CreateSolidBrush(RGB(230,230,230));
}
내가하고 싶은이 나는 때마다 윈도우 페인트 다시 호출 할 필요가 함수 내 메시지 루프를 입력하지 않으
- ... 때문이다.
- 변경 내용을이 정적 컨트롤에만 적용하십시오.
적어도 올바른 방향으로 나를 가리켜 주시면 제공 될 수있는 도움에 대해 매우 감사 할 것입니다. 감사합니다.
'(HWND) lParam == settingstext'을 검사하여 정적 컨트롤에만'WM_CTLCOLORSTATIC' 코드의 효과를 제한 할 수 있습니다. 작성한 모든 브러시가 절대로 삭제되지 않는다는 점에서 예제에 문제가 있습니다. –