
没有看到代码。只能帮你分析一下。
UpdateData(FALSE)函数的意思是:
将窗口控件的变量的值赋值到控件上,UpdateData(TRUE)将控件上的值赋值到窗口控件的变量。可能问题就出在多次调用UpdateData(FALSE)上。
也可能是因为你在响应编辑框EN_CHANGE消息时,处理过程中调用到了SetSel()函数,造成你每次编辑框内容改变就会从新获取焦点,这样光标就变动了。
---------------------------------------
补充:
你是不是想通过鼠标点击某个按钮把内容加到编辑框里例如计算器?
不管怎么样,你非得用SetSel()的话,你看看SetSel()参数设置错没有
CString str;
m_editGetWindowText(str);//m_edit是编辑框CEdit变量
int i=strlen(str);
m_editSetSel(i,i);//i表示光标选中的起始和结束位置范围
---------------------------------------
——————————————————————————————————
再次补充。
UpdateData(FALSE)相当于刷新编辑框。当编辑框刷新后焦点将在最前面。
你写成这样就对了:
UpdateData(FALSE);
((CEdit)GetDlgItem(IDC_INPUT_EDIT))->SetSel(m_strinputGetLength(), m_strinputGetLength(),FALSE);
说下转大小写的问题。
可以使用CString的MakeUpper()函数。
我还想说下你的算法。
if(c<'0' || c>'9' && c<65 || c>70)
你的这句我真理解不了,看不懂。 感觉你的算法还有点问题。
我给你改了下代码:
UpdateData(TRUE);
char c=m_strinputGetAt(m_strinputGetLength()-1);
//下面这句判断输入的是否是0-9或者A-F或者a-f不是就清空。你需要其他的自己改
if ((c>='0' && c<='9') || (c>='A' && c<='F') || (c>='a' && c<='f'))
m_strinputMakeUpper();//整个字符串里的小写转大写
else
m_strinputEmpty();
UpdateData(FALSE);
((CEdit)GetDlgItem(IDC_EDIT1))->SetSel(m_strinputGetLength(),\
m_strinputGetLength(),FALSE);
1/1
打开应用程序
打开访达侧栏上的应用程序。
2/4
点击实用工具
点击页面上的实用工具
3/4
点击打开终端
点击打开页面上的终端。
4/4
输入命令并执行
打开后在终端里输入命令,按回车执行即可。
Control + A 跳到本行的行首
Control + E 跳到本行的行尾
Control + U 删除光标前面(左侧)的所有文字(还有剪切功能),如果光标样式是“块”,不包含光标所在位置的字符
Control + K 删除光标后面(右侧)的所有文字(还有剪切功能),包含光标所在位置的字符
Control + A + K 删除整行,其实就是先把光标移到行首(Control + A),再删除光标后面的所有文字(Control + K)
Control + L 清屏
Clear 清屏
Command + K 清屏
Control + W 删除光标前面(左侧)的单词,不包含光标所在位置的字符
Esc + D 删除光标后面(右侧)的单词,包含光标所在位置的字符
Control + D 删除光标所在位置的字符,命令行若无任何字符,则等效退出
Control + C 终止命令
Option + ← 向左按单词移动光标
Option + → 向右按单词移动光标
Control + Y 粘贴 Ctrl + U 或 Ctrl + K 剪切的内容
删除
快捷键 说明
Control + U 删除当前光标前面(即左边)的所有字符(还有剪切功能),如果光标样式是“块”,则光标所在位置的字符保留
Control + K 删除当前光标后面(即右边)的所有字符(还有剪切功能),如果光标样式是“块”,则光标所在位置的字符也会一起删除
Control + A + K 删除整行
Control + E + U 删除整行
Control + K + U 删除整行
Control + W 删除光标前面(即左边)的单词,如果光标样式是“块”,光标所在位置的字符保留
Esc + D 删除光标后面(即右边)的单词,其实是删除光标后面的字符直到词尾,如果光标样式是“块”,则光标所在位置的字符也会一起删除
Control + D 删除光标所在位置的字符,命令行若无所有字符,则等效退出。光标样式是“块”才有效果,否则无效果
Control + H 删除光标前面的一个字符,相当于 Delete 键
Fn + Del 删除光标后面的一个字符
清屏
快捷键 说明
Control +L 进行清屏 *** 作
Clear 清屏
Command + K 清屏
复制粘贴
快捷键 说明
Control + Y 粘贴之前删除的内容到光标前,也就是Ctrl+W,Ctrl+K,Ctrl+U,Esc+D删除的内容
Command + C 复制
Command + V 粘贴
交互/撤销
快捷键 说明
Control + T 将光标处的字符和光标前一个字符的位置进行交互
Control + _ 撤销 *** 作,每按一次就会回退一次
移动光标
快捷键 功能说明
Control + A 光标移动到行首,相当于通常的Home键
Control + E 光标移动到行尾,相当于通常的End键
Control + F 光标向右移动一个字符位置,相当于右方向键
Control + B 光标向左移动一个字符位置,相当于左方向键
Esc + B 往前(左)移动一个单词,组合键每按一下才会移动一个单词,不好用
Esc + F 往后(右)移动一个单词,组合键每按一下才会移动一个单词,不好用
Option + ← 向左按单词移动光标
Option + → 向右按单词移动光标
查找历史命令
快捷键 说明
Control + P 显示上一条历史命令(相当于上键)
Control + N 显示下一条历史命令(相当于下键)
Control + R 搜索历史命令,输入搜索词会显示历史命令中的一条匹配命令,Enter键执行匹配命令,其实非常不好用,按ESC键从搜索历史命令模式退出到命令行,且匹配到的命令保留在命令行
Control + G 从搜索历史命令模式(Control + R)退出,且匹配到的命令不会保留在命令行
使用命令查看历史命令
history # 查看所有的历史命令
history -d 5 # 删除第5条历史命令
history -c # 清除历史命令
标签页
快捷键 说明
Command + T 新建标签
Command + W 关闭当前标签页
Command + S 保存终端输出
Command + D 垂直分隔当前标签页
Command + Shift + D 水平分隔当前标签页
Command + shift + { 向左切换标签
Command + shift + } 向右切换标签
控制命令
快捷键 说明
Control + S 阻止屏幕输出
Control + Q 允许屏幕输出
Control + C 终止命令
Control + Z 挂起命令(使用fg命令恢复)
滚屏
快捷键 说明
Fn + ← 向上滚屏到开始处
Fn + → 向下滚屏到末尾处
Fn + ↑ 向上分页滚屏
Fn + ↓ 向下分页滚屏
Fn + Command + ← 向上滚屏到开始处
Fn + Command + → 向下滚屏到末尾处
Fn + Command + ↑ 向上分页滚屏
Fn + Command + ↓ 向下分页滚屏
收
命令行模式:进入vim后的默认模式,用户可以输入vim命令来管理自己的文档,此时从键盘上输入任何字符都会当成编辑命令,输入合法的vim命令,vim会完成相应的动作
文本输入模式:在命令模式下输入i/I 或者a/A 进入输入模式,就可以在文本文件内输入内容了,按下ESC则回到命令行模式
末行模式:在命令行模式下输入:进入末行模式
一般进入vim 都是vim后面跟着文件名
如
如果当前文件夹下没有此文件,则会在目录下新生成此文件
注:如果你直接vim进入编辑器,而没有跟文件名,他也会进去,但是你退出时需要指定文件名称
如果你想进入编辑器中的具体某一行(指光标所在的行)
需要进入文本输入模式
命令模式下输入i进入文本输入模式可以输入内容了,在光标所在字符之前进行插入
输入I 是在光标所在行行首进行输入
输入a是在光标所在字符的后面进行插入
输入A是在光标所在行行末进行输入
输入o在光标所在行下面插入一空行
输入O在光标所在行上面插入一空行
你可以在输入模式下按Delete或者退格键(Backspace)进行删除文本,我将介绍一些在命令行下如何删除文本
x —— 删除光标所在的字符
X —— 删除光标所在字符前面的字符
D或者d$ ——删除光标所在位置到行末的字符
dd——删除光标所在一行
yy——复制光标所在行
Y——复制光标所在位置到行尾
y0——复制光标前一位到行首
p——粘贴
v/V——选中文本
u/U——撤销
——重复上次执行的命令
需要进入文本末模式
:q——退出
:q!——强制退出
:w——保存
:wq——保存并退出
j——向下
k——向上
h——向左
l——向右
H——前面加数字代表光标移动到哪行行首,(当前屏幕)
M——移动到文本中间,或者屏幕中间行的行首
L——移动到文本末或者屏幕底部行行首,可以加数字
G——不受屏幕限制,是文本的行数
:set number ——设置行号
/string ——查找命令
以上就是关于MFC编辑框中光标问题全部的内容,包括:MFC编辑框中光标问题、苹果电脑打开cmd快捷键、vim使用指南等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)