duilib 복구 용기 컨트롤 rightbordersize 와 bottombordersize 속성 이 잘못된 bug 를 표시 합 니 다.

전재 출처 를 설명해 주세요. 감사합니다.http://blog.csdn.net/zhuhongshu/article/details/45560943
        DuiLib 의 용기 컨트롤 은 bordersize 로 테두리 폭 을 통일 적 으로 지정 할 수 있 으 며, rightbordersize, bottombordersize 등 속성 으로 한 테두리 의 폭 을 따로 지정 할 수 있 습 니 다.그러나 rightbordersize, bottombordersize 속성 표시 에 문제 가 있 습 니 다. 경계선 을 1 로 설정 할 때 표시 할 수 없고 2 로 설정 할 때 만 표시 합 니 다.
        원본 코드 를 추적 한 결과 CContainerUI 의 DoPaint 함수 에 문제 가 있 음 을 알 수 있 습 니 다.
	void CContainerUI::DoPaint(HDC hDC, const RECT& rcPaint)
	{
		RECT rcTemp = { 0 };
		if( !::IntersectRect(&rcTemp, &rcPaint, &m_rcItem) ) return;

		CRenderClip clip;
		CRenderClip::GenerateClip(hDC, rcTemp, clip);
		CControlUI::DoPaint(hDC, rcPaint);
		//      
	}

          코드 에 있 는 rcTemp 은 CContainerUI 가 그 리 는 범위 입 니 다. 테 두 리 는 최종 적 으로 CControlUI: DoPaint 라 는 코드 로 그 려 집 니 다. 그 전에 커팅 영역의 함 수 를 호출 하여 DC 에 커팅 영역 을 설 치 했 고 GenerateClip 의 내부 에 CreateRectRgnIndirect 함 수 를 호출 했 습 니 다. CreateRectRgnIndirect 함수 가 커팅 영역 을 설정 할 때 오른쪽 과 아래쪽 의 픽 셀 을 무시 합 니 다.그래서 이 문제 가 생 겼 습 니 다.
         복구 코드 는 간단 합 니 다. rcTemp 의 오른쪽 과 아래쪽 에 픽 셀 을 미리 추가 합 니 다.
	void CContainerUI::DoPaint(HDC hDC, const RECT& rcPaint)
	{
		RECT rcTemp = { 0 };
		if( !::IntersectRect(&rcTemp, &rcPaint, &m_rcItem) ) return;

		++rcTemp.right;
		++rcTemp.bottom;
		CRenderClip clip;
		CRenderClip::GenerateClip(hDC, rcTemp, clip);
		CControlUI::DoPaint(hDC, rcPaint);
		//      
	}

요약:
      bug 의 복구 코드 는 이미 나의 Duilib 라 이브 러 리 에 제출 되 었 습 니 다.
      나의 Duilib 라 이브 러 리 코드 다운로드 주소: 클릭 하여 링크 열기
  Redrain  2015.5.7

좋은 웹페이지 즐겨찾기