를 사용하여 그룹 상자 캡션내가 (관리없이 .NET 또는 아무것도) 나는 WIN32 붙어 있어요는 Win32
답변
의 글꼴과 색상을 설정 할 어떻게 WM_CTLCOLORSTATIC notification 당신이 계신 것 같아요.
제어 글꼴을 설정하는 일반적인 방법을 사용하여 글꼴을 설정합니다. CreateFont로 만든 HFONT를 사용하여 창 초기화에서 WM_SETFONT 메시지를 보냅니다. 예 :
SendDlgItemMessage(hDlg, IDC_STATIC, WM_SETFONT, (WPARAM)hFont, TRUE);
그렇다면 WM_CTLCOLORSTATIC 알림을 사용하여 실제 색상을 설정해야합니다.
case WM_CTLCOLORSTATIC: if(GetDlgItem(hDlg, IDC_STATIC) == (HWND)lParam) { HDC hDC = (HDC)wParam;
SetBkColor(hDC, GetSysColor(COLOR_BTNFACE)); SetTextColor(hDC, RGB(0, 0xFF, 0)); SetBkMode(hDC, TRANSPARENT);
return (INT_PTR)CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
} break;
실제로 솔리드 솔리드를 한 번만 만들고 대화 상자가 사라지면 솔벤트 브러시가 새어 나오기 때문에 삭제해야합니다.
그룹 상자에서는 작동하지 않습니다. 그러나 레이블 (정적 컨트롤)에 대해 작업하고 있습니다. 설명서에있는 내용은 입니다. 정적 컨트롤 또는 읽기 전용 또는 비활성화 된 편집 컨트롤은 컨트롤을 그릴 때 WM_CTLCOLORSTATIC 메시지를 부모 창으로 보냅니다. 그룹 상자가 적합한 지 확실하지 않습니다. 재미있는 점은 비록 중단 점을 설정하면 색이 변하지 않아도 어떤 이유로 제어 (그룹 상자)에 대한 메시지가 전송되고 있다고 생각하기 때문입니다. – Rahul
정말 작동하지 않습니까? 실행중인 내 작은 테스트 응용 프로그램에 잘 작동합니다. 이상한 abit 수 있습니다. 브러시가 맞지 않으면 예를 들어 아무것도하지 않습니다. – tyranid
Vista에서 어떤 차이라도 만들 수 있습니다. – Rahul
WM_CTLCOLORSTATIC은 그룹 상자 제목의 색상을 제어하는 올바른 방법입니다.
그러나 더 이상 작동하지 않습니다. 응용 프로그램에서 버전 6 comctl 라이브러리를 포함하는 매니페스트를 사용하는 경우 Groupbox 컨트롤은 더 이상 브러시를 가져 오기 위해 WM_CTLCOLORSTATIC
을 부모에게 보내지 않습니다. 대화 상자 컨트롤이 Windows 95 컨트롤처럼 못생긴, 사각형 및 회색으로 보이면 XP 스타일을 사용할 수 없으며 그룹 상자의 색을 제어 할 수 있습니다. 하지만 그건 끔찍한 희생이야! : P
다음으로 대부분의 표준 컨트롤은 그림을 제어하기 위해 부모 (대화 상자)에 WM_CTLCOLORxxx
메시지를 보냅니다. 컨트롤을 식별하는 유일한 방법은 컨트롤 ID를 찾는 것입니다. 컨트롤에 특정 색이나 글꼴이 필요하다는 것을 나타내는 식별자를 컨트롤에 할당하는 것이 좋습니다. 즉, 빨간색 텍스트가 필요한 컨트롤에는 IDC_STATIC
을 사용하지 마십시오. 숫자를 IDC_DRAWRED
또는 일부 ID로 설정합니다.
WM_CTLCOLOR
메시지가 올바른 제어인지 여부를 테스트하려면 사용하지 마십시오. GetDlgItem은 특정 ID로 대화 상자의 첫 번째 컨트롤 핸들을 반환하기 때문에 컨트롤이 하나만 칠해집니다.
case WM_CTLCOLORSTATIC:
if(GetWindowLong((HWND)lParam, GWL_ID) == IDC_RED)
return MakeControlRed((HDC)wParam);
당신은 항상 *는 WM_CTLCOLORxxx 메시지에서 HBRUSH를 반환해야 -. 당신이 정말로 단지 HDC가 전달되면서 '변조'할 경우에도 당신이 당신의 대화 PROC에서 유효한 브러시를 반환하지 않는 경우 다이얼로그 윈도우 프로시 저는 여러분이 메시지를 전혀 처리하지 않고 DefWindowProc에 넘겨 준다고 생각합니다. 그러면 여러분이 만든 HDC의 모든 변경 사항이 재설정됩니다. 브러시를 만드는 대신 시스템에 표준 ui 요소를 그리는 대기 상태의 브러시 캐시가 있습니다. GetSysColorBrush
물론, 항상 HBRUSH를 반환 할 필요는 없습니다. 응용 프로그램에서 xp 테마 스타일을 사용하도록 설정 한 경우 때때로 null을 반환 할 수 있습니다. - xp 테마 대화 상자의 색상이 배경색이 다르기 때문에 (특히 탭 컨트롤에서) syscolor 브러시를 반환하면 밝은 배경에 못생긴 회색 상자가 나타납니다. - 특정 경우 대화 관리자가 null을 반환하고 DC에서 변경 내용을 다시 설정할 수 없게합니다.
그래서 WM_CTLCORxxx 내가 내가 WM_CTLCOLORMSGBOX WM_CTLCOLOREDIT WM_CTLCOLORLISTBOX WM_CTLCOLORBTN WM_CTLCOLORDLG WM_CTLCOLORSCROLLBAR WM_CTLCOLORSTATIC – Rahul
당신의 문제가 있습니다 내 winuser.h에 표시되는 모든 찾고 있어요 그룹 상자 - 그들은 새로운 CTLCOLOR을 추가하지 않은 것 같습니다 메시지. 귀하의 옵션은 다음과 같습니다 : - 소유자 - 그룹 상자 그리기 - 피타. 또는 텍스트가없는 그룹 상자 위에 일반 정적 텍스트를 사용하십시오. 또는 Spy ++로 창을보고 아직 발송되지 않은 새로운 메시지가 있는지 확인할 수 있습니다. –
그래서 .NET에서 fore color를 설정하여이 작업을 수행 할 수 있다면 커버 아래에 그려진 소유자가 그룹 상자를 그렸을 것이라고 추측 할 수 있습니까? – Rahul
- 1. win32 dll in C# .net
- 2. (는 Win32)
- 3. C++ CLR win32 또는 다른 제품?
- 4. Win32 또는 MFC에서 Cursors.AppStarting을 가져 오는 중입니까?
- 5. 노력 견적 : C/Win32 또는 C#/.NET 사용 학습
- 6. 는 Win32 :
- 7. win32 API와 .NET 프레임 워크 중 선택
- 8. .NET 런타임은 내부적으로 win32 함수 호출에 매핑됩니까?
- 9. Meteo in win32 APP
- 10. .NET 또는 Win32 "netsh http add urlacl"명령에 해당
- 11. Win32 DLL 또는 OCX에서 GUID를 추출하는 방법
- 12. GetHostByAddr() win32
- 13. Wordwrap Win32
- 14. Win32 동기화
- 15. 텍스트 편집기 개발을위한 VC (win32) 또는 WPF
- 16. CultureInfo.TwoLetterISOLanguageName의 C++ Win32 API
- 17. 관리 코드에서 win32 사용
- 18. Win32 뮤텍스가 대기하지 않습니다.
- 19. 네이티브 Win32 리소스를 .NET 어셈블리에 임베드합니까?
- 20. 현재 실행중인 .NET 스레드와 Win32 스레드의 차이점
- 21. .Net RNGCryptoServiceProvider 클래스 대 Win32 CryptGenRandom() 함수
- 22. memcached for Win32 .net api를 사용하고 추천하십니까?
- 23. Win32 프로세스에서 .NET DLL을 호출하는 방법은 무엇입니까?
- 24. gethostbyname까지도 Win32 오류
- 25. Win32 LB_GETTEXT가 쓰레기를 반환합니다.
- 26. WP32의 win32 창
- 27. Perl Win32 :: API() function
- 28. Win32 - 자동 숨기기 메뉴
- 29. Win32 DLL을 참조하는 어셈블리를로드하려면 어떻게합니까?
- 30. Windows 클래스 등록 Win32
정말 대단한 라이브 생생한 받침대 – Rahul