?? vcc1.htm
字號:
<html>
<head>
<title>c++系列</title>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
</head>
<p align="center"><script src="../../1.js"></script></a>
<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center>
<table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
<tbody>
<tr>
<td width=200 height="59">
</tr>
</tbody>
</table>
<table border=1 bordercolordark=#ffffff bordercolorlight=#ffffff cellpadding=0
cellspacing=0 width=685 align="center" height="70">
<tbody>
<tr>
<td bgcolor=#F9D23C height=14>
<div align=center class=H1> <b> <b><font
color=#ffa000><b class="unnamed1"><font color="#FFFFFF">在同一系統中顯示GB字符和BIG5字符</font></b></font></b></font><font
color=#ffa000><b></b></font></b></font></div>
</td>
</tr>
<tr valign=top>
<td class=H1 height=212>
<p align="left"> <br>
當前由于大陸和港臺采用不同的內碼,因此產生了兩種常用的內碼GB/BIG5。以前的軟件都是利用內建的字庫來完成兩種內碼的顯示,而在這里我提供一種簡便的方法用于在Windows程序中顯示不同內碼的文字。
</span></span></span></span></font></p>
<p align="left"> 大家可能都注意到IE,MS
Office97等軟件都可以根據不同內碼使用不同的字體顯示而不需要平臺支持。他們利用的都是MS所提供的語言開發包進行開發,下面介紹這種方法:</span></span></span></span></font></p>
<p align="left"> 首先你需要安裝MS提供的GB和BIG5字體,(可在<a href="javascript:if(confirm('../../www.microsoft.com/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server@'))window.location='../../www.microsoft.com/default.htm'" tppabs="http://www.microsoft.com/">MS站點</a>免費下載)。</span></span></span></span></font></p>
<p align="left"> 然后需要修改你的顯示代碼,對于不同的模式裝入不同的字體。這種技術的核心就是指定不同的字符集和字體名稱,示范代碼如下:<br>
</span></span></span></span></font></p>
<div align="left">
<pre> //下面的代碼將裝入BIG5字體并顯示
CFont font;
LOGFONT lf; //LOGFONT結構中的變量用于定義字體的各種特性
memset(&lf,0,sizeof(lf));
lf.lfCharSet = CHINESEBIG5_CHARSET; //設置字符集
lf.lfHeight = 20;
strcpy(lf.lfFaceName,"MingLiu"); //設置字體名稱 MingLiu為MS提供的BIG5字體
font.CreateFontIndirect(&lf); //創建字體
CFont* pF = (CFont*)dc.SelectObject(&font); //保存當前字體
dc.TextOut(0,0,_T("what you want to display"));
dc.SelectObject(pF); //恢復以前的字體
</span></span></span></span></font></pre>
</div>
<p align="left"> 但是系統中安裝的字體我們是不知道的,因此我們應該找出我們所需要的字體是否已經安裝。Windows中的EnumFontFamiliesEx可以幫助我們。該函數的說明如下:<br>
</span></span></span></span></font></p>
<div align="left">
<pre> <span class="unnamed1">int EnumFontFamiliesEx(HDC hdc,LPLOGFONT lpLogfont,
FONTENUMPROC lpEnumFontFamExProc,
LPARAM lParam,DWORD dwFlags);
在調用該功能時需要在lpLogfont中設置相應的值,下面的代碼表示列出所有BIG5字體。
HWND hW=::GetFocus();
HDC hdc=::GetDC(hW);
LOGFONT lf;
memset(&lf,0,sizeof(lf));
lf.lfCharset = CHINESEBIG5_CHARSET; //如果該值為DEFAULT_CHARSET將會列出所有字體
lf.lfFaceName = "";
lf.lfPitchAndFamily = 0;
EmunFontFamiliesEx(hdc,&lf,myEnumFontFamExProc,0,0);
同時你還需要定義一個回調函數,在每找到一種字體時該函數都將被調用。函數原型如下:
int CALLBACK myEnumFontFamExProc(ENUMLOGFONTEX *lpelfe,NEWTEXTMETRICEX *lpntme,
int FontType,LPARAM lParam)
{
TRACE("font family name\n",lpelfe->elfLogFont.lfFaceName);
//將該字體LOGFONT或是FaceName保存到自己的數據中
}</span></span></span></span></font></pre>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -