Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14497237
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:53:42

下载本文示例代码
  当窗口拥有键盘焦点或者处于激活状态时,可以创建一个Caret,失去焦点之前必须销毁该Caret。CreateCaret()函数用来创建Caret,系统将该函数指定的位置Pixel取反得到Caret。Caret建立后用ShowCaret()显示Caret并使其闪烁。获得闪烁速度(Flash Time)用GetBlinkTime()*2,设置闪烁时间用SetBlinkTime()/2,Flash Time是Caret从复原到反色再到复原的周期,而Get/SetBlinkTime()得到和设置的是Caret从复原到反色或者从反色到复原的时间,因此要乘/除2。获得Caret用GetCaretPos(),参数为一个POINT结构,存放Caret在当前窗口中的位置,SetCaretPos()在Caret不可见的情况下仍然起作用。暂时隐藏Caret使用HideCaret(),再显示用ShowCaret(),彻底销毁Caret用DestroyCaret。  一、 创建并显示Caret  改变或显示一个窗口的Caret,应捕获其WM_SETFOCUS消息  1、 CreateCaret()函数    CreateCaret(hWnd,(HBITMAP)NULL,30,60)    hWnd:拥有Caret的窗口句柄    NULL:如果使用位图Caret,此参数为一个HBITMAP,该HBITMAP可以通过LoadBitmap、CreateBitmap和CreateDIBitmap获得,如果为NULL,将建立一个实心矩形光标。    30,60:光标的大小单位为逻辑单位,如果非NULL的位图句柄,这两个参数被忽略。   使用位图光标 HBITMAP hbm;hbm=LoadBitmap((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDB_BITMAP1));CreateCaret(hWnd,(HBITMAP)hbm,0,0);  2、 为了精确确定Caret的大小,可以传递SM_CXBORDER和SM_CYBORDER给GetSystemMetics()函数获得以Pixel为计量单位的窗口的边框的宽和高,据此计算Caret的大小。  二、 使Caret随鼠标的移动而移动  1、 捕获WM_MOUSEMOVE消息:     int x:    int y;    x=LOWORD(lParam);    y=HIWORD(lParam);  获得事件发生时鼠标的位置  2、 将Caret移至光标处: SetCaretPos(x,y)  3、 在随鼠标移动的过程中Caret的闪烁效果不明显,鼠标停留片刻后,Caret恢复正常闪烁。   当窗口拥有键盘焦点或者处于激活状态时,可以创建一个Caret,失去焦点之前必须销毁该Caret。CreateCaret()函数用来创建Caret,系统将该函数指定的位置Pixel取反得到Caret。Caret建立后用ShowCaret()显示Caret并使其闪烁。获得闪烁速度(Flash Time)用GetBlinkTime()*2,设置闪烁时间用SetBlinkTime()/2,Flash Time是Caret从复原到反色再到复原的周期,而Get/SetBlinkTime()得到和设置的是Caret从复原到反色或者从反色到复原的时间,因此要乘/除2。获得Caret用GetCaretPos(),参数为一个POINT结构,存放Caret在当前窗口中的位置,SetCaretPos()在Caret不可见的情况下仍然起作用。暂时隐藏Caret使用HideCaret(),再显示用ShowCaret(),彻底销毁Caret用DestroyCaret。  一、 创建并显示Caret  改变或显示一个窗口的Caret,应捕获其WM_SETFOCUS消息  1、 CreateCaret()函数    CreateCaret(hWnd,(HBITMAP)NULL,30,60)    hWnd:拥有Caret的窗口句柄    NULL:如果使用位图Caret,此参数为一个HBITMAP,该HBITMAP可以通过LoadBitmap、CreateBitmap和CreateDIBitmap获得,如果为NULL,将建立一个实心矩形光标。    30,60:光标的大小单位为逻辑单位,如果非NULL的位图句柄,这两个参数被忽略。   使用位图光标 HBITMAP hbm;hbm=LoadBitmap((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDB_BITMAP1));CreateCaret(hWnd,(HBITMAP)hbm,0,0);  2、 为了精确确定Caret的大小,可以传递SM_CXBORDER和SM_CYBORDER给GetSystemMetics()函数获得以Pixel为计量单位的窗口的边框的宽和高,据此计算Caret的大小。  二、 使Caret随鼠标的移动而移动  1、 捕获WM_MOUSEMOVE消息:     int x:    int y;    x=LOWORD(lParam);    y=HIWORD(lParam);  获得事件发生时鼠标的位置  2、 将Caret移至光标处: SetCaretPos(x,y)  3、 在随鼠标移动的过程中Caret的闪烁效果不明显,鼠标停留片刻后,Caret恢复正常闪烁。 下载本文示例代码


WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇WIN32用户界面设计基础之Caret篇
阅读(97) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~