이현상은 Common-Control 6.0 이상 Manifest 가 포함되어 있고
리바 밴드속성의 cx = cxMinChild 값이 동일할 때 나타난다.
manifest with set Common-Controls version="6.0.0.0"
How to Fix:
rbBand.fMask = RBBIM_CHILD | RBBIM_IDEALSIZE |RBBIM_CHILDSIZE | RBBIM_STYLE | RBBIM_ID ;
.
.
.
LRESULT lResult = (BOOL)InsertBand(&rbBand);
int nIndex = IdToIndex(nID);
/*
If has manifest with set Common-Controls version="6.0.0.0" ,a new band set right align,
,left band is stretching to right side,this code effect killing this bug,
by reduce left band size. krkim 2010.08
*/
새 row 속성이 아닌이상 앞의 밴드폭을 cxMinChild 설정된 값으로 최소화로 해준다.
if(nIndex > 0 && !(rbBand.fStyle & RBBS_BREAK))
MinimizeBand(nIndex-1);
BOOL kxReBarCtrl::InsertBand(LPREBARBANDINFO lprbbi,int nBand)
{
ASSERT(::IsWindow(m_hWnd));
#ifdef FIXBUG
lprbbi->cbSize = GetSizeofRBBI();
#else
lprbbi->cbSize = sizeof(REBARBANDINFO);
#endif
return (BOOL)::SendMessage(m_hWnd, RB_INSERTBAND, nBand, (LPARAM)lprbbi);
}
void kxReBarCtrl::MinimizeBand(int nBand)
{
ASSERT(::IsWindow(m_hWnd));
::SendMessage(m_hWnd, RB_MINIMIZEBAND, nBand, 0L);
}
This is a part of source code in my KFC Library (renamed KFC___ to kx___)
처음에 mask 값과 cx,cxMinChild 등의 값의 폭을 조절하였지만,안되었다.
코드상에서 여러가지 잡다한 조작을 다해봐도 소용없어서, 그냥 포기하고
cx값을 cxMinChild 값 + 14 정도(툴바가 들어간 자리 이외의 Rebar의 Client Free Gap,Grip등의 좌우 여백영역)
Hard code 하였으나,찝찝하던중 Manifest 가 포함되고 안되고의 차이를 발견함.
이 예제는 msdn,코드구루,코드플젝,에그헤드 및 인터넷 어디에도 없음.
누가 이런 동일한 문제로 여기까지 찾아와 볼런진 몰겠지만,..
이문제 원인과 해결 하느라 하루를 삽질한 결과 이곳에 최초 백업용 메모로 남겨둠^^
http://krkim.net
리바 밴드속성의 cx = cxMinChild 값이 동일할 때 나타난다.
manifest with set Common-Controls version="6.0.0.0"
How to Fix:
rbBand.fMask = RBBIM_CHILD | RBBIM_IDEALSIZE |RBBIM_CHILDSIZE | RBBIM_STYLE | RBBIM_ID ;
.
.
.
LRESULT lResult = (BOOL)InsertBand(&rbBand);
int nIndex = IdToIndex(nID);
/*
If has manifest with set Common-Controls version="6.0.0.0" ,a new band set right align,
,left band is stretching to right side,this code effect killing this bug,
by reduce left band size. krkim 2010.08
*/
새 row 속성이 아닌이상 앞의 밴드폭을 cxMinChild 설정된 값으로 최소화로 해준다.
if(nIndex > 0 && !(rbBand.fStyle & RBBS_BREAK))
MinimizeBand(nIndex-1);
BOOL kxReBarCtrl::InsertBand(LPREBARBANDINFO lprbbi,int nBand)
{
ASSERT(::IsWindow(m_hWnd));
#ifdef FIXBUG
lprbbi->cbSize = GetSizeofRBBI();
#else
lprbbi->cbSize = sizeof(REBARBANDINFO);
#endif
return (BOOL)::SendMessage(m_hWnd, RB_INSERTBAND, nBand, (LPARAM)lprbbi);
}
void kxReBarCtrl::MinimizeBand(int nBand)
{
ASSERT(::IsWindow(m_hWnd));
::SendMessage(m_hWnd, RB_MINIMIZEBAND, nBand, 0L);
}
This is a part of source code in my KFC Library (renamed KFC___ to kx___)
처음에 mask 값과 cx,cxMinChild 등의 값의 폭을 조절하였지만,안되었다.
코드상에서 여러가지 잡다한 조작을 다해봐도 소용없어서, 그냥 포기하고
cx값을 cxMinChild 값 + 14 정도(툴바가 들어간 자리 이외의 Rebar의 Client Free Gap,Grip등의 좌우 여백영역)
Hard code 하였으나,찝찝하던중 Manifest 가 포함되고 안되고의 차이를 발견함.
이 예제는 msdn,코드구루,코드플젝,에그헤드 및 인터넷 어디에도 없음.
누가 이런 동일한 문제로 여기까지 찾아와 볼런진 몰겠지만,..
이문제 원인과 해결 하느라 하루를 삽질한 결과 이곳에 최초 백업용 메모로 남겨둠^^
http://krkim.net
'C | C++ | VC++' 카테고리의 다른 글
VC++ 배포후 APPCRASH 런타임 오류 추적기 (0) | 2010.09.11 |
---|---|
VC++9.0 (MSVS2008) 에서 Afximpl.h <L_TYPE_raw> 오류 (0) | 2010.09.10 |
투박한 윈도우즈7의 메뉴,툴바를 바꿔보자! (0) | 2010.07.27 |
에디트 컨트롤 비밀번호 속성시 툴팁 안나오게 하기 (0) | 2010.07.12 |
Visual Leak Detector - vld의 Bug (0) | 2010.07.09 |