色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入開發(fā)(WinCE)的一些經(jīng)驗(yàn)

          嵌入開發(fā)(WinCE)的一些經(jīng)驗(yàn)

          作者: 時(shí)間:2011-02-27 來(lái)源:網(wǎng)絡(luò) 收藏

          WindowsCE下Unicode和Ansi字符間互相轉(zhuǎn)換的例子
          縱所周知,WindowsCE下編程99%的問題都和Unicode有關(guān).比如文件編輯,一般都保存為Ansi格式;無(wú)線通訊中控制Modem需要發(fā)送的AT指令,必須是Ansi格式;網(wǎng)絡(luò)通訊中,PC端一般都是Ansi的,為了和PC上協(xié)議兼容,在WindowsCE中必須把要發(fā)送的一個(gè)指令從Unicode 轉(zhuǎn)換成Ansi格式...等等.很多初學(xué)者對(duì)于這些問題總是感到很麻煩.其實(shí)WindowsCE中有標(biāo)準(zhǔn)的API實(shí)現(xiàn)了Unicode和Ansi字符間的互轉(zhuǎn).下面就是網(wǎng)絡(luò)通訊中的程序片斷.
          m_psocket是指向一個(gè)從CCeSocket派生的類,如果沒有連接的話其為NULL;
          m_snd是要發(fā)送的CString,和一個(gè)EDIT相對(duì)應(yīng).
          /發(fā)送函數(shù)片斷
          void CClient1Dlg::OnButtonSend()
          {
          / TODO: Add your control notification handler code here
          if (!m_psocket) /無(wú)Socket連接,退出
          {
          MessageBox(TEXT("無(wú)連接!"),TEXT("信息"));
          return;
          }
          UpdateData(TRUE); /保存輸入的字符串到m_snd
          unsigned char buf[129]; /發(fā)送緩沖區(qū)
          ZeroMemory(buf,sizeof(buf)); /緩沖區(qū)清零
          CString tmpstr(m_snd); /復(fù)制要發(fā)送的字符串
          int multibytelen=WideCharToMultiByte( /計(jì)算從Unicode轉(zhuǎn)換到Ansi后需要的字節(jié)數(shù)
          CP_ACP, /根據(jù)ANSI code page轉(zhuǎn)換
          WC_COMPOSITECHECK | WC_DEFAULTCHAR, /轉(zhuǎn)換出錯(cuò)用缺省字符代替
          tmpstr.GetBuffer(m_snd.GetLength()), /要轉(zhuǎn)換的字符串地址
          m_snd.GetLength(), /要轉(zhuǎn)換的個(gè)數(shù)
          0, /轉(zhuǎn)換后字符串放置的地址
          0, /最多轉(zhuǎn)換字符的個(gè)數(shù),為0表示返回轉(zhuǎn)換Unicode后需要多少個(gè)字節(jié)
          0, /缺省的字符:"