您的位置:首页 > 编程语言

Windows-对话框编程基本技术(2)

2016-05-28 08:12 232 查看
Windows-对话框编程基本技术(2)

本次主要介绍对话框的2个应用。

一 逃跑按钮的实现

简介:在对话框上放置两个按钮,当鼠标移动到一个按钮上时,这个按钮隐藏,相关的另一个按钮显示。

效果如下:



鼠标焦点移动到这个按钮上



下面是代码分析:

1.创建一个基于Dialog的项目,利用向导来设置。



2.在对话框上放置两个Button,设置相关的属性ID



3.我们要对这两个按钮操作,就需要创建对应的按钮类,所以我们利用类向导创建新的按钮类CCatchButton



4.在对话框类中加上两个按钮的成员变量

#include "CatchButton.h"//不要忘记导入头文件
public:
CCatchButton m_btn1;
CCatchButton m_btn2;


5.在新建的CCatchButton类中增加一个本类的按钮指针,为了之后的显示和隐藏按钮

public:
CCatchButton* m_pBtn;


6.在项目的对话框主类中的OnInitDialog()中加上按钮的初始化,我们需要在对话框创建之前对两个成员变量进行初始化。

//保存对方的指针
#if 1
m_btn1.m_pBtn = &m_btn2;
m_btn2.m_pBtn = &m_btn1;
#endif


7.为新建的CCatchButton类添加鼠标移动事件响应。

void CCatchButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO:  在此添加消息处理程序代码和/或调用默认值
//方法一 使用ShowWindow函数实现
#if 0
ShowWindow(SW_HIDE);//隐藏当前鼠标标记的按钮
m_pBtn->ShowWindow(SW_SHOW);//显示另一个指针指向的按钮
#endif

//方法二 使用SetWindowPos函数来实现,查看该API的MSDN的定义
#if 1
SetWindowPos(nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_HIDEWINDOW);
m_pBtn->SetWindowPos(nullptr, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
#endif

CButton::OnMouseMove(nFlags, point);
}


保存对方的地址,请看下图:



保存对方的按钮地址是为了,显示自己的同时能够通过m_pBtn指针来隐藏另一个按钮。

二 对话框属性表单

实现在一个对话框中实现多个属性表单的切换。

1.新建一个Prop的单文档项目

2.为了显示属性表单,我们需要创建三个属性表单资源

第一个



第二个



第三个,需要取消ComboBox的sort选项



2.在属性表单上面双击添加对应的MFC类



3.添加一个属性表单类来管理这3个属性页,并添加3个属性页的成员变量



4.之后我们需要在每个属性页中重写我们需要的2个虚函数来自定义属性页的功能



具体实现后面会给资料链接

5.在View类中我们需要定义成员变量来接收属性表单完成后的设置



6.在View类中的OnDraw中重绘客户区



7.最终的效果











完成



三 总结

下面是资料,大家可以下载运行测试。

https://yunpan.cn/cS5VakC5ZBGgt 访问密码 afe2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: