📄 lion-tutorial33.htm
字号:
</td> <td> <div align="center"><font face="MS Sans Serif" size="-1"></font></div> </td> <td> <div align="center"><font face="MS Sans Serif" size="-1">x</font></div> </td> </tr> <tr bgcolor="#FFFFCC"> <td><font face="MS Sans Serif" size="-1">font binding</font></td> <td> <div align="center"><font face="MS Sans Serif" size="-1"></font></div> </td> <td> <div align="center"><font face="MS Sans Serif" size="-1"></font></div> </td> <td> <div align="center"><font face="MS Sans Serif" size="-1">x</font></div> </td> </tr></table><p align="left"><font face="Tahoma" size="-1">The above table is by no means comprehensive: I only list the important features.</font></p><h3 align="left"><font face="Times New Roman, Times, serif" color="#3333CC">Creating the richedit control</font><font face="Tahoma"> </font></h3><p align="left"><font face="MS Sans Serif" size="-1">After loading the richedit dll, you can call <font color="#666600"><b>CreateWindowEx</b></font> to create the control. You can use edit control styles and common window styles in <font color="#006600"><b>CreateWindowEx</b></font> except <font color="#000066"><b>ES_LOWERCASE, ES_UPPERCASE and ES_OEMCONVERT</b></font>.</font></p><pre align="left"><font face="Tahoma"><b><font color="#660066">.const RichEditID equ 300.data </font></b></font><b><font color="#660066"><font face="Tahoma">RichEditDLL db "RichEd20.dll",0<br> RichEditClass db "RichEdit20A",0 ....data?<br> hRichEditDLL dd ? hwndRichEdit dd ?.code</font></font><font face="Tahoma"> ..... invoke <font color="#336600">LoadLibrary</font>,addr RichEditDLL mov hRichEditDLL,eax<br> invoke <font color="#336600">CreateWindowEx</font>,0,addr RichEditClass,WS_VISIBLE or ES_MULTILINE or WS_CHILD or WS_VSCROLL or WS_HSCROLL, \ CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,hWnd,RichEditID,hInstance,0 mov hwndRichEdit,eax</font></b></pre><h3 align="left"><font face="Times New Roman, Times, serif" color="#3333CC">Setting default text and background color</font></h3><p align="left"><font face="Tahoma" size="-1"> You may have the problem with setting text color and the background color of the edit control. But this problem has been remedy in richedit control. To set the background color of the richedit control, you send <font color="#006666"><b>EM_SETBKGNDCOLOR</b></font> to the richedit control. This message has the following syntax.</font></p><p align="left"><font face="Tahoma" size="-1"> <font color="#990033"><b>wParam</b></font> == color option. The value of 0 in this parameter specifies that Windows uses the color value in <font color="#990033"><b>lParam</b></font> as the background color. If this value is nonzero, Windows uses the Windows system background color. Since we send this message to change the background color, we must pass 0 in wParam.<br> <font color="#990033"><b>lParam</b></font> == specifies the <font color="#003366"><b>COLORREF</b></font> structure of the color you want to set if wParam is 0.</font></p><p align="left"><font face="Tahoma" size="-1"> For example, if I want to set the background color to pure blue, I would issue this following line:</font></p><pre align="left"><font face="Tahoma"> <font color="#330066"><b>invoke SendMessage,hwndRichEdit,EM_SETBKGNDCOLOR,0,0FF0000h</b></font></font><font face="Tahoma"></font></pre><p align="left"><font face="Tahoma" size="-1">To set the text color, richedit control provides another new message, <font color="#660066"><b>EM_SETCHARFORMAT</b></font>, for the job. This message controls the text formatting of a range to characters in selection or all text in the control. This message has the following syntax:</font></p><p align="left"><font face="Tahoma" size="-1"> <font color="#0000FF"><b>wParam</b></font> == formatting options: </font></p><table cellpadding="3" align="center" border="1"> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">SCF_ALL</font></b></td> <td><font face="MS Sans Serif" size="-1">The operation affects all text in the control.</font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">SCF_SELECTION</font></b></td> <td><font face="MS Sans Serif" size="-1">The operation affects only the text in selection</font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">SCF_WORD or SCF_SELECTION</font></b></td> <td><font face="MS Sans Serif" size="-1">Affects the word in selection. If the selection is empy, ie, only the caret is in the word, the operation affects that word. <b>SCF_WORD</b> flag must be used with <b>SCF_SELECTION</b>.</font></td> </tr></table><p align="left"><font face="Tahoma" size="-1"> <font color="#0000FF"><b>lParam</b></font> == pointer to a <font color="#990099"><b>CHARFORMAT</b></font> or <font color="#990099"><b>CHARFORMAT2</b></font> structure that specifies the text formatting to be applied. <font color="#990099"><b>CHARFORMAT2</b></font> is available for richedit 2.0 and above only. This doesn't mean that you must use <font color="#990099"><b>CHARFORMAT2</b></font> with RichEdit 2.0 or above. You can still use <font color="#990099"><b>CHARFORMAT</b></font> if the added features in <font color="#990099"><b>CHARFORMAT2</b></font> are not necessary for your need.</font></p><blockquote> <blockquote> <pre align="left"><font face="Tahoma"><b><font color="#006666">CHARFORMATA STRUCT cbSize DWORD ? dwMask DWORD ? dwEffects DWORD ? yHeight DWORD ? yOffset DWORD ? crTextColor COLORREF ? bCharSet BYTE ? bPitchAndFamily BYTE ? szFaceName BYTE LF_FACESIZE dup(?) _wPad2 WORD ? CHARFORMATA ENDS </font></b></font></pre> </blockquote></blockquote><table cellpadding="3" align="center" border="1"> <tr bgcolor="#CCFFCC"> <th nowrap><b><font face="MS Sans Serif" size="-1">Field Name</font></b></th> <th nowrap><font face="MS Sans Serif" size="-1">Description</font></th> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">cbSize</font></b></td> <td><font face="MS Sans Serif" size="-1">The size of the structure. RichEdit control uses this field to determine the version of the structure whether it is <font color="#003366"><b>CHARFORMAT</b></font> or <font color="#000066"><b>CHARFORMAT2</b></font></font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">dwMask</font></b></td> <td> <p><font face="MS Sans Serif" size="-1">Bit flags that determine which of the following members are valid.</font></p> <table cellpadding="3" border="1" align="center"> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_BOLD</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>CFE_BOLD</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member is valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_CHARSET</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>bCharSet</b></font> member is valid.</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_COLOR</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>crTextColor</b></font> member and the <font color="#000066"><b>CFE_AUTOCOLOR</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member are valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_FACE</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>szFaceName</b></font> member is valid.</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_ITALIC</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>CFE_ITALIC</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member is valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_OFFSET</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>yOffset </b></font>member is valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_PROTECTED</font></b></td> <td><font face="MS Sans Serif" size="-1">The<font color="#000066"><b> CFE_PROTECTED</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member is valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_SIZE</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>yHeight</b></font> member is valid</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_STRIKEOUT</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>CFE_STRIKEOUT</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member is valid.</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFM_UNDERLINE</font></b></td> <td><font face="MS Sans Serif" size="-1">The <font color="#000066"><b>CFE_UNDERLINE</b></font> value of the <font color="#000066"><b>dwEffects</b></font> member is valid</font></td> </tr> </table> </td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">dwEffects</font></b></td> <td> <p><font face="MS Sans Serif" size="-1">The character effects. Can be the combination of the following values</font></p> <table cellpadding="3" align="center" border="1"> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_AUTOCOLOR</font></b></td> <td><font face="MS Sans Serif" size="-1">Use the system text color</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_BOLD</font></b></td> <td><font face="MS Sans Serif" size="-1">Characters are bold</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_ITALIC</font></b></td> <td><font face="MS Sans Serif" size="-1">Characters are italic</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_STRIKEOUT</font></b></td> <td><font face="MS Sans Serif" size="-1">Characters are struck.</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_UNDERLINE</font></b></td> <td><font face="MS Sans Serif" size="-1">Characters are underlined</font></td> </tr> <tr> <td><b><font face="MS Sans Serif" size="-1">CFE_PROTECTED</font></b></td> <td><font face="MS Sans Serif" size="-1">Characters are protected; an attempt to modify them will cause an <font color="#000066"><b>EN_PROTECTED</b></font> notification message. </font></td> </tr> </table> </td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">yHeight</font></b></td> <td><font face="MS Sans Serif" size="-1">Character height, in twips (1/1440 of an inch or 1/20 of a printer's point). </font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">yOffset</font></b></td> <td><font face="MS Sans Serif" size="-1">Character offset, in twips, from the baseline. If the value of this member is positive, the character is a superscript; if it is negative, the character is a subscript. </font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">crTextColor </font></b></td> <td><font face="MS Sans Serif" size="-1">Text color. This member is ignored if the CFE_AUTOCOLOR character effect is specified. </font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">bCharSet</font></b></td> <td><font face="MS Sans Serif" size="-1">Character set value</font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">bPitchAndFamily</font></b></td> <td><font face="MS Sans Serif" size="-1">Font family and pitch. </font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="MS Sans Serif" size="-1">szFaceName </font></b></td> <td><font face="MS Sans Serif" size="-1">Null-terminated character array specifying the font name</font></td> </tr> <tr bgcolor="#FFFFCC"> <td><b><font face="Tahoma" size="-1">_wPad2</font></b></td> <td><font face="MS Sans Serif" size="-1">Padding</font></td> </tr></table><p><font face="Tahoma" size="-1">From examination of the structure, you'll see that we can change the text effects (bold,italic, strikeout,underline), text color (<font color="#006666"><b>crTextColor</b></font>) and font face/size/character set. A notable flag is <font color="#666600"><b>CFE_RPOTECTED</b></font>. The text with this flag is marked as protected which means that when the user tries to modify it, <font color="#666600"><b>EN_PROTECTED</b></font> notification message will be sent to the parent window. And you can allow the change to happen or not.</font></p><p><font face="Tahoma" size="-1"><b><font color="#006666">CHARFORMAT2</font></b> adds more text styles such as font weight, spacing,text background color, kerning, etc. If you don't need these extra features, simply use <font color="#006666"><b>CHARFORMAT</b></font>. </font></p><p><font face="Tahoma" size="-1">To set text formatting, you have to think about the range of text you want to apply to. Richedit control introduces the notion of character text range. Richedit control gives each character a number starting from 0: the first characterin the control has Id of 0, the second character 1 and so on. To specify a text range, you must give the richedit control two numbers: the IDs of the first and the last character of the range. To apply the text formatting with <font color="#000066"><b>EM_SETCHARFORMAT</b></font>,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -