不知道大家用过Nero 刻录软件没有,我正在改里面的一个终极郁闷的问题,用尽了一切手段和方法也搞不定!
问题如下:编辑菜单的时候 ,输入框采用richedit,创建方法如下: bool cr = RichEditCtrl::Create(0, WS_CHILD |  (m_singleLine ? 0 : (ES_WANTRETURN | ES_MULTILINE)), Rect(-1, -1, -1, -1), parent, 1);
    if (cr) {
      SetEventMask(ENM_CHANGE | ENM_KEYEVENTS | ENM_SELCHANGE);
      SetTextMode(TM_PLAINTEXT);
      Subclass();
      return true;
    }
 调入微软全拼,输入没有任何乱码问题,但是全拼输入时,输入法输入框跑到了屏幕最顶端。而且不能够使用输入法的选择词语功能。
 我们这边的一位高手,找了一个参数ES_SELFIME解决了这个问题如下, bool cr = RichEditCtrl::Create(0, WS_CHILD |ES_SELFIME|  (m_singleLine ? 0 : (ES_WANTRETURN | ES_MULTILINE)), Rect(-1, -1, -1, -1), parent, 1);
    if (cr) {
      SetEventMask(ENM_CHANGE | ENM_KEYEVENTS | ENM_SELCHANGE);
      SetTextMode(TM_PLAINTEXT);
      Subclass();
      return true;
    }
结果输入法位置一切正常了,但是输入汉字的时候会出现乱码!!! 然后我就开始了慢慢查找乱码的旅途。 结果发现
// get required length (use user-specified CR translation setting)
  GETTEXTLENGTHEX gtl;
  gtl.codepage = 1200;
  gtl.flags = GTL_NUMBYTES | ((flags & GT_USECRLF) ? GTL_USECRLF : GTL_DEFAULT);
  int size = (int)SendMessage(EM_GETTEXTLENGTHEX, (WPARAM)&gtl, 0);
  if (size <= 0)
    return size;  wchar_t* p = new wchar_t[size];  // get text
  GETTEXTEX gt;
  gt.cb = size * sizeof(wchar_t);
  gt.codepage = 1200;
  gt.flags = flags;
  gt.lpDefaultChar = 0;
  gt.lpUsedDefChar = 0;
  int rc = (int)SendMessage(EM_GETTEXTEX, (WPARAM)&gt, (LPARAM)p);
  buffer = String(p, rc);
  delete[] p;
  获取到的输入就是乱码
  本系统是 纯英文的vista 操作系统,软件在2005中编译,编译参数加了UNICODE
  也采用了 richedit2.0 unicode版本了
  LoadLibrary(L"RICHED32.DLL");
 // LoadLibrary(L"RICHED20.DLL");
 请问大家能不能帮我分析一下,我真是不尽感激。。

解决方案 »

  1.   

    http://msdn2.microsoft.com/en-us/library/bb774250(VS.85).aspx
      

  2.   

    据说,微软输入法,输出的unicode,而全拼或智能ABC输出都是ANSI,自己转换吧
      

  3.   

    无视我的话吧,我自己建了一个unicode工程,发现RichEdit2可以用全拼输入。
    资源里面相关行就是这样简单的一句
        CONTROL         "",IDC_RICHEDIT21,"RichEdit20A",ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP,7,7,200,101
      

  4.   

    不太明白,加上ES_SELFIME 后,所有输入发都有乱码了,不是所有都是乱码,有些字乱码?有些字不是乱码?
      

  5.   

    http://msdn2.microsoft.com/en-us/library/bb774250(VS.85).aspx
    具体设置成什么参数?? IMF_DUALFONT??