#ifndef UI_CONTROL_SLIDER_H_ #define UI_CONTROL_SLIDER_H_ #pragma once namespace ui { class UILIB_API Slider : public Progress { public: Slider(); /// 重写父类方法,提供个性化功能,请参考父类声明 virtual UiRect GetProgressPos() override; virtual void HandleMessage(EventArgs& event) override; virtual void SetAttribute(const std::wstring& strName, const std::wstring& strValue) override; virtual void PaintStatusImage(IRenderContext* pRender) override; virtual void ClearImageCache() override; /** * @brief 获取步进步长 * @return 返回步进步长 */ int GetChangeStep(); /** * @brief 设置步进步长 * @param[in] step 要设置的步长 * @return 无 */ void SetChangeStep(int step); /** * @brief 设置多动滑块的大小 * @param[in] szXY 要设置的大小 * @return 无 */ void SetThumbSize(CSize szXY); /** * @brief 获取滑块的矩形信息 * @return 返回滑块的矩形信息 */ UiRect GetThumbRect() const; /** * @brief 获取指定状态下滑块的图片 * @param[in] stateType 要获取的状态标识,参考 ControlStateType 枚举 * @return 返回图片路径 */ std::wstring GetThumbStateImage(ControlStateType stateType); /** * @brief 设置指定状态下滑块的图片 * @param[in] stateType 要设置的状态标识,参考 ControlStateType 枚举 * @param[in] pStrImage 要设置的图片位置 * @return 无 */ void SetThumbStateImage(ControlStateType stateType, const std::wstring& pStrImage); /** * @brief 获取进度条内边距 * @return 返回内边距信息 */ UiRect GetProgressBarPadding() const; /** * @brief 设置进度条内边距 * @param[in] rc 要设置的边距信息 * @return 无 */ void SetProgressBarPadding(UiRect rc); /** * @brief 监听进度条进度改变事件 * @param[in] callback 进度条进度改变后调用的回调函数 * @return 无 */ void AttachValueChange(const EventCallback& callback) { OnEvent[kEventValueChange] += callback; } protected: int m_nStep; CSize m_szThumb; StateImage m_thumbStateImage; UiRect m_rcProgressBarPadding; ControlStateType m_uButtonState; std::wstring m_sImageModify; }; } #endif // UI_CONTROL_SLIDER_H_