VC++深入详解(6):MFC对话框(二)

本文介绍如何在VC++的MFC对话框中处理鼠标移动事件,通过创建从CButton派生的CNewButton类,并在CTestDlg类中进行初始化工作,实现按钮在鼠标移动时的显示与隐藏效果。详细步骤包括使用ClassWizard,添加CNewButton变量,以及在WM_MOUSEMOVE消息响应函数中调整窗口显示状态。
摘要由CSDN通过智能技术生成
先新建一个MFC工程,然后选择基于对话框的应用程序。我们发现,跟单文档应用程序相比,它只有3个类:
CAboutDlg:与单文档的相同,用来显示帮助。这里其实可以完全不要。


CTestApp:MFC应用程序必不可少的类,它的全局对象theApp代表了应用程序本身


CTestDlg:基于对话框的MFC应用程序的主界面,从CDialog派生出来的。
我们先看一个简单的问题:逃跑按钮的创建。他其实看起是这样一件事件:当你把鼠标移动到某个按钮上时,这个按钮却移动到了另外一个地方,所以你总是点不到它。而它的实现其实是这样的:我们有两个按钮,每当鼠标移动到第一个按钮上时,它就把自己隐藏起来,并且调用函数显示第二个按钮。按照这种思路,我们展开设计。

首先,在哪里捕获鼠标移动的消息?肯定不能是CTestDlg类中,否则以移动到对话框上,就会显示或者隐藏按钮了。我们可以创建一个从CButton派生来的新类CNewButton,使用classWizard来完成;然后将按钮控件与这种新类相关联。在这两个按钮上点击右键,使用类向导添加CNewButton类的变量m_btn1,m_btn2.我们需要在CTestDlg类的头文件中包含:#include "NewButton.h"。下面让CNewButton捕获鼠标移动消息。为这个类添加WM_MOUSEMOVE的消息响应函数,在其中调用ShowWindow,参数选择SW_SHOW来显示一个窗口,SW_HIDE来隐藏一个窗口。但是,我们要隐藏自己时,也得显示另外一个窗口,所以我们需要为我们的CTestDlg添加一个成员变量,这个变量中有一个指向CNewButton的指针,里面保存的是另一个按钮的地址。这个初始化工作在OnInitDialog中添加:

	m_btn1.m_pBtn = &m_btn2;
	m_btn2.m_pBtn = &m_btn1;

然后我们的OnMouseMove就简单了:

void CNewButton::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	ShowWindow(SW_HIDE);
	m_pBtn->ShowWindow(SW_SHOW);
	CButton::OnMouseMove(nFlags, point);
}

为了美观起见,我们把两个按钮中的一个设置为不可见,然后就更像回事了。


下面看如何生成属性表单和向导的创建。


下面讲何如生成属性表单:
插入->资源->属性页,插入3个属性页,将它们的ID分别设为IDD_PROP1、IDD_PROP2、IDD_PROP3,将它们的标签设置为Page1,Page2,Page3.
在Page1中放入一个组框:组框的的作用是把相关的内容放在一起,让用户使用起来方便,将它的标题改为“请选择你的职业:”;然后再组框内放置3个按钮,名字分别设置为:“程序员”、系统工程师、项目经理;然后再组框的旁边放置一个列表框,然后在他上面放置一个静态文本框,标题改为:“请选择你的工作地点”。
在Page2中放置一个组框,名字改为请选择你的兴趣爱好࿰
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值