平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……

如何让Ansi工程支持Unicode Edit的输入

1.使用CreateWindowExW创建控件,如
hEditWnd = CreateWindowExW(WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE, L"Edit", NULL, WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL, 0, 0, 300, 24, m_hWnd, (HMENU)IDC_UNICODE_EDIT, NULL, NULL);

2.在焦点进入Edit控件时,进入自己的消息泵,此消息泵使用GetMessageW,DispatchMessageW来完成消息分发.
 m_bStopMonitorUnicodeEdit = false;
 for(;;)
 { 
  if(m_bStopMonitorUnicodeEdit)
   break;
  
  MSG msg = { 0 };
  BOOL bRet = ::GetMessageW(&msg, NULL, 0, 0);
  if(bRet == -1)
  {
   continue;   // error, don't process
  }
  else if(!bRet)
  {
   break;  // WM_QUIT! exit message loop
  }
  
  ::TranslateMessage(&msg);
  ::DispatchMessageW(&msg);
 }

4.在焦点退出Edit控件时, 退出消息泵.
    m_bStopMonitorUnicodeEdit = true;

Reference:
在网络上查过资料,那些回答都是垃圾,连问题的根源都没摸著边.

posted on 2009-04-17 10:28 linghuye 阅读(1998) 评论(1)  编辑 收藏 引用 所属分类: 游戏理论和技术

评论

# re: 如何让Ansi工程支持Unicode Edit的输入  回复  更多评论   

如果能从头开始一个项目, 我宁愿全用wchar_t
2009-04-19 18:51 | xoyojank
只有注册用户登录后才能发表评论。