#include "stdafx.h"
#include
#include
//gbk編碼轉換到utf8編碼
int gbktoutf8(unsigned char * lpgbkstr,unsigned char * lputf8str,int nutf8strlen)
if(nutf8strlen < nretlen) //如果輸出緩衝區長度不夠則退出
nretlen = ::widechartomultibyte(cp_utf8,0,lpunicodestr,-1,(char *)lputf8str,nutf8strlen,null,null); //轉換到utf8編碼
if(lpunicodestr)
delete lpunicodestr;
return nretlen;
}// utf8編碼轉換到gbk編碼
int utf8togbk(unsigned char * lputf8str,unsigned char * lpgbkstr,int ngbkstrlen)
if(ngbkstrlen < nretlen) //如果輸出緩衝區長度不夠則退出
nretlen = ::widechartomultibyte(cp_acp,0,lpunicodestr,-1,(char *)lpgbkstr,nretlen,null,null); //轉換到gbk編碼
if(lpunicodestr)
delete lpunicodestr;
return nretlen;
}int _tmain(int argc, _tchar* argv)
else
fp = fopen("c:\\gbk2utf8.txt","wb"); //儲存到文字檔案
fwrite(lputf8str,nretlen,1,fp);
fclose(fp);
getchar(); //先去開啟那個文字檔案看看,單擊記事本的「檔案」-「另存為」選單,在對話方塊中看到編碼框變為了「utf-8」說明轉換成功了
nretlen = utf8togbk((unsigned char *)lputf8str,null,null); //再轉回來
printf("轉換後的字串需要的空間長度為:%d ",nretlen);
lpgbkstr = new char[nretlen + 1];
nretlen = utf8togbk((unsigned char *)lputf8str,(unsigned char *)lpgbkstr,nretlen);
if(nretlen)
else
fp = fopen("c:\\utf82gbk.txt","wb"); //儲存到文字檔案
fwrite(lpgbkstr,nretlen,1,fp);
fclose(fp);
getchar(); //再去開啟文字檔案看看,發現編碼框又變為了「ansi」說明轉換成功了
ret0:
if(lpgbkstr)
delete lpgbkstr;
if(lputf8str)
delete lputf8str;
return 0;
}
win32中GBK UTF8的互轉
include stdafx.h include include gbk編碼轉換到utf8編碼 int gbktoutf8 unsigned char lpgbkstr,unsigned char lputf8str,int nutf8strlen if nutf8strlen nretlen 如果...
WPF與Win32互操作
一 wpf如何使用hwnd 當您建立wpf window時,wpf會建立頂級hwnd,並使用hwndsource將window及其wpf內容放入hwnd中。應用程式中其餘的wpf內容共享此單個hwnd。不過,選單 組合框下拉列表和其他彈出視窗例外。這些元素建立它們自己的頂級視窗,這正是 wpf 選單...
Win32中的listbox學習
列表框樣式 visual studio 2013 其他版本 當列表框不包含足夠的項滾動時,lbs disablenoscroll列表框顯示乙個禁用的垂直滾動條。若無此樣式,當列表框不包含足夠的項時,滾動條將隱藏。使用 shift 鍵和滑鼠或特定組合鍵lbs extendedsel,使用者可以選擇多個...