带弹出式滑块的 Spin Edit 控件






4.62/5 (14投票s)
2004年4月19日
2分钟阅读

94982

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
- 返回允许的范围。WPARAM
和LPARAM
被视为指向 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 注册的消息,以免与其他自定义消息发生任何冲突