65.9K
CodeProject 正在变化。 阅读更多。
Home

ATL 旋转控件

2000年1月26日

viewsIcon

121500

downloadIcon

1662

一个旋转旋钮, 类似于 Windows 2000 CD 播放器中使用的旋钮

  • 下载源代码文件 - 67 Kb
  • Sample Image - rotary.gif

    这是一个简单的 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 类非常简单,因为最初就是这样开发的。

    © . All rights reserved.