让HGE支持中文(4) - 编辑框的实现

本文档是关于如何让HGE引擎支持中文编辑框的教程,要求读者已经了解HGE的中文显示和输入。遵循hgeGUI和hgeGUIObject的派生原则,通过重载相关函数,监听IME事件,管理字符串列表并进行绘制,实现中文和英文的输入与显示。教程提供了关键步骤和代码示例。
摘要由CSDN通过智能技术生成

阅读此文章前请先确认你已经阅读以下文章:

让HGE支持中文(1) - HGE中文显示 (必需)

让HGE支持中文(2) - HGE中文输入 (必需)

让HGE支持中文(3) - HGE字符串处理 (可选)

制作要点:遵循 hgeGUI 和 hgeGUIObject 类原则,即所有控件需从 hgeGUIObject 派生。

步骤:

1. 重载 hgeGUIObject 的相关函数,具体文件尾代码。

 2. 在每一帧结束时通过 hge->Input_GetIMEEvent(&imeEvent) 进行中文和英文输入获取。

 3. 取得中文和英文后添加到字符串列表中。

4. 绘制字符串列表。

 5. 重复2-5步骤。以此循环。

代码:

 1. 头文件 <hgeedit.h>

#pragma once

#include "helpers/hgegui.h"

#include "helpers/hgevector.h"

#include "helpers/hgerect.h"

#include "helpers/hgefontcn.h"

#include <atlstr.h>


//-------------------------------------------------------------
// 描述 : 
//-------------------------------------------------------------

class tEditBox : public hgeGUIObject

{

public:

    tEditBox(HTEXTURE tex, int id, 

        float tx, float ty, float tw, float th, 

        hgeFontCN* font, int len = 0x10, float dstX = 0, float dstY = 0);



    virtual void    Update(float dt);

    virtual void    Render();

    virtual void    Leave();

    virtual void    MouseOver(bool bOver);

    virtual void    Focus(bool bFocused){    tudb_focus = bFocused, tudb_cursor = bFocused;}

    virtual bool    KeyClick(int key, int chr);

    virtual bool    MouseMove(float x, float y) { return true; }



    CString         GetString(){ return tudb_str; }

    void            SetString(CString str){ tudb_str = str; tudb_pos = tudb_str.GetLength(); reflength(); }

    void            Clear(){ SetString(""); }

    void            SetExpt(float x, float y){ tudb_ex = x, tudb_ey = y; }



private:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值