接收到键盘焦点后,窗口应该创建并显示插入符号。使用CreateCaret功能在给定窗口中创建插入符号。然后,您可以致电SetCaretPos设置插入符号的当前位置和ShowCaret以使插入符可见。
系统将WM_SETFOCUS消息发送到接收键盘焦点的窗口;因此,应用程序应在处理此消息时创建和显示插入符号。
HWND hwnd, //窗口句柄
int x; //光标的水平坐标
int y; //光标的垂直坐标
int nWidth; //光标的宽度
int nHeight; //游标高度
char *lpszChar; //指向字符的指针
case WM_SETFOCUS:
//创建一个坚实的黑色插入符号。
CreateCaret(hwnd, (HBITMAP) NULL, nWidth, nHeight);
//调整客户端坐标中的插入位置。
SetCaretPos(x, y);
//显示插入符号。
ShowCaret(hwnd);
break;
要创建基于位图的插入符号,您必须在使用CreateCaret时指定位图句柄。您可以使用图形应用程序创建位图和资源编译器,以将位图添加到应用程序的资源中。您的应用程序可以使用LoadBitmap函数来加载位图句柄。例如,您可以使用以下行替换上述示例中的CreateCaret行来创建位图插入符。
//加载应用程序定义的插入符资源。
hCaret = LoadBitmap(hinst, MAKEINTRESOURCE(120));
//创建一个位图插入符号。
CreateCaret(hwnd, hCaret, 0, 0);
或者,您可以使用CreateBitmap或CreateDIBitmap功能来检索插入符位图的句柄。有关位图的更多信息,请参阅位图.
如果您的应用程序指定了位图句柄,CreateCaret将忽略width和height参数。位图定义了插入符号的大小。