windows mobile WM 6.1MMS subject不超过40个字符添加方法
2009-04-03 21:46
225 查看
wm6.1,3G手机开发,对subject长度做了要求,规定subject大小不超过40个字符。
(1)如果采用uincode,即为2字节的定长编码,所有的汉字或字母等都是2个字节,下文列出了各种语言版本的uinicode编码的范围:
unicode码的分布情况,够清楚了吧!不仅汉字,什么都有了!
*******************************************************
0000..007F; Basic Latin
0080..00FF; Latin-1 Supplement
0100..017F; Latin Extended-A
0180..024F; Latin Extended-B
0250..02AF; IPA Extensions
02B0..02FF; Spacing Modifier Letters
0300..036F; Combining Diacritical Marks
0370..03FF; Greek
0400..04FF; Cyrillic
0530..058F; Armenian
0590..05FF; Hebrew
0600..06FF; Arabic
0700..074F; Syriac
0780..07BF; Thaana
0900..097F; Devanagari
0980..09FF; Bengali
0A00..0A7F; Gurmukhi
0A80..0AFF; Gujarati
0B00..0B7F; Oriya
0B80..0BFF; Tamil
0C00..0C7F; Telugu
0C80..0CFF; Kannada
0D00..0D7F; Malayalam
0D80..0DFF; Sinhala
0E00..0E7F; Thai
0E80..0EFF; Lao
0F00..0FFF; Tibetan
1000..109F; Myanmar
10A0..10FF; Georgian
1100..11FF; Hangul Jamo
1200..137F; Ethiopic
13A0..13FF; Cherokee
1400..167F; Unified Canadian Aboriginal Syllabics
1680..169F; Ogham
16A0..16FF; Runic
1780..17FF; Khmer
1800..18AF; Mongolian
1E00..1EFF; Latin Extended Additional
1F00..1FFF; Greek Extended
2000..206F; General Punctuation
2070..209F; Superscripts and Subscripts
20A0..20CF; Currency Symbols
20D0..20FF; Combining Marks for Symbols
2100..214F; Letterlike Symbols
2150..218F; Number Forms
2190..21FF; Arrows
2200..22FF; Mathematical Operators
2300..23FF; Miscellaneous Technical
2400..243F; Control Pictures
2440..245F; Optical Character Recognition
2460..24FF; Enclosed Alphanumerics
2500..257F; Box Drawing
2580..259F; Block Elements
25A0..25FF; Geometric Shapes
2600..26FF; Miscellaneous Symbols
2700..27BF; Dingbats
2800..28FF; Braille Patterns
2E80..2EFF; CJK Radicals Supplement
2F00..2FDF; Kangxi Radicals
2FF0..2FFF; Ideographic Description Characters
3000..303F; CJK Symbols and Punctuation
3040..309F; Hiragana
30A0..30FF; Katakana
3100..312F; Bopomofo
3130..318F; Hangul Compatibility Jamo
3190..319F; Kanbun
31A0..31BF; Bopomofo Extended
3200..32FF; Enclosed CJK Letters and Months
3300..33FF; CJK Compatibility
3400..4DB5; CJK Unified Ideographs Extension A
4E00..9FFF; CJK Unified Ideographs
A000..A48F; Yi Syllables
A490..A4CF; Yi Radicals
AC00..D7A3; Hangul Syllables
D800..DB7F; High Surrogates
DB80..DBFF; High Private Use Surrogates
DC00..DFFF; Low Surrogates
E000..F8FF; Private Use
F900..FAFF; CJK Compatibility Ideographs
FB00..FB4F; Alphabetic Presentation Forms
FB50..FDFF; Arabic Presentation Forms-A
FE20..FE2F; Combining Half Marks
FE30..FE4F; CJK Compatibility Forms
FE50..FE6F; Small Form Variants
FE70..FEFE; Arabic Presentation Forms-B
FEFF..FEFF; Specials
FF00..FFEF; Halfwidth and Fullwidth Forms
FFF0..FFFD; Specials
10300..1032F; Old Italic
10330..1034F; Gothic
10400..1044F; Deseret
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
1D400..1D7FF; Mathematical Alphanumeric Symbols
20000..2A6D6; CJK Unified Ideographs Extension B
2F800..2FA1F; CJK Compatibility Ideographs Supplement
E0000..E007F; Tags
F0000..FFFFD; Private Use
100000..10FFFD; Private Use
汉字采用0x4e00-0x9fa5;
(2)ANSI字符集charset,及扩展MBCS,即为变长编码;如GB2312就是采用这种的方式;
当发现小于127,认为是一个ASCII字符,当发现大于127时候,会认为他是一个leading 字符,需要和后面的一个字节结合起来为一个字符;
如:0x31,小于127,被翻译成一个asciI字符;
0xcdef,cd大于128,所以和CDEF结合一起来看成一个字符;
回到先前命题,现在对edit control控件限制字符个数,需要关注以下几个消息,
EN_UPDATE,
EN_SETFOCUS,
EN_CHANGE,
EN_KILLFOCUS,
EN_MAXEXT,
对一个edit控件,获取消息的步骤,
(1)EN_SETFOCUS,获得光标,返回消息
(2)EN_UPDATE,这个消息是在edit控件显示文本text之前,而在输入文本text之后发生;
(3)EN_CHANGE,在控件中显示文本消息后启动;
于是我们可以把处理函数放在EN_UPDATE中,
TCHAR szTemp[40+1];
memset(szTemp,0,sizeof(szTemp));//unicode ,TCHAR == WCHAR
GetDlgItemText(hwndlg,ID_***,szTemp,40);
int iNum = 0;
for(int loop = 0;loop<40;loop++)
{
if(szTemp[loop] >= 0x4e00 && szTemp[loop] <= 0x9fa5)
{
iNum +=2;
if(iNum>40)
{
szTemp[loop] = 0x0000;
SetDlgItemText(hwnDlg,ID_**,szTemp,40);
}
}
else if(szTemp != 0x0000)
{
iNum ++;
if(iNum>40)
{
szTemp[loop] = 0x0000;
SetDlgItemText(hwnDlg,ID_**,szTemp,40);
}
}
else
break;
}
(1)如果采用uincode,即为2字节的定长编码,所有的汉字或字母等都是2个字节,下文列出了各种语言版本的uinicode编码的范围:
unicode码的分布情况,够清楚了吧!不仅汉字,什么都有了!
*******************************************************
0000..007F; Basic Latin
0080..00FF; Latin-1 Supplement
0100..017F; Latin Extended-A
0180..024F; Latin Extended-B
0250..02AF; IPA Extensions
02B0..02FF; Spacing Modifier Letters
0300..036F; Combining Diacritical Marks
0370..03FF; Greek
0400..04FF; Cyrillic
0530..058F; Armenian
0590..05FF; Hebrew
0600..06FF; Arabic
0700..074F; Syriac
0780..07BF; Thaana
0900..097F; Devanagari
0980..09FF; Bengali
0A00..0A7F; Gurmukhi
0A80..0AFF; Gujarati
0B00..0B7F; Oriya
0B80..0BFF; Tamil
0C00..0C7F; Telugu
0C80..0CFF; Kannada
0D00..0D7F; Malayalam
0D80..0DFF; Sinhala
0E00..0E7F; Thai
0E80..0EFF; Lao
0F00..0FFF; Tibetan
1000..109F; Myanmar
10A0..10FF; Georgian
1100..11FF; Hangul Jamo
1200..137F; Ethiopic
13A0..13FF; Cherokee
1400..167F; Unified Canadian Aboriginal Syllabics
1680..169F; Ogham
16A0..16FF; Runic
1780..17FF; Khmer
1800..18AF; Mongolian
1E00..1EFF; Latin Extended Additional
1F00..1FFF; Greek Extended
2000..206F; General Punctuation
2070..209F; Superscripts and Subscripts
20A0..20CF; Currency Symbols
20D0..20FF; Combining Marks for Symbols
2100..214F; Letterlike Symbols
2150..218F; Number Forms
2190..21FF; Arrows
2200..22FF; Mathematical Operators
2300..23FF; Miscellaneous Technical
2400..243F; Control Pictures
2440..245F; Optical Character Recognition
2460..24FF; Enclosed Alphanumerics
2500..257F; Box Drawing
2580..259F; Block Elements
25A0..25FF; Geometric Shapes
2600..26FF; Miscellaneous Symbols
2700..27BF; Dingbats
2800..28FF; Braille Patterns
2E80..2EFF; CJK Radicals Supplement
2F00..2FDF; Kangxi Radicals
2FF0..2FFF; Ideographic Description Characters
3000..303F; CJK Symbols and Punctuation
3040..309F; Hiragana
30A0..30FF; Katakana
3100..312F; Bopomofo
3130..318F; Hangul Compatibility Jamo
3190..319F; Kanbun
31A0..31BF; Bopomofo Extended
3200..32FF; Enclosed CJK Letters and Months
3300..33FF; CJK Compatibility
3400..4DB5; CJK Unified Ideographs Extension A
4E00..9FFF; CJK Unified Ideographs
A000..A48F; Yi Syllables
A490..A4CF; Yi Radicals
AC00..D7A3; Hangul Syllables
D800..DB7F; High Surrogates
DB80..DBFF; High Private Use Surrogates
DC00..DFFF; Low Surrogates
E000..F8FF; Private Use
F900..FAFF; CJK Compatibility Ideographs
FB00..FB4F; Alphabetic Presentation Forms
FB50..FDFF; Arabic Presentation Forms-A
FE20..FE2F; Combining Half Marks
FE30..FE4F; CJK Compatibility Forms
FE50..FE6F; Small Form Variants
FE70..FEFE; Arabic Presentation Forms-B
FEFF..FEFF; Specials
FF00..FFEF; Halfwidth and Fullwidth Forms
FFF0..FFFD; Specials
10300..1032F; Old Italic
10330..1034F; Gothic
10400..1044F; Deseret
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
1D400..1D7FF; Mathematical Alphanumeric Symbols
20000..2A6D6; CJK Unified Ideographs Extension B
2F800..2FA1F; CJK Compatibility Ideographs Supplement
E0000..E007F; Tags
F0000..FFFFD; Private Use
100000..10FFFD; Private Use
汉字采用0x4e00-0x9fa5;
(2)ANSI字符集charset,及扩展MBCS,即为变长编码;如GB2312就是采用这种的方式;
当发现小于127,认为是一个ASCII字符,当发现大于127时候,会认为他是一个leading 字符,需要和后面的一个字节结合起来为一个字符;
如:0x31,小于127,被翻译成一个asciI字符;
0xcdef,cd大于128,所以和CDEF结合一起来看成一个字符;
回到先前命题,现在对edit control控件限制字符个数,需要关注以下几个消息,
EN_UPDATE,
EN_SETFOCUS,
EN_CHANGE,
EN_KILLFOCUS,
EN_MAXEXT,
对一个edit控件,获取消息的步骤,
(1)EN_SETFOCUS,获得光标,返回消息
(2)EN_UPDATE,这个消息是在edit控件显示文本text之前,而在输入文本text之后发生;
(3)EN_CHANGE,在控件中显示文本消息后启动;
于是我们可以把处理函数放在EN_UPDATE中,
TCHAR szTemp[40+1];
memset(szTemp,0,sizeof(szTemp));//unicode ,TCHAR == WCHAR
GetDlgItemText(hwndlg,ID_***,szTemp,40);
int iNum = 0;
for(int loop = 0;loop<40;loop++)
{
if(szTemp[loop] >= 0x4e00 && szTemp[loop] <= 0x9fa5)
{
iNum +=2;
if(iNum>40)
{
szTemp[loop] = 0x0000;
SetDlgItemText(hwnDlg,ID_**,szTemp,40);
}
}
else if(szTemp != 0x0000)
{
iNum ++;
if(iNum>40)
{
szTemp[loop] = 0x0000;
SetDlgItemText(hwnDlg,ID_**,szTemp,40);
}
}
else
break;
}
相关文章推荐
- Windows Mobile WM 手机安装和删除软件 教程方法 新手必看
- 博客中添加超过200k的.gif文件以及其它图片文件的方法介绍
- Windows服务的手动添加和删除方法
- 通过SQL添加WINDOWS管理员方法
- 【转】“添加/删除Windows组件”里没有IIS(Internet信息服务)项的解决方法
- winrar解压spring出现“路径和文件名总长度必须不能超过 260 个字符!”错误的解决方法
- 关于ComboBox用AddString添加字符到ListBox里顺序错乱的解决方法
- Windows服务的手动添加和删除方法
- linux和windows下添加php扩展方法
- 解决“添加删除Windows组件”中没有IIS选项的方法
- “添加删除WINDOWS组件”中没有IIS 时安装IIS 方法
- windows动态添加lib的三种方法
- 为JS字符类型添加trim方法
- ruby gem 本地安装方法以及在windows下添加mysql.gem
- win2003添加删除windows组件中无iis应用程序服务器项的解决方法
- 添加/删除Windows组件没有Internet信息服务解决方法
- 在IE6下附件名称如果超过16或者18个字符,下载时会被截断,该问题的解决方法
- Dia作图过程中添加latex格式字符方法
- Windows服务的手动添加和删除方法
- "路径和文件名总长度必须不能超过 260 个字符! 系统找不到指定的路径"的解决方法