我创建了一个从 CDockablePane 派生的类,代码如下。
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 我创建一个 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的错误吗?
(来源:image-share.com)