wince下應用程式使用外部字型實現多國語言

2021-04-25 13:07:23 字數 1557 閱讀 1565

定製wince平台支援多語言的系統,需在pb的local裡新增對應的區域和語言編號。

如果只需在應用程式中實現多種語言和時區的切換,我們通常需要如下資訊

定義如下結構體:

(封裝每一種語言的屬性)

struct

oem_language =

//中文簡體

,_t("china standard time") },  

//中文繁體

,_t("****ei standard time")},

選定某種語言後,儲存name,charset,codepage資訊到登錄檔,方便所有應用程式呼叫。

新增字型:

支援多語言的應用程式,需要有對應的字型檔案,但字型檔案過於龐大時,可以放在nand flash或者外部儲存卡上。當程式啟動時,新增所有需要的字型檔案,呼叫api函式:

如:    addfontresource(l"storage card//simsun.ttc");

建立字型:

根據語言型別和新增的字型資訊得到 charset值和fontfacename字型名稱

如:charset = gb2312_charset,fontfacename = l"simsun";

createfont建立簡體中文本型

切換語言:

1.得到所有語言種類的個數: num= sizeof(oem_language) / sizeof(oem_language[0])

2.根據當前語言name或codepage資訊計算索引號index,可以在num範圍內向前或向後遍歷。

3.選定語言後,儲存name,charset,codepage資訊

4.傳送廣播訊息通知所有應用程式包括自己

::postmessage(hwnd_broadcast, wm_fontchange, 0, 0);

應用程式收到wm_fontchange後,建立新的字型

5.設定系統時區(如果需要)

設定系統時區:

struct regtimezoneinformation

rtzi;

time_zone_information   timezone; 

讀取登錄檔hkey_local_machine//time zones//+oem_language.timezonekey路徑     "tzi"項資訊到rtzi中。

timezone.bias = rtzi.bias;

timezone.standardbias = rtzi.standardbias;

timezone.daylightbias = rtzi.daylightbias;

timezone.standarddate = rtzi.standarddate;

timezone.daylightdate = rtzi.daylightdate;

儲存timezone.standardname值到 登錄檔項"std"

儲存timezone.daylightname 值到 登錄檔項"dlt"

呼叫api函式   settimezoneinformation(&timezone);  

結束。。

WINCE下如何診斷應用程式崩潰

無論你是乙個單純的電腦使用者還是一名高階軟體工程師,都一定對程式崩潰不陌生。做為一名windows ce應用程式開發者,你也一定遇到過下圖這種場景 這個對話方塊告訴你,有乙個叫installer.exe的程式在位址00019320處崩潰了。如果這個程式歸你負責,那麼你的問題就來了 怎麼找出這個bug...

WinCE應用程式的開發

wince應用程式的開發是wince開發中很重要的乙個環節。本文將簡單介紹一些wince應用程式開發的基本概念。先說開發工具,目前用得比較多的開發工具有evc4 sp4 vs2005 vs2008和platform builder。其中platform builder主要是用來定製作業系統的,雖然也...

C 呼叫外部應用程式

呼叫外部程式 1先初始化要啟動的程序 processstartinfo 指定啟動程序時使用的一組值。processstartinfo startinfo new processstartinfo hh.exe decompile.2隱藏程序被啟動是的方式 startinfo.windowstyle ...