带弹出式滑块的 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 注册的消息,以免与其他自定义消息发生任何冲突
