资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
文本编辑器是 SymbianOS 最基本的编辑器。从手机的使用角度来说,手机上的按键可以提供字母和数字的输入,但是一般都不能提供所有的字符输入,例如标点符号、电子邮件特殊符号等。这些特殊的字符需要手机提供一个字符映射,用户可以从这个特殊字符集中选取特定的字符。此功能由文本编辑器来提供。SymbainSDK 提供了 3 种文本编辑器的输入模式,即文本、数字和密码。对于文本编辑模式,Symbian 允许用户使用大小写,究竟使用大写模式还是小写模式都可以在资源文件的 EDWIN 中进行设置。表-1 列出了大小写模式的枚举值。表-1 文本编辑器的大小写枚举值输入大小写枚举值 说明EAknEditorUpperCase只允许大写EAknEditorLowerCase只允许小写EAknEditorTextCase自动采用。首字母大写EAknEditorAllCaseModes同时允许大小写除了允许大小写外,Symbian 还允许用户输入特殊的字符。由于这些特殊的字符在手机的键盘上并不存在,所以采用字符映射的方式,当用户按下一个特殊键如#键时,程序会弹出一个特殊字符集,用户可以从中选择所需的字符。表-2 列出了常见的特殊字符集映射:表-2 文本编辑器的特殊字符集映射用途 资源标识符默认R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOGURL 地址R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG电子邮件地址R_AVKON_EMAIL_ADDR_SPECIAL_CHARACTER_TABLE_DIALOG货币R_AVKON_CURRENTY_NAME_SPECIAL_CHARACTER_TABLE_DIALOG下面程序演示了如何构建文本编辑器以及创建特殊字符集。(1)在资源文件中定义。RESOURCE EDWIN r_plain_text_editorwidth =30;lines =5;maxlength =30;flags =EEikEdwinWidthInPixels;avkon_flags= EAknEditorFlagNoT9;default_case= EAknEditorLowerCase;allowed_case_modes = EAknEditorUpperCase |EAknEditorLowerCase;numeric_keymap = EAknEditorPlainNumberModeKeymap;allowed_input_modes = EAknEditorTextInputMode |EAknEditorNumericInputMode;default_input_mode = EAknEditorTextInputMode;special_character_table =R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;从以上代码可知,文本编辑框资源在 RESOURCE EDWIN 中定义了如下所示的字段:width。确定文本的宽度,也就是一行的字符个数。lines。确定文本编辑器的行数。maxlength。确定编辑器的最大行数。flags。设置编辑器的特性。这里是 EAknEditorFlagNoT9,表示不使用预测文本。default_case。确定输入的大小写。EAknEditorLowerCase 指定其为小写。allow_case_modes。EAnkEditorUpperCase |EAknEditorLowerCase 表示把大写设置为允许的模式,此项用来设置附加的大小写模式。numeric_keymap。设置数字键映射。EAknEditorPlainNumberModeKeymap 阻止数字键映射。allowed_input_modes。EAknEditorTextInputMode |EAknEditorNumericInputMode 表示允许文本和数字的输入,此项设置允许的输入模式。default_input_mode。默认的输入模式。EAknEditorTextInputMode 表示文本是默认的输入模式。special_character_table。特殊字符集,这里使用默认的字符集,其值为R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG。表-3、表-4、表-5 列出了 avkon_flags、数字键映射和输入模式的常用值。表-3 文本编辑器的 avkon_flags 属性avkon_flags 的值作用 EAknEditorFlagDefault默认值,重置所有标志EAknEditorFlagFixedCase阻止更改大小写EAknEditorFlagNoT9阻止预测文本输入EAknEditorFlagNoEditIndicators从导航面板移除编辑指示符。在选项卡视图中有用EAknEditorFlagNoLRNavigation阻止向左和向右滚动EAknEditorFlagSupressShiftMenu阻止特殊字符表的显示EAknEditorFlagEnableScrollBars启动滚动条指示符EAknEditorFlagMTAutoOverwrite启动文件改写代替插入EAknEditorFlagUseSCTNumericCharmap用户在数字模式下按信*号,编辑器显示特殊字符表面非数字键映射。要求事先在编辑器中使用 special_character_table 字段定义特殊字符表。EAknEditorFlagLatinInputModeOnly阻止除拉丁字符外其他所有字符的输入EAknEditorFlagTransparenFepModes强制性使前端处理器模式为透明表-4 文本编辑器数字键映射Mumric_keymap 的值 *键输入 #键输入EAknEditorStandardNumberModeKeyMap * + p w #EAknEditorPlainNumberModeKeyMap无 无EAknEditorCalculatorNumberModeKeyMap + - * / .EAknEditorConverterNumberModeKeyMap + - E .EAknEditorToFieldNumberModeKeyMap + ;EAknEditorFixedDiallingNumberModeKeyMap * + p w #EAknEditorSATNumberModeKeyMap * + #EAknEditorSATHiddenNumberModeKeyMap * #表-5 文本编辑器的输入模式default_input_mode 和 allowed_input_mode 的值 作用EAknEditorTextInputMode文本EAknEditorNumericInputMode数字EAknEditorSecretAlphalInputMode密码EAknEditorAllInputMode以上全部(2)在 Container 的 ConstructL 中创建文本编辑器。其代码如下所示。void CSampleControlContainer:ConstructL(constTRectiEditor =new (ELeave) CEikEdwin;iEditor-SetContainerWindowL(*this);TResourceReader reader;iEikonEnv-CreateResourceReaderLC(reader,R_PLAIN_TEXT_EDITOR);iEditor-ConstructFromResourceL(reader);CleanupStack:PopAndDestroy();iEditor-SetFocus(ETrue);SetRect(aRect);ActivateL();文本编辑框的类是 CEikEdwin,代码从资源文件中构建文本编辑器,然后将程序焦点设置在文本框中。(3)响应用户按键。为了让文本编辑器能够响应用户的按键事件,需要重写 Container的 OfferKeyEventL()函数,其代码如下:TKeyResponse CSampleControlContainer:OfferKeyEventL(constTKeyEventelsereturn CCoeControl:OfferKeyEventL(aKeyEvent, aType);(4)获得 Editor 输入的内容。HBufC* buf = iEdit-GetTextInHBufL();iEikonEnv-InfoMsg(*buf);delete buf;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号