MFC可视化编程探索:移动原点与对象基础

需积分: 50 10 下载量 176 浏览量 更新于2024-08-19 收藏 1.95MB PPT 举报
"移动原点-可视化编程——mfc" 在MFC(Microsoft Foundation Classes)框架中,可视化编程是一种借助图形用户界面(GUI)设计和构建应用程序的方法。通过使用MFC库,开发者可以更容易地实现Windows应用程序的开发。本文将探讨在MFC中关于“移动原点”的两个关键函数:SetViewportOrg() 和 SetWindowOrg(),以及面向对象编程的基本概念,如类与对象、继承、this指针等。 1. **SetViewportOrg() 和 SetWindowOrg()** - **SetViewportOrg(x, y)** 函数用于改变逻辑坐标系统的原点,即将逻辑坐标(0, 0)映射到设备坐标(x, y)。这意味着在进行绘图操作时,逻辑坐标系的左上角将对应于指定的设备坐标。这个函数在需要调整视口的显示范围或者改变默认绘图起点时非常有用。 - **SetWindowOrg(x, y)** 则是将设备坐标(x, y)映射为逻辑坐标(0, 0)。这使得在绘图时,逻辑坐标(0, 0)的点将会被绘制到屏幕上的(x, y)位置。这对于创建自定义的坐标系统或者进行坐标变换很有帮助。 2. **面向对象编程基础** - **对象** 是面向对象编程中的基本单元,代表现实世界中的实体,包含了数据(属性)和操作这些数据的行为(方法)。 - **类** 是对象的模板,定义了一组属性和方法。类可以分为**公共(public)**、**受保护(protected)** 和 **私有(private)** 访问级别,分别控制其成员对外的可见性。 - **继承** 允许一个类(派生类)从另一个类(基类)继承特性,实现代码复用和多态性。基类中的成员在派生类中可以被访问和扩展。 - **this指针** 是每个非静态成员函数的一个隐含参数,指向调用该成员函数的对象实例。它在函数内部用来访问和操作对象的成员变量。 3. **继承的问题与解决** - 在继承体系中,相同功能的成员函数(如display())可能会在多个派生类中存在,造成代码冗余。这时,可以考虑是否将该函数提升到基类,但可能不适用于所有情况,因为它可能需要针对不同派生类有不同的实现。 - 使用this指针,成员函数可以区分调用它的不同对象,即使它们共享了同名的成员函数。例如,`rect1.setcolor(2);` 实际上是 `CRect::setcolor(2, (CRect*)&rect1);`,this指针指向了rect1对象,使得函数能够正确地修改rect1的颜色。 4. **虚拟函数** 在基类中声明,使得基类指针或引向派生类对象时,可以调用派生类的重写版本,实现多态性。这对于实现接口和动态绑定至关重要。 5. **静态成员** 不属于任何特定对象,而是类的所有实例共享的。静态成员变量对所有对象来说是唯一的,而静态成员函数则可以直接通过类名调用,无需实例化对象。 在实际编程中,理解并灵活运用这些概念和技术,能够有效地构建和维护MFC应用程序。通过深入学习如《深入浅出MFC》和《MFCWindows程序设计》这样的书籍,开发者可以进一步掌握MFC和Windows编程的精髓。