看着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的参数即可得到你想要的光标,试试吧。