我正在尝试使用 Microsoft 基础类库创建一个 activeX 控件。
我已经创建了控件。这是一个图形控件。我也在控件上放置了一些按钮。
我正在尝试使用CScrollBar
类向我的控件添加滚动条。
CScrollBar::Create
我使用方法创建控件。在应用程序中使用我的 activeX 控件时,我可以看到该控件。
我已将该OnHScroll
方法添加到我的控件类中。这派生自COleControl
class 。
当我滚动时,我CScrollBar::GetScrollPos
用来获取滚动位置,我总是返回零。
这是在activeX控件中创建滚动条的代码。
MainClass.h 文件中的控制代码:
private:
CScrollBar m_HScrollBar;
protected:
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
DECLARE_MESSAGE_MAP()
MainClass.cpp 中OnCreate()
用于创建滚动条的方法中的控制代码:
m_HScrollBar.Create(SBS_HORZ | WS_CHILD| WS_VISIBLE , CRect(rcBottomStrip.left ,
rcBottomStrip.bottom ,
rcBottomStrip.right ,
rcBottomStrip.bottom + (tHeight*3)/125),this, 315);
m_HScrollBar.SetScrollRange(0, 2048);
SCROLLINFO ScrollInfo;
ScrollInfo.cbSize = sizeof(ScrollInfo);
ScrollInfo.fMask = SIF_RANGE;
ScrollInfo.nMin = 0;
ScrollInfo.nMax = 1128;
ScrollInfo.nPage = 100;
ScrollInfo.nPos = 0;
ScrollInfo.nTrackPos = 0;
m_HScrollBar.SetScrollInfo(&ScrollInfo);
m_HScrollBar.ShowScrollBar(TRUE);
m_HScrollBar.EnableWindow();
m_HScrollBar.EnableAutomation();
在OnHScroll
返回滚动位置和移动滚动条的方法中:
int CurPos = m_HScrollBar.GetScrollPos();
m_HScrollBar.SetScrollPos(CurPos);