插入符号(不是游标)
当您往程式中输入文字时,通常有一个底线、竖条或者方框来指示输入的下一个字元将出现在萤幕上的位置。这个标志通常称为「游标」,但是在Windows下写程式,您必须改变这个习惯。在Windows中,它称为「插入符号」。「游标」是指表示滑鼠位置的那个点阵图图像。
插入符号函式
主要有五个插入符号函式:
另外还有取得插入符号目前位置(GetCaretPos)和取得以及设定插入符号闪烁时间(GetCaretBlinkTime和SetCaretBlinkTime)的函式。
在Windows中,插入符号定义为水平线、与字元大小相同的方框,或者与字元同高的竖线。如果使用调和字体,例如Windows内定的系统字体,则推荐使用竖线插入符号。因为调和字体中的字元没有固定大小,水平线或方框不能设定为字元的大小。
如果程式中需要插入符号,那么您不应该简单地在视窗讯息处理程式的WM_CREATE讯息处理期间建立它,然後在WM_DESTROY讯息处理期间撤消。其原因显而易见:一个讯息伫列只能支援一个插入符号。因此,如果您的程式有多个视窗,那么各个视窗必须有效地共用相同的插入符号。
其实,它并不像听起来那么多限制。您再想想就会发现,只有在视窗有输入焦点时,视窗内显示插入符号才有意义。事实上,闪烁的插入符号只是一种视觉提示:您可以在程式中输入文字。因为任何时候都只有一个视窗拥有输入焦点,所以多个视窗同时都有闪烁的插入符号是没有意义的。
通过处理WM_SETFOCUS和WM_KILLFOCUS讯息,程式就可以确定它是否有输入焦点。正如名称所暗示的,视窗讯息处理程式在有输入焦点的时候接收到WM_SETFOCUS讯息,失去输入焦点的时候接收到WM_KILLFOCUS讯息。这些讯息成对出现:视窗讯息处理程式在接收到WM_KILLFOCUS讯息之前将一直接收到WM_SETFOCUS讯息,并且在视窗打开期间,此视窗总是接收到