1
I CDockablePane에서 파생되는 클래스를 만듭니다.이 코드는 다음과 같습니다.CDockablePane에서 CListBox를 만들고 전체 크기를 채우는 방법은 무엇입니까?
class CWorkspaceBar : public CDockablePane
{
public:
CWorkspaceBar();
// Attributes
protected:
CXListBox m_wndThumbList;
// Operations
public:
// Overrides
// Implementation
public:
virtual ~CWorkspaceBar();
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
함수에서 CWorkspaceBar :: OnCreate I CListBox를 만듭니다.
int CWorkspaceBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rectDummy;
rectDummy.SetRectEmpty();
if (!m_wndThumbList.Create (WS_CHILDWINDOW | WS_VISIBLE |WS_VSCROLL|WS_HSCROLL| LBS_OWNERDRAWFIXED|LBS_HASSTRINGS|LBS_NOTIFY,rectDummy, this,IDC_THUMBNAILIMAGELIST))
{
TRACE0("Failed to create workspace view\n");
return -1;
}
return 0;
}
그리고 CWorkspaceBar :: OnSize 함수에서 CListBox 개체의 크기를 조정하지만 전체 부모 창을 채울 수 없습니다.
void CWorkspaceBar::OnSize(UINT nType, int cx, int cy)
{
CDockablePane::OnSize(nType, cx, cy);
if(IsWindow(m_wndThumbList.GetSafeHwnd()))
m_wndThumbList.SetWindowPos (NULL,0,0,cx,cy, SWP_NOACTIVATE | SWP_NOZORDER);
}
내가 CListCtrl 및 CTreeCtrl의 테스트, 그것은 작품이 아니라, 오직 CListBox는 부모 윈도우의 전체를 채울 수 있습니다. 이 문제를 해결하는 방법은 MFC의 버그입니까?
당신이'CListBox'를 만들 때'LBS_NOINTEGRALHEIGHT' 스타일을 설정했는지 확인하십시오 - 기본적으로 그것은 정수로 된 항목 수에 맞게 크기가 제한됩니다. –
@RogerRowland 답변은 괜찮습니다. 고마워요! 이 Integral Height의 기능은 무엇입니까? – tfzxyinhao