六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

改变Edit的光标

[复制链接]

升级  34.35%

547

主题

547

主题

547

主题

探花

Rank: 6Rank: 6

积分
1687
 楼主| 发表于 2013-1-28 12:12:50 | 显示全部楼层 |阅读模式
看着Edit的光标,是不是觉得了无生趣,想不想换个形状来玩玩,其实很简单,且听我道来。

Edit是Windows的标准控件,它是一个系统范围窗口类,所以任何应用程序都能创建它。其实Edit本质上也是一个窗口,MS实现了它却不开放源代码,只暴露出一些接口给我们操作。Edit的光标(Caret)没有意外,就是通过CreateCaret,ShowCaret等API显示出来的。Edit似乎是在得到焦点时创建并显示Caret,在失去焦点时消毁Caret,此处我们只需在SetFocus消息中创建Caret即可,看如下代码:

type
TwdEdit=class(TEdit)
protected
procedureEditSetFocus(varmessage:TMessage);messageWM_SETFOCUS;
end;

procedureTwdEdit.EditSetFocus(varmessage:TMessage);
var
H:HBITMAP;
begin
inherited;
ifDestroyCaretthen
begin
H:=LoadBitmap(
0,MAKEINTRESOURCE(OBM_RGARROW));
ifH=
0thenExit;
CreateCaret(Handle,H,
8,10);
ShowCaret(Handle);
end;
end;

在你的窗口中创建这个控件,看看效果如何,你只需修改LoadBitmap的参数即可得到你想要的光标,试试吧。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表