CGAL用户输入处理教程:鼠标消息详解

需积分: 49 122 下载量 135 浏览量 更新于2024-08-10 收藏 1.02MB PDF 举报
"这篇教程主要关注的是在VC++ MFC环境中如何接收用户的输入,特别是通过鼠标事件。它详细解释了不同类型的鼠标消息及其相应的处理函数,同时也提到了MFC开发的一些基本策略。" 在Windows编程中,用户输入是至关重要的,而MFC(Microsoft Foundation Classes)提供了一种方便的方式来处理这些输入。这篇教程以3.2章节为例,讲解了如何在MFC应用中接收用户的鼠标输入。在MFC中,通过消息映射机制,我们可以将特定的Windows消息与特定的成员函数关联起来,以便在接收到这些消息时执行相应的操作。 首先,讲解了鼠标消息类型,包括`WM_MOUSEMOVE`,`WM_LBUTTONDOWN`,`WM_RBUTTONDOWN`,`WM_LBUTTONUP`,`WM_RBUTTONUP`以及`WM_LBUTTONDBLCLK`和`WM_RBUTTONDBLCLK`。这些消息分别对应于鼠标移动、鼠标左键按下/松开、右键按下/松开以及左右键的双击。例如,`WM_MOUSEMOVE`消息会触发`OnMouseMove`函数,此函数接收两个参数,`nFlags`包含了关于按键状态的信息(如Ctrl、Shift、鼠标左键、中键、右键的状态),`point`则表示鼠标的设备坐标。 对于鼠标按键的按下和释放,MFC提供了`OnLButtonDown`和`OnRButtonDown`来处理左键和右键的按下,以及`OnLButtonUp`和`OnRButtonUp`来处理左键和右键的释放。同样,双击事件由`OnLButtonDblClk`和`OnRButtonDblClk`处理。这些函数的参数与`OnMouseMove`相同,便于检测按键状态并获取鼠标位置。 接着,教程提到了消息映射(`BEGIN_MESSAGE_MAP`和`END_MESSAGE_MAP`),这是MFC中定义消息处理函数的关键部分。当消息发送到窗口时,MFC会使用这些映射找到相应的处理函数。例如,`ON_WM_CREATE()`映射到`OnCreate`函数,`ON_COMMAND`映射到`DoNothing`函数,这样可以将特定的消息类型与特定的函数关联起来。 此外,教程还介绍了MFC开发的一般方法,涵盖了不同场景下的选择,例如单文档视结构用于简单读写文件且有基本输入输出的应用,对话框基础窗口适合交互性简单的应用,而CFormView为基础视的单文档视结构则适用于文件读写复杂的交互式应用。在多文档需求不强时,可以通过单文档多视结构来实现,而在需要跨文档数据共享时,则应使用多文档视结构。同时,建议学习如何利用子窗口和封装功能的自定义子窗口来增强应用的复杂性和可维护性。 这个教程深入浅出地介绍了MFC中处理用户输入,特别是鼠标事件的方法,同时也提供了一些MFC开发的实用策略,对初学者理解MFC编程非常有帮助。