发送EM_GETLINE消息。SendMessage( (HWND) hWnd, // handle to destination window 0A EM_GETLINE, // message to send (WPARAM) wParam, // line number (LPARAM) lParam // line buffer (LPCTSTR) );这里离天堂的宽带还有多远?
方法是有了,比较麻烦,有没有比较简单的方法。希望就向Delphi中似的, 发个消息就可得到光标的行数、列数。愿再加100分求更简单的方法!先列出我的方法: HWND hFocus;//Edit或RichEdit的句柄 int LineNum; int LineCount=::SendMessage(hFocus,EM_GETLINECOUNT,0,0); int LineIndexNow=::SendMessage(hFocus,EM_LINEINDEX,((WPARAM)-1),0); for(int i=0;i<LineCount;i++) { int LineIndex = ::SendMessage(hFocus,EM_LINEINDEX,((WPARAM)i),0); if(LineIndex == LineIndexNow) { LineNum=i; break; } }
int Row=SendMessage(RichEdit1->Handle,EM_LINEFROMCHAR,RichEdit1->SelStart,0); int FirstCharInLine=SendMessage(RichEdit1->Handle,EM_LINEINDEX,Row,0); int Col=RichEdit1->SelStart-FirstCharInLine;
(HWND) hWnd, // handle to destination window
0A EM_GETLINE, // message to send
(WPARAM) wParam, // line number
(LPARAM) lParam // line buffer (LPCTSTR)
);这里离天堂的宽带还有多远?
发个消息就可得到光标的行数、列数。愿再加100分求更简单的方法!先列出我的方法:
HWND hFocus;//Edit或RichEdit的句柄
int LineNum;
int LineCount=::SendMessage(hFocus,EM_GETLINECOUNT,0,0);
int LineIndexNow=::SendMessage(hFocus,EM_LINEINDEX,((WPARAM)-1),0);
for(int i=0;i<LineCount;i++)
{
int LineIndex = ::SendMessage(hFocus,EM_LINEINDEX,((WPARAM)i),0);
if(LineIndex == LineIndexNow)
{
LineNum=i;
break;
}
}
int FirstCharInLine=SendMessage(RichEdit1->Handle,EM_LINEINDEX,Row,0);
int Col=RichEdit1->SelStart-FirstCharInLine;