# 自定义控件 这里提供自定义控件代码模板 声明: ~~~ #ifndef _CONTROL_ZKCUSTOMCONTROL_H_ #define _CONTROL_ZKCUSTOMCONTROL_H_ #include "ZKBase.h" #define ZK_CUSTOMCONTROL "zk_customcontrol" class ZKCustomControl : public ZKBase { public: ZKCustomControl(HWND hParentWnd); virtual ~ZKCustomControl(); protected: /* 控件创建前的回调接口 */ virtual void onBeforeCreateWindow(const Json::Value &json); /* 控件创建后的回调接口 */ virtual void onAfterCreateWindow(const Json::Value &json); /* 控件类名,唯一 */ virtual const char* getClassName() const { return ZK_CUSTOMCONTROL; } /* 绘图回调 */ virtual void onDraw(HDC hdc); /* 触摸回调 */ virtual BOOL onTouchEvent(const MotionEvent &ev); /* 定时器回调 */ virtual void onTimer(int id); private: /* 解析属性 */ void parseCustomAttributeFromJson(const Json::Value &json); }; #endif ~~~ 定义: ~~~ #include "control/ZKCustomControl.h" /* 注册控件 */ REGISTER_CONTROL(ZK_CUSTOMCONTROL, ZKCustomControl); ZKCustomControl::ZKCustomControl(HWND hParentWnd) : ZKBase(hParentWnd) { } ZKCustomControl::~ZKCustomControl() { } void ZKCustomControl::onBeforeCreateWindow(const Json::Value &json) { ZKBase::onBeforeCreateWindow(json); // 创建控件前解析一下属性 parseCustomAttributeFromJson(json); } void ZKCustomControl::onAfterCreateWindow(const Json::Value &json) { ZKBase::onAfterCreateWindow(json); // 创建控件后 ... } void ZKCustomControl::onDraw(HDC hdc) { // 绘制背景 drawBackground(hdc); // 自定义绘图 ... } BOOL ZKCustomControl::onTouchEvent(const MotionEvent &ev) { switch (ev.mActionStatus) { case MotionEvent::E_ACTION_DOWN: break; case MotionEvent::E_ACTION_MOVE: break; case MotionEvent::E_ACTION_UP: case MotionEvent::E_ACTION_CANCEL: break; } return true; } void ZKCustomControl::onTimer(int id) { } void ZKCustomControl::parseCustomAttributeFromJson(const Json::Value &json) { // 解析属性 ... } ~~~