笨笨问题1:CEdit或CRichEdit中取得当前光标位置该响应哪个消息?
想在状态栏中随时显示当前光标的位置,难道是处理鼠标左键按下和键盘方向键消息吗?还有字符输入时光标也移动阿。不会这莫罗嗦吧?笨笨问题2:鼠标右键菜单弹出时,其中的剪切和复制项会随着文本框中是否有选定
文本显示出不同的状态,我想在文本框中有选定文本的时候进行即时处理,请问要做到这些应该处理哪一个消息?别让我用Spy++,我看过了,但没找出来:(。谢谢。
想在状态栏中随时显示当前光标的位置,难道是处理鼠标左键按下和键盘方向键消息吗?还有字符输入时光标也移动阿。不会这莫罗嗦吧?笨笨问题2:鼠标右键菜单弹出时,其中的剪切和复制项会随着文本框中是否有选定
文本显示出不同的状态,我想在文本框中有选定文本的时候进行即时处理,请问要做到这些应该处理哪一个消息?别让我用Spy++,我看过了,但没找出来:(。谢谢。
LPos:=SendMessage(RichEdit1.Handle,EM_LINEFROMCHAR,
RichEdit1.SelStart,0);
CPos:=SendMessage(RichEdit1.Handle,EM_LINEINDEX,LPos,0);
LineLength:=SendMessage(RichEdit1.Handle,EM_LINELENGTH,CPos,0);
CPos:=RichEdit1.SelStart-CPos;
LPos:=LPos+1;
CPos:=CPos+1;
StatusBar1.Panels[0].Text:='行: '+IntToStr(LPos)+' 列: '+
IntToStr(CPos)+' 此行字数: '+IntToStr(LineLength);
不过没有看到一般edit有这个消息可以在复制ID_EDIT_COPY的那个UP_COMMAND_UI
消息里面,判断有没有选定的内容
如果有,加复制代码
void CTestDlgDlg::OnChangeEdit1()
{
static char *str=",";
char str2[3]={0,0,0};
CString text;
GetDlgItem(IDC_EDIT1)->GetWindowText(text);
int iStart=HIWORD(((CEdit*)GetDlgItem(IDC_EDIT1))->GetSel());
if(iStart!=0)
{
if(!((text[iStart-1]>='0'&&text[iStart-1]<='9')||(text[iStart-2]==str[0]&&text[iStart-1]==str[1])))
{
str2[0]=text[iStart-1];
BOOL bDB=FALSE;
if(text[iStart-1]<0)
{
str2[1]=str2[0];
str2[0]=text[iStart-2];
bDB=TRUE;
}
text.Replace(str2,"");
GetDlgItem(IDC_EDIT1)->SetWindowText(text);
if(bDB)
{
((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(iStart-2,iStart-2,-1);
}else
{
((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(iStart-1,iStart-1,-1);
}
}
}
}
我的意思是一旦在文本框中有文本被选中(可能是鼠标的操作或键盘的操作)就即时
响应,比如弹出带有选定文本的对话框,这时该响应哪个消息?谢谢朋友的关注!