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

带弹出式滑块的 Spin Edit 控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.62/5 (14投票s)

2004年4月19日

2分钟阅读

viewsIcon

94982

downloadIcon

3397

Jasc Paint Shop Pro 中使用的 spin-edit 控件的实现

引言

我一直想发布一个项目,所以当我开始研究这个组件时,我决定就是它了。 Jasc 软件的图像编辑软件“Paint Shop Pro”使用编辑、自旋和滑块功能的独特组合。我决定尝试推导自己的版本,这就是结果。查看屏幕截图的左上角。我使用了 VS 2003,但我认为它也可以编译并用于早期版本。唯一的要求是需要 IE5,因为它需要 32 位调用,例如 GetPos32() API。

使用代码

方法

  • int GetValue() - 获取当前值
  • void SetValue(int nValue) - 设置当前值
  • BOOL GetReadOnly() - 获取编辑字段的只读状态
  • void SetReadOnly(BOOL fReadOnly) - 设置编辑字段的只读状态
  • void GetRange(int& nMin,int& nMax) - 获取允许的值范围
  • void SetRange(int nMin,int nMax) - 设置允许的值范围

样式

  • NES_SPIN - 包含自旋控件
  • NES_POPUP - 包含最右侧的按钮,该按钮弹出浮动滑块
  • NES_LIVEUPDATE - 在跟踪时更新父窗口关于该值的信息。
  • NES_METER - 包含编辑字段下方的小条。

消息

  • NEM_GETPOS - 以返回值形式返回当前值
  • NEM_SETPOS - 设置当前值。传递在 LPARAM
  • NEM_GETRANGE - 返回允许的范围。WPARAMLPARAM 被视为指向 int 的指针
  • NEM_SETRANGE - 设置允许的范围。最小值在 WPARAM 中,最大值在 LPARAM
  • NEM_GETREADONLY - 获取编辑字段的只读状态。
  • NEM_SETREADONLY - 设置编辑字段的只读状态。

Notifications

  • NEN_CHANGED - 当值更改时,发送给所有者窗口
// Declare a CNumericEdit
CNumericEdit m_Edit;        
        
//
// Creating the control
//
CRect rcRect(10,10,142,40);
m_Edit.Create(WS_VISIBLE | WS_TABSTOP | NES_SPIN | NES_POPUP,rcRect,this,0);
m_Edit.SetValue(50);
m_Edit.SetRange(0,100);

待办事项

  • 使弹出式滑块的大小可配置
  • XP 支持 ??
  • 弹出式滑块中的位图(就像 Paint Shop Pro 一样)?

历史

4/13/2004 - 1.0

  • 初始版本

4/20/2004 - 1.01

  • 修复了编辑只接受十六进制数字的错误。也允许输入负号“-”
  • 添加了 NES_METER 样式,使编辑字段下方的小条可选
  • 更改样式位时,控件将重新配置自身
  • 修复了最大值错误。现在可以使用弹出窗口访问整个范围
  • 添加了 NES_LIVEUPDATE 样式。此样式允许控件在值跟踪期间通知其父窗口。如果没有此样式,则仅在跟踪结束时更新父窗口
  • 演示已更新以显示新功能
  • 添加了 DDX_NumericEdit() 函数以支持 DDX
  • 现在使用活动窗口标题颜色作为条的颜色
  • 更改了硬编码的自定义消息,使用 windows 注册的消息,以免与其他自定义消息发生任何冲突
© . All rights reserved.