设为首页 加入收藏

TOP

滑鼠(十五)
2010-12-30 21:11:57 来源: 作者: 【 】 浏览:27872
Tags:滑鼠
ar图素高。那么每栏可填入的档案数就是:

iNumInCol = cyClient / cyChar ;

接收到一个滑鼠单击讯息後,您就能从lParam获得cxMouse和cyMouse座标。然後可以用下面的公式来计算使用者所指的是哪一列的档案名:

iColumn = cxMouse / cxColWidth ;

相对於列顶端的档案名位置为:

iFromTop = cyMouse / cyChar ;

现在您就可以计算szFileNames阵列的下标:

iIndex = iColumn * iNumInCol + iFromTop ;

如果iIndex超过了阵列中的档案数,则表示使用者是在显示器的空白区域内按滑鼠按键。

在许多情况下,命中测试要比本例更加复杂。在显示一幅包含许多小图形的图像时,您必须决定要显示的每个小图形的座标。在命中计算中,您必须从座标找到物件。但这将在使用不确定字体大小的字处理程式中变得非常凌乱,因为您必须找到字元在字串中的位置。

范例程式
 

程式7-2所示的CHECKER1程式展示了一些简单的命中测试,此程式把显示区域分为5×5的25个矩形。如果您在某个矩形中按下滑鼠按键,那么在该矩形中将出现一个「X」。如果您再按一次,那么「X」将被删除。

 程式7-2 CHECKER1
CHECKER1.C
/*-------------------------------------------------------------------------
CHECKER1.C -- Mouse Hit-Test Demo Program No. 1
(c) Charles Petzold, 1998
--------------------------------------------------------------------------*/

#include <windows.h>
#define DIVISIONS 5
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{ static TCHAR szAppName[] = TEXT ("Checker1") ;
H
首页 上一页 12 13 14 15 16 17 18 下一页 尾页 15/50/50
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计时器 下一篇键盘

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: