全角半角转化

全角和半角的转化可以在输入时就指定输入法(方法一),也可以采用对照表(方法二)(可以改进),也可以采用函数直接转化(方法三)(最简单).这三种方法都来自网上,经测试,方法二和方法三都可以解决问题,而且方法二和三都很好封装成一个通用函数,推荐.

方法一:
 HWND hWnd= GetDlgItem(IDC_EDT_NUMBER)->m_hWnd;
 HIMC hImc;
 DWORD dwConvMode, dwSentMode;
 hImc = ImmGetContext(hWnd);
 ImmGetConversionStatus(hImc, &dwConvMode, &dwSentMode);
 ImmSetConversionStatus(hImc, dwConvMode&~IME_CMODE_FULLSHAPE, dwSentMode);
方法二:
void   Str2GBReplace(CString   &mString)  
{  
//  mString.Replace(_T(" "), _T(" "));  
//  mString.Replace(_T("!"),   _T("!"));  
//  mString.Replace(_T(""""),   """);  
//  mString.Replace(_T("#"),   "#");  
//  mString.Replace(_T("$"),   "$");  
//  mString.Replace(_T("%"),   "%");  
//  mString.Replace(_T("&"),   "&");  
//  mString.Replace(_T("'"),   "'");  
//  mString.Replace(_T("("),   "(");  
//  mString.Replace(_T(")"),   ")");  
//  mString.Replace(_T("*"),   "*");  
//  mString.Replace(_T("+"),   "+");  
//  mString.Replace(_T(","),   ",");  
//  mString.Replace(_T("-"),   "-");  
//  mString.Replace(_T("."),   "。");  
//  mString.Replace(_T("/"),   "/");  
//  mString.Replace(_T("0"),   "0");  
//  mString.Replace(_T("1"),   "1");  
//  mString.Replace(_T("2"),   "2");  
//  mString.Replace(_T("3"),   "3");  
//  mString.Replace(_T("4"),   "4");  
//  mString.Replace(_T("5"),   "5");  
//  mString.Replace(_T("6"),   "6");  
//  mString.Replace(_T("7"),   "7");  
//  mString.Replace(_T("8"),   "8");  
//  mString.Replace(_T("9"),   "9");  
//  mString.Replace(_T(":"),   ":");  
//  mString.Replace(_T(";"),   ";");  
//  mString.Replace(_T("<"),   "<");  
//  mString.Replace(_T("="),   "=");  
//  mString.Replace(_T(">"),   ">");  
//  mString.Replace(_T("?"),   "?");  
//  mString.Replace(_T("@"),   "@");  
//  mString.Replace(_T("A"),   "A");  
//  mString.Replace(_T("B"),   "B");  
//  mString.Replace(_T("C"),   "C");  
//  mString.Replace(_T("D"),   "D");  
//  mString.Replace(_T("E"),   "E");  
//  mString.Replace(_T("F"),   "F");  
//  mString.Replace(_T("G"),   "G");  
//  mString.Replace(_T("H"),   "H");  
//  mString.Replace(_T("I"),   "I");  
//  mString.Replace(_T("J"),   "J");  
//  mString.Replace(_T("K"),   "K");  
//  mString.Replace(_T("L"),   "L");  
//  mString.Replace(_T("M"),   "M");  
//  mString.Replace(_T("N"),   "N");  
//  mString.Replace(_T("O"),   "O");  
//  mString.Replace(_T("P"),   "P");  
//  mString.Replace(_T("Q"),   "Q");  
//  mString.Replace(_T("R"),   "R");  
//  mString.Replace(_T("S"),   "S");  
//  mString.Replace(_T("T"),   "T");  
//  mString.Replace(_T("U"),   "U");  
//  mString.Replace(_T("V"),   "V");  
//  mString.Replace(_T("W"),   "W");  
//  mString.Replace(_T("X"),   "X");  
//  mString.Replace(_T("Y"),   "Y");  
//  mString.Replace(_T("Z"),   "Z");  
//  mString.Replace(_T("["),   "[");  
//  mString.Replace(_T("//"),   "\");  
//  mString.Replace(_T("]"),   "]");  
//  mString.Replace(_T("^"),   "^");  
//  mString.Replace(_T("_"),   "_");  
//  mString.Replace(_T("`"),   "`");  
//  mString.Replace("a",   "a");  
//  mString.Replace("b",   "b");  
//  mString.Replace("c",   "c");  
//  mString.Replace("d",   "d");  
//  mString.Replace("e",   "e");  
//  mString.Replace("f",   "f");  
//  mString.Replace("g",   "g");  
//  mString.Replace("h",   "h");  
//  mString.Replace("i",   "i");  
//  mString.Replace("j",   "j");  
//  mString.Replace("k",   "k");  
//  mString.Replace("l",   "l");  
//  mString.Replace("m",   "m");  
//  mString.Replace("n",   "n");  
//  mString.Replace("o",   "o");  
//  mString.Replace("p",   "p");  
//  mString.Replace("q",   "q");  
//  mString.Replace("r",   "r");  
//  mString.Replace("s",   "s");  
//  mString.Replace("t",   "t");  
//  mString.Replace("u",   "u");  
//  mString.Replace("v",   "v");  
//  mString.Replace("w",   "w");  
//  mString.Replace("x",   "x");  
//  mString.Replace("y",   "y");  
//  mString.Replace("z",   "z");  
//  mString.Replace("{",   "{");  
//  mString.Replace("|",   "|");  
//  mString.Replace("}",   "}");  
//  mString.Replace("~",   "~");  
}  

// 将全角字符串转化为半角字符串
void   GB2StrReplace(CString   &mString)  
 {  
  mString.Replace(_T("!"),   _T("!"));  
//  mString.Replace(_T("""),   _T(""""));  
  mString.Replace(_T("#"),   _T("#"));  
  mString.Replace(_T("$"),   _T("$"));  
  mString.Replace(_T("%"),   _T("%"));  
  mString.Replace(_T("&"),   _T("&"));  
  mString.Replace(_T("'"),  _T( "'"));  
  mString.Replace(_T("("),   _T("("));  
  mString.Replace(_T(")"),   _T(")"));  
  mString.Replace(_T("*"),   _T("*"));  
  mString.Replace(_T("+"),   _T("+"));  
  mString.Replace(_T(","),   _T(","));  
  mString.Replace(_T("-"),   _T("-"));  
  mString.Replace(_T("。"),   _T("."));  
  mString.Replace(_T("/"),   _T("//"));  
  mString.Replace(_T("0"),   _T("0"));  
  mString.Replace(_T("1"),   _T("1"));  
  mString.Replace(_T("2"),   _T("2"));  
  mString.Replace(_T("3"),   _T("3"));  
  mString.Replace(_T("4"),   _T("4"));  
  mString.Replace(_T("5"),   _T("5"));  
  mString.Replace(_T("6"),   _T("6"));  
  mString.Replace(_T("7"),   _T("7"));  
  mString.Replace(_T("8"),   _T("8"));  
  mString.Replace(_T("9"),   _T("9"));  
  mString.Replace(_T(":"),   _T(":"));  
  mString.Replace(_T(";"),   _T(";"));  
  mString.Replace(_T("<"),   _T("<"));  
  mString.Replace(_T("="),   _T("="));  
 mString.Replace(_T(">"),   _T(">"));  
  mString.Replace(_T("?"),   _T("?"));  
  mString.Replace(_T("@"),   _T("@"));  
  mString.Replace(_T("A"),   _T("A"));  
 mString.Replace(_T("B"),   _T("B"));  
 mString.Replace(_T("B"),   _T("B"));  
  mString.Replace(_T("C"),   _T("C"));  
  mString.Replace(_T("D"),   _T("D"));  
 mString.Replace(_T("E"),   _T("E"));  
 mString.Replace(_T("F"),   _T("F"));  
  mString.Replace(_T("G"),   _T("G"));  
  mString.Replace(_T("H"),   _T("H"));  
  mString.Replace(_T("I"),   _T("I"));  
  mString.Replace(_T("J"),   _T("J"));  
  mString.Replace(_T("K"),  _T( "K"));  
  mString.Replace(_T("L"),   _T("L"));  
  mString.Replace(_T("M"),   _T("M"));  
  mString.Replace(_T("N"),   _T("N"));  
  mString.Replace(_T("O"),   _T("O"));  
  mString.Replace(_T("P"),   _T("P"));  
  mString.Replace(_T("Q"),   _T("Q"));  
  mString.Replace(_T("R"),   _T("R"));  
  mString.Replace(_T("S"),   _T("S"));  
 mString.Replace(_T("T"),   _T("T"));  
  mString.Replace(_T("U"),   _T("U"));  
  mString.Replace(_T("V"),   _T("V"));  
 mString.Replace(_T("W"),   _T("W"));  
  mString.Replace(_T("X"),   _T("X"));  
  mString.Replace(_T("Y"),   _T("Y"));  
 mString.Replace(_T("Z"),   _T("Z"));  
  mString.Replace(_T("["),   _T("["));  
  mString.Replace(_T("\"),   _T("//"));  
  mString.Replace(_T("]"),   _T("]"));     
 mString.Replace(_T("^"),   _T("^"));  
  mString.Replace(_T("_"),   _T("_"));  
  mString.Replace(_T("`"),   _T("`"));  
  mString.Replace(_T("a"),   _T("a"));  
  mString.Replace(_T("b"),   _T("b"));  
  mString.Replace(_T("c"),   _T("c"));  
  mString.Replace(_T("d"),   _T("d"));  
  mString.Replace(_T("e"),   _T("e"));  
  mString.Replace(_T("f"),   _T("f"));  
  mString.Replace(_T("g"),   _T("g"));  
  mString.Replace(_T("h"),   _T("h"));  
  mString.Replace(_T("i"),   _T("i"));  
 mString.Replace(_T("j"),   _T("j"));  
  mString.Replace(_T("k"),   _T("k"));  
  mString.Replace(_T("l"),   _T("l"));  
  mString.Replace(_T("m"),   _T("m"));  
  mString.Replace(_T("n"),   _T("n"));  
  mString.Replace(_T("o"),   _T("o"));  
 mString.Replace(_T("p"),   _T("p"));  
  mString.Replace(_T("q"),   _T("q"));  
  mString.Replace(_T("r"),   _T("r"));  
  mString.Replace(_T("s"),   _T("s"));  
  mString.Replace(_T("t"),   _T("t"));  
  mString.Replace(_T("u"),   _T("u"));  
  mString.Replace(_T("v"),   _T("v"));  
  mString.Replace(_T("w"),   _T("w"));  
  mString.Replace(_T("x"),   _T("x"));  
  mString.Replace(_T("y"),   _T("y"));  
  mString.Replace(_T("z"),   _T("z"));  
 mString.Replace(_T("{"),   _T("{"));  
  mString.Replace(_T("|"),   _T("|"));  
 mString.Replace(_T("}"),   _T("}"));  
  mString.Replace(_T("~"),   _T("~"));  
}  
方法三:
 AnsiString text = "変換する文字列";
//変換方法
DWORD flags = LCMAP_FULLWIDTH; //全角文字にします(適用される場合)。
//DWORD flags = LCMAP_HALFWIDTH; //半角文字にします(適用される場合)。
//DWORD flags = LCMAP_HIRAGANA; //ひらがなにします。
//DWORD flags = LCMAP_KATAKANA; //カタカナにします。
const int size = text.Length() * 2 + 1;
char* s = new char[size];
try
{
  ZeroMemory(s, size);
  LCMapString(GetUserDefaultLCID(),
              flags,
              text.c_str(),
              text.Length() + 1,
              s,
              size);
  AnsiString newtext = s; //変換した文字列
  return newtext;
}
__finally
{
  delete[] s;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值