sgrnumbertextcontrol.hpp

来自「一个基于BREW上的电子时钟程序,通过太阳历计算当前时间,并有闹铃和日志功能.」· HPP 代码 · 共 57 行

HPP
57
字号
//
//      SGRNumberTextControl.hpp
//
//      Copyright (C) 2006 Sophia Cradle Incorporated

#ifndef __SGRNUMBERTEXTCONTROL_HPP
#define __SGRNUMBERTEXTCONTROL_HPP

#include <SophiaFramework.hpp>

SFMRESPONDERTYPE(NUMBERTEXTCONTROL, TYPE_CONTROL)
SFMRESPONDERATTRIBUTE(NUMBERTEXTCONTROL, four_char_code('N', 'u', 'm', 't'))
SFMRESPONDERBEHAVIOR(NUMBERTEXTCONTROL, BEHAVIOR_CONTROL, STATUS_VISIBLE | PROPERTY_DIRECT, APPEARANCE_SHADOW | PROPERTY_TRAVEL | PROPERTY_SCROLLABLE)

SFMTYPEDEFCLASS(SGRNumberTextControl)
class SGRNumberTextControl : public SFRControl {
	SFMSEALCOPY(SGRNumberTextControl)
private:
	SInt32 _digit;			// 寘悢
	SInt32 _minValue;		// 嵟彫抣
	SInt32 _maxValue;		// 嵟戝抣
	SInt32 _currentDigit;	// 擖椡嵪傒偺寘悢
	SInt32 _value;			// 擖椡嵪傒偺抣

public:
	explicit SGRNumberTextControl(SFRResponderPtr responder, SFXRectangleConstRef rect, SInt32 digit, SInt32 min, SInt32 max, SInt32 defaultValue);
	virtual ~SGRNumberTextControl(Void);
	SInt32 GetValue(Void) const;
	SFXWideString GetString(Void) const;
private:
	Void ProcessNumberKey(SInt32 d);
	HANDLER_DECLARE_BOOLEVENT(SGRNumberTextControl, OnKey)
	HANDLER_DECLARE_VOIDRENDER(SGRNumberTextControl, OnBase)
	HANDLER_DECLARE_VOIDRENDER(SGRNumberTextControl, OnContent)
};

inline SInt32 SGRNumberTextControl::GetValue(Void) const
{
	SInt32 val(_value);

	if (_value < _minValue) {
		val = _minValue;
	}
	else if (_value > _maxValue) {
		val = _maxValue;
	}

	return val;
}

inline SFXWideString SGRNumberTextControl::GetString(Void) const
{
	return SFXWideString::Format("%d", (_value < 0) ? _minValue : _value);
}

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?