ATL 旋转控件






2.93/5 (6投票s)
2000年1月26日

121500

1662
一个旋转旋钮,
这是一个简单的 ATL 旋转控制示例。该控制是 Windows 2000 CD 播放器上的旋转旋钮的复制品。
该控制使用最小值和最大值,位置的计算方式如下:(达到限制后)。
double a = -PI/4 + 3*PI/2 * (m_iMax - m_iPos)/(m_iMax - m_iMin);
计算将最小停止位置设置为 8 点钟,最大停止位置设置为 4 点钟。可以对该项目进行的一个增强是添加一个步进按钮(一个旋转 360 度的按钮),增加一个值直到达到最小值/最大值(按钮仍然旋转,但值保持不变)。
当旋转拨盘移动时,会触发一个连接点事件。
DialChanged(int nPos)
这可以在 MFC、HTML 页面或 Visual Basic 中捕获。以下方法支持检索和更改限制和位置:
[propget, id(1), helpstring("property DialPosition")] HRESULT DialPosition([out, retval] short *pVal); [propput, id(1), helpstring("property DialPosition")] HRESULT DialPosition([in] short newVal); [id(2), helpstring("method SetMax")] HRESULT SetMax([in] short nMax); [id(3), helpstring("method SetMin")] HRESULT SetMin([in] short nMin);
可以使用任何圆形位图作为背景。当按下鼠标左键时,LED 位置指示器会闪烁。
该控件已在 IE 5.0、Visual Basic 6.0 和 MFC 中进行了测试。还有一点值得一提的是,将其移植为基于 MFC 的 CWnd
类非常简单,因为最初就是这样开发的。