windows消息的问题

mabinde 2003-01-17 10:11:03
我向listbox发送EM_SETSEL消息,和向RichEdit发送EM_SETCURSEL消息为什么都没反应啊,接收他们消息的控件有什么要求吗,还有在发送EM_SETSEL消息后为什么还要发一条EM_SCROLLCARET消息啊,这条消息是干什么用的啊?
...全文
22 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TCXHL 2003-01-19
  • 打赏
  • 举报
回复
在listbox的ondrawcustomitem事件中判断是否是你要改变的那一行,
如果是的话,就改变brush的颜色
Drate 2003-01-17
  • 打赏
  • 举报
回复
我想是不是RICHEDIT没有收到这个消息呢?

这是我找到的一篇文章,楼主可以参考一下:

改变RichEdit的游标位置
如何改变RichEdit的游标位置
请问在RichEdit中我想将游标(文字)移动到某一位置要怎麽用呢?

我用SendMessage可以取得行数、列数,然後要用那个参数或是函数才能移动游标呢?



这个需要自已处理, 例如本信所附的程式 --

// 指定输入游标的位置
procedure SetCaret(RTF: TRichEdit; var Row, Col: word);
var
i, iStopLine, iSelStart: integer;
begin
if (RTF = nil) then Exit;
if Row = 0 then Row := 1;
if Col = 0 then Col := 1;

// 到第 Row 列, Col 行共几个字元
iStopLine := Row - 1;
iSelStart := 0;
for i := 0 to RTF.Lines.Count - 1 do
begin
if i = iStopLine then
begin
if Length(RTF.Lines[i]) >= Col then
Inc(iSelStart, Col)
else
Inc(iSelStart, Length(RTF.Lines[i]) + 2);
Break;
end;
Inc(iSelStart, Length(RTF.Lines[i]) + 2);
end;
if iSelStart > 0 then Dec(iSelStart);

// 以设定标记的方式指定游标位置
SendMessage(RTF.Handle, EM_SETSEL, iSelStart, iSelStart);

// 再次侦测游标位置
Row := SendMessage(RTF.Handle, EM_LINEFROMCHAR, RTF.SelStart, 0);
Col := RTF.SelStart - SendMessage(RTF.Handle, EM_LINEINDEX, Row, 0);

// 卷到游标所在位置
SendMessage(RTF.Handle, EM_SCROLLCARET, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
iRow, iCol: word;
begin
iRow := 17;
iCol := 3;
SetCaret(RichEdit1, iRow, iCol);
RichEdit1.SetFocus;
end;


idilent 2003-01-17
  • 打赏
  • 举报
回复
关注
Billy_Chen28 2003-01-17
  • 打赏
  • 举报
回复
是不是没收到消息
DJ_KK 2003-01-17
  • 打赏
  • 举报
回复
以前有做过,不过我是用的控件,没用api
mabinde 2003-01-17
  • 打赏
  • 举报
回复
可能吧,我也不清楚,我现在就是想改变listbox的一行的字的颜色,而不想设置listbox font字体属性一下把字体颜色都改变,谁有好方法吗,用winapi的

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧