Cocos2dx win32实现输入法跟随

聊天功能在PC平台需要实现输入法跟随效果【EditBox有此效果,但是该控件不方便设置透明度,显示部分自定义图标不好实现】。

实现方案:采用TextField控件,每次输入文本时,根据已经输入文本的长度更新输入法位置。

核心代码如下:


#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include <Windows.h>
#pragma comment(lib, "Imm32.lib")
#endif // (CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)

void HelloWorld::onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* unused_event)
{
    auto designSize = Director::getInstance()->getWinSize();
    auto pos = touch->getLocation();
#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
    auto hwnd = Director::getInstance()->getOpenGLView()->getWin32Window();
    HIMC hIMC = ImmGetContext(hwnd);
    if (hIMC)
    {
        // Set composition window position near caret position
        POINT point;
        GetCaretPos(&point);

        COMPOSITIONFORM Composition;
        Composition.dwStyle = CFS_POINT;
        Composition.ptCurrentPos.x = point.x+pos.x;
        Composition.ptCurrentPos.y = point.y+(designSize.height-pos.y);
        ImmSetCompositionWindow(hIMC, &Composition);

        ImmReleaseContext(hwnd, hIMC);
    }
#endif
}

实现的效果:

 参考资料:https://blog.csdn.net/zzstack/article/details/50999177

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值