C#下如何获取光标的位置并在光标处输入字符
我想在一个C#程序运行的时候获取光标的位置!不管这个光标是在程序内部还是外部都能在光标处输入文字,就像如果光标在记事本上就在记事本上输入,在word上就在Word上输入,...
我想在一个C#程序运行的时候获取光标的位置!不管这个光标是在程序内部还是外部都能在光标处输入文字,就像如果光标在记事本上就在记事本上输入,在word上就在Word上输入,在网页上就在网页上输入文字!关键是获取光标的位置。
展开
1个回答
展开全部
在EDIT BOX的属性界面将Multiline勾选使其支持多行输入,再将Want return勾上使其支持回车符的输入!在ClassWizard中添加对话框的事件,并关联EDIT BOX为Control变量m_edit;然后添加对话框的PreTranslateMessage事件,事件代码如下:
BOOL CKsDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (WM_KEYFIRST<=pMsg->message && pMsg->message<=WM_KEYLAST)
{
if (pMsg-> wParam == VK_RETURN)
{
if (GetFocus()==GetDlgItem(IDC_EDIT1))
{
int lines,lens=1; //定义当前行的行号,以及当前行长度
lines=m_edit.LineIndex(-1);//获取当前输入行的行号
lens=m_edit.LineLength(lines);
char *mstr=new char[lens]; //定义一个字符串指针用来获取当前行的内容
m_edit.GetLine(lines,mstr,lens); //取得当前行的内容
CString strs; //定义一个C++字符串类变量
strs.Format("%s",mstr);//将当前行的内容转换成CString类;
delete mstr;//释放mstr所占的空间
这里输入你想要执行的操作!比如要执行的命令,我不知道你想要执行什么类型的命令所以这里能给你写出来
this->SetFocus();//这里把焦点转回给对话框,否则可能会执行两次当前事件!
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CKsDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (WM_KEYFIRST<=pMsg->message && pMsg->message<=WM_KEYLAST)
{
if (pMsg-> wParam == VK_RETURN)
{
if (GetFocus()==GetDlgItem(IDC_EDIT1))
{
int lines,lens=1; //定义当前行的行号,以及当前行长度
lines=m_edit.LineIndex(-1);//获取当前输入行的行号
lens=m_edit.LineLength(lines);
char *mstr=new char[lens]; //定义一个字符串指针用来获取当前行的内容
m_edit.GetLine(lines,mstr,lens); //取得当前行的内容
CString strs; //定义一个C++字符串类变量
strs.Format("%s",mstr);//将当前行的内容转换成CString类;
delete mstr;//释放mstr所占的空间
这里输入你想要执行的操作!比如要执行的命令,我不知道你想要执行什么类型的命令所以这里能给你写出来
this->SetFocus();//这里把焦点转回给对话框,否则可能会执行两次当前事件!
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询