编辑控制默认消息处理

【勇芳软件工作室】汉化HomePreviousNext

预定义编辑控制窗口类的窗口过程对编辑控制过程不处理的所有消息执行默认处理。当编辑控制过程对任何消息返回FALSE时,预定义的窗口过程将检查消息并执行以下默认操作。

信息默认动作
EM_CANUNDO如果可以撤消编辑控制操作,则返回TRUE。
EM_CHARFROMPOS返回最接近指定点的字符的字符索引和行索引。
EM_EMPTYUNDOBUFFER清空undo缓冲区,并将EM_CANUNDO消息检索到的undo标志设置为FALSE。只要编辑控件收到WM_SETTEXTEM_SETHANDLE消息,Windows就会自动清除撤消标志。
EM_FMTLINES在多行编辑控件中添加或删除软折线字符(两个回车符和换行符)到包装线的末尾。它不是由单行编辑控件处理。
EM_GETFIRSTVISIBLELINE返回单行编辑控件中第一个可见字符的从零开始的索引或多行编辑控件中最上部可见行的从零开始的索引。
EM_GETHANDLE返回一个标识包含多行编辑控件文本的缓冲区的句柄。它不是由单行编辑控件处理。
EM_GETLIMITTEXT以字符返回当前文本限制。
EM_GETLINE将单行编辑控件中的字符复制到缓冲区,并返回复制的字符数。在多行编辑控件中,从控件中检索一行文本并返回复制的字符数。
EM_GETLINECOUNT返回编辑控件中的行数。
EM_GETMARGINS返回左边距和右边距的宽度。
EM_GETMODIFY返回指示编辑控件的内容是否已修改的标志。
EM_GETPASSWORDCHAR返回编辑控件与ES_PASSWORD风格结合使用的字符。
EM_GETRECT返回编辑控件中格式化矩形的坐标。
EM_GETSEL返回编辑控件中当前选择的起始和结束字符位置。
EM_GETTHUMB返回滚动框的位置。
EM_GETWORDBREAKPROC返回编辑控件中当前的单词包裹函数的地址。
EM_LINEFROMCHAR返回包含指定字符索引的多行编辑控件中的行的从零开始的数字此消息与EM_LINEINDEX消息相反。它不是由单行编辑控件处理。
EM_LINEINDEX返回多行编辑控件中行的字符。此消息与EM_LINEFROMCHAR消息相反。它不是由单行编辑控件处理。
EM_LINELENGTH返回单行编辑控件的长度(以字符为单位)。在多行编辑控件中,返回指定行的长度(以字符为单位)。
EM_LINESCROLL在单行编辑控件中垂直滚动文本,或在多行编辑控件中水平滚动文本(当控件具有ES_LEFT样式时)。【lParam的】参数指定从当前行开始垂直滚动的行数。【wParam中】参数指定从当前字符开始水平滚动的字符数。
EM_POSFROMCHAR返回指定字符的客户端坐标。
EM_REPLACESEL使用应用程序提供的缓冲区中的文本替换当前选择,发送父窗口EN_UPDATEEN_CHANGE消息,并更新撤消缓冲区。
EM_SCROLL在多行编辑控件中垂直滚动文本。此消息相当于向编辑控件发送WM_VSCROLL消息。它不是由单行编辑控件处理。
EM_SCROLLCARET在编辑控件中将插入符滚动到视图中。在早期版本的Windows中,这是通过EM_SETSEL使用特定参数完成的。基于Win32的应用程序应使用EM_SCROLLCARET。
EM_SETFONT不支持。
EM_SETHANDLE设置用作文本缓冲区的内存的句柄,清空撤消缓冲区,将滚动位置重置为零,然后重新绘制窗口。
EM_SETLIMITTEXT设置用户可以在编辑控件中输入的最大字符数。对于单行编辑控件,此值为0x7FFFFFFE(版本4.0为0x7FFE)或【wParam中】参数的值(以较小者为准)。对于多行编辑控件,此值为0xFFFFFFFF(版本4.0为0xFFFF)或【wParam中】参数的值(以较小者为准)。
EM_SETMARGINS设置左边距和右边距的宽度,并重新绘制编辑控件以反映新的边距。
EM_SETMODIFY设置或清除修改标志以指示编辑控件是否已被修改。
EM_SETPASSWORDCHAR定义编辑控件与ES_PASSWORD样式一起使用的字符。
EM_SETREADONLY在编辑控件中设置或删除只读样式(ES_READONLY)。
EM_SETRECT设置多行编辑控件的格式化矩形并重新绘制窗口。它不是由单行编辑控件处理。
EM_SETRECTNP设置多行编辑控件的格式化矩形,但不重绘窗口。它不是由单行编辑控件处理。
EM_SETSEL通过设置要选择的开始和结束位置,在编辑控件中选择一个范围的字符。
EM_SETTABSTOPS在多行编辑控件中设置制表位置。它不是由单行编辑控件处理。
EM_SETWORDBREAKPROC用应用程序定义的字幕功能替换默认的wordwrap函数。
EM_UNDO删除刚插入的任何文本或插入任何已删除的字符,并将选择设置为插入的文本。如果需要,将EN_UPDATEEN_CHANGE通知消息发送到父窗口。
WM_CHAR将字符写入单行编辑控件,并将EN_UPDATE和EN_CHANGE通知消息发送到父窗口。将一个字符写入多行编辑控件。处理标准功能的加速键,例如用于复制的CTRL + C和用于粘贴的CTRL + V。在多行编辑控件中,还可以处理TAB和CTRL + TAB按键,以在对话框中的控件之间移动,并将选项卡插入到多行编辑控件中。对非法字符使用MessageBeep功能。
WM_CLEAR清除编辑控件中的当前选择(如果有)。如果没有当前选择,删除插入符号右侧的字符。如果用户按下SHIFT键,则将选择剪切到剪贴板,或者当没有选择时,删除插入符号左侧的字符。如果用户按下CTRL键,则会在没有选择的情况下删除选择,或删除到行尾。
WM_COPY将文本复制到剪贴板,除非样式为ES_PASSWORD,否则消息将返回零。
WM_CREATE创建编辑控件,并通知父窗口为TRUE,否则为-1。
WM_CUT将选择剪切到剪贴板,如果没有选择,则删除光标左侧的字符。
WM_ENABLE导致矩形重绘为灰色单行编辑控件。返回单行和多行编辑控件的启用状态。
WM_ERASEBKGND使用编辑控件的当前颜色填充多行编辑控件窗口。
WM_GETDLGCODE返回以下值:DLGC_WANTCHARS,DLGC_HASSETSEL和DLGC_WANTARROWS。ny在多行编辑控件中,它还返回DLGC_WANTALLKEYS。如果用户按ALT + BACKSPACE,它也返回DLGC_WANTMESSAGE。
WM_GETFONT返回控件使用的字体的句柄,如果控件使用系统字体,则返回NULL。
WM_GETTEXT将指定数量的字符复制到缓冲区并返回复制的字符数。
WM_GETTEXTLENGTH返回编辑控件中文本的长度(以字符为单位)。长度不包括空终止字符。
WM_HSCROLL水平地滚动多行编辑控件中的文本并处理滚动框移动。
WM_KEYDOWN执行虚拟键代码的标准处理。
WM_KILLFOCUS删除编辑控制窗口的键盘焦点,销毁插入符号,隐藏当前选择,并通知父窗口编辑控件已失去焦点。
WM_LBUTTONDBLCLK清除当前选择并选择光标下的单词。如果SHIFT键关闭,则将选择扩展到光标下的单词。
WM_LBUTTONDOWN更改当前插入点。如果SHIFT键关闭,它将选择扩展到光标的位置。在多行编辑控件中,当用户按住多行编辑控件窗口外的鼠标按钮时,也会将定时器设置为自动滚动。
WM_LBUTTONUP释放鼠标捕获并在单行编辑控件中设置文本插入点。在多行编辑控件中,它也会杀死WM_LBUTTONDOWN消息中设置的定时器。
WM_MOUSEMOVE如果鼠标按钮关闭,则更改单行编辑控件中的当前选择。在多行编辑控件中,如果用户按住多行编辑控件窗口外的鼠标按钮,也会将定时器设置为自动滚动。
WM_NCCREATE指向窗口的CREATESTRUCT结构。当首次创建窗口时,此消息将发送到WM_CREATE消息。
WM_NCDESTROY释放与编辑控制窗口相关联的所有内存,包括文本缓冲区,撤消缓冲区,制表符停止缓冲区和高亮画笔。
WM_PAINT擦除背景,使用编辑控件窗口的当前颜色填充窗口,绘制边框(如果有),设置字体并绘制任何文本,并显示文本插入插入符号。
WM_PASTE将文本从剪贴板粘贴到插入符号位置的编辑控制窗口中。
WM_SETFOCUS设置编辑控件窗口的键盘焦点(显示当前选择,如果它被隐藏,并创建插入符号)。
WM_SETFONT设置字体,并可选择重绘编辑控件。
WM_SETTEXT将文本复制到单行编辑控件,当内存不足时通知父窗口,清空undo缓冲区,并将EN_UPDATEEN_CHANGE通知消息发送到父窗口。在多行编辑控件中,还可以重新排列(如果需要)并设置滚动位置。
WM_SIZE更改编辑控件窗口的大小,并确保最小大小适应字符的高度和宽度。
WM_SYSCHAR如果用户按ALT + BACKSPACE,返回TRUE;否则,它不采取任何行动。
WM_SYSKEYDOWN如果用户按ALT + BACKSPACE,则撤消上次操作;否则,它不采取任何行动。
WM_TIMER如果用户在多行编辑控制窗口外按住鼠标按钮,则滚动编辑控件窗口中的文本。
WM_UNDO删除刚插入的任何文本或插入任何已删除的字符,并将选择设置为插入的文本。如果需要,将EN_UPDATEEN_CHANGE通知消息发送到父窗口。
WM_VSCROLL垂直滚动多行编辑控件并处理滚动框移动。它不是由单行编辑控件处理。

预定义的编辑控制窗口过程将所有其他消息传递给DefWindowProc函数进行默认处理。