游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2407|回复: 5

DX中文键盘输入问题

[复制链接]

13

主题

33

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2006-1-3 18:03:00 | 显示全部楼层 |阅读模式
       我的程序里面要屏幕文字信息.看书上的例子都是用:

switch( msg )
    case WM_KEYDOWN:
         switch (wParam)
             sprintf(......)
      我也照搬,结果是能输入英文,输入中文就是乱码.

      请高手帮帮忙,谢谢.

      比如,一排中文聊天信息怎么从键盘输入然后显示到屏幕上.就象实现子窗口编辑框功能差不多吧.谢谢指教.

14

主题

283

帖子

293

积分

中级会员

Rank: 3Rank: 3

积分
293
QQ
发表于 2006-1-4 01:11:00 | 显示全部楼层

Re:DX中文键盘输入问题

WM_CHAR消息
每两个消息组成一个汉字。
最简单的例子,
if(message==WM_CHAR)
        {
                static int i=0;
                static char ch[100]={'\n'};
                ab=wParam;
                i++;
        }
这个可以接受50个汉字

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-1-4 12:22:00 | 显示全部楼层

Re: DX中文键盘输入问题

wdz_77: DX中文键盘输入问题

       我的程序里面要屏幕文字信息.看书上的例子都是用:

switch( msg )
    case WM_KEYDOWN:
      ...


使用IME API,参考DX9 SDK Example中的CustomUI
类CDXUTIMEEditBox
[em6]

13

主题

33

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-1-4 16:04:00 | 显示全部楼层

Re:DX中文键盘输入问题

        switch( msg )
    {
        case WM_IME_CHAR:
                 hz1[3];hz1[2]=0;
                 hz1[0]=(unsigned char)(wParam>>8);
                hz1[1]=(unsigned char)wParam;
                hz[i0]=hz1[0];
                hz[i0+1]=hz1[1];
                sprintf(szname2,hz);
                i0+=2;
我用这样的方法能接收和显示汉字了,但特殊符号不行.
   比如五笔中的  ;' ,?  这些都不行
   这些符号是不是要用另一个消息呀.
   谢谢高手们指教.

6

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2006-1-7 18:18:00 | 显示全部楼层

Re:DX中文键盘输入问题

关注,顶上去。

我也想知道

13

主题

33

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2006-1-9 14:04:00 | 显示全部楼层

Re:DX中文键盘输入问题

    我把我最后的实现方法说一下,你可以试试.

        case WM_CHAR:
                 hz1[3];hz1[2]=0;
                 if(wParam>>8){
                 hz1[0]=(unsigned char)(wParam>>8);
                hz1[1]=(unsigned char)wParam;
                hz[i0]=hz1[0];
                hz[i0+1]=hz1[1];
                sprintf(szname2,hz);
                i0+=2;
                 }
                 else{
                                                hz[i0] = wParam;
                                                hz[i0+1] = '\0';
                                                sprintf(szname2,hz);
                                                i0+=1;
                 }


最后的  HZ就是你要的结果,不知道对不对,请高手们指教.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 04:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表