- 6
- 0
- 约6.38千字
- 约 89页
- 2022-06-18 发布于重庆
- 举报
服务器操作 通过浮动对话框获取用户输入的信息,调用类的成员连接、登录服务器,最后将服务器根目录下的所有文件显示在列表视图中。浮动对话框如图所示。 第六十三页,共八十九页。 在类的实现文件,添加文件包含指令如下: 在利用类向导为它添加函数(),如图所示。 第三十一页,共八十九页。 图 为类添加消息响应 为函数()添加代码,如下: 函数()中的变量是类的公有成员变量,定义如下: 成员变量在类的构造函数初始化如下: 第三十二页,共八十九页。 类的成员函数()返回树视图控件的引用。函数()中结构定义如下: { ; ; ; ; ; } ; 参数含义如下: :另一个包含通知消息信息的结构。 第三十三页,共八十九页。 我们要从这个结构中获取两个信息:和。前者是个结构,用来指定或返回树视图项的属性。结构的字段放的是这个结构指向树视图项的句柄,被保存在了变量中。 然后用到类的个成员函数和的个成员函数完成图像拖动的准备工作,它们是:()用来为指定的树视图项创建拖动时的位图、()标志拖动位图操作的开始、()用来在拖动操作期间在指定的位置显示位图和锁定更新。 第三十四页,共八十九页。 函数()的原型如下: ( , ); 参数含义如下: :索引号从开始的位图号,用来指定位图。 第三十五页,共八十九页。 函数()的原型如下: ( * , ); 参数含义如下: :指向拥有拖动图像的窗口指针。若参数赋值为,这个函数拖动图像的坐标是相对于桌面窗口的,即屏幕坐标的左上角。 第三十六页,共八十九页。 所以我们在使用函数()的时候,用到类的成员函数(),将给定的客户区点坐标转换为屏幕点坐标。最后我们同样调用类的成员函数(),以后不管鼠标的位置在哪里,所有的鼠标后续输入都会被送到当前的窗口处理。 至此,鼠标左键选中项目并且开始拖动事件的捕捉和处理代码填写和解释完毕。 第三十七页,共八十九页。 .图像随鼠标移动 利用类向导为类添加下一个事件:鼠标移动。如图所示。 第三十八页,共八十九页。 图 添加鼠标移动事件 为函数()添加代码,如下: 函数()首先调用(),获取指向当前程序主框架的指针,保存在变量中,通过此变量调用其成员变量的成员函数,既类的成员函数(),得到指定行列窗格的指针。这里获取的是列表视图窗格的指针,保存在变量中。 第三十九页,共八十九页。 我们要在类中添加一个自定义的成员函数(),如图所示。 第四十页,共八十九页。 图 添加自定义的成员函数 添加如下很简单的一段代码就行: 简单的封装了两个函数,分别完成功能:获取树视图窗口的矩形大小,即窗口大小。然后将坐标转换为相对屏幕的坐标值。同样需要在类中添加这样一个自定义的函数(),代码一样,功能当然也一样,如下: 函数()接下来完成的功能是:创建两个“区域”。实例化两个类的对象和,调用类的成员函数()创建两个矩形区域,分别覆盖了树形结构视图、列表结构视图。 第四十一页,共八十九页。 函数()的原型如下: ( , , , ); 参数含义如下: 、:指定矩形区域左上角点的坐标位置。 第四十二页,共八十九页。 函数()最后会判断:鼠标是否处于拖动的状态,是在树形结构视图区域或者列表结构视图区域中吗.通过类的成员函数()判断指定的点是否在指定的区域范围内。 在指定的区域范围内,并且当前正处在拖动的状态下时,就该调用拖动操作的第个函数了,它是类的成员函数(),原型如下: ( ); 是拖动操作时,鼠标新的位置点。这个函数移动图像到指定的新的坐标点,也就是图像会随着鼠标移动效果的展现。 第四十三页,共八十九页。 若是不满足刚才的判断条件呢?是不是就什么都不做了?当然不是,还有另一个有趣的效果需要实现。我们通过类的成员函数()判断:鼠标点相对树视图控件的位置,若是在控件内部的话,会返回指定位置树视图项的句柄,当指定位置不在在任何一个树视图项上,则返回。 即我们的鼠标在树视图窗口上“划过”,相应的树视图项就会有“被选中”的效果。通过调用类的成员函数(),重绘树视图相应项,以一种表明树视图项被选中的样式,参数是树视图项的句柄就行。 那么,鼠标移动图像的代码也填写和解释完毕了。 第四十四页,共八十九页。 .鼠标图像释放 利用类向导为类添加最后一个事件:鼠标左键弹起。如图所示。 第四十五页,共八十九页。 图 添加鼠标左键弹起事件 为函数()添加代码,如下: 函数()会调用()获取本程序主框架的指针,并保存在变量中,用通过其数据成员获取列表视图窗格的指针。 第四十六页,共八十九页。 当确定鼠标是在拖动图像的时候左键才弹起的,即为时,我们用最后个函数来完成拖动操作。它们是类的成员函
原创力文档

文档评论(0)