在vc++中,资源和类有怎样的关系?

严格的讲,资源不属于某一个类。资源是属于整个工程。在整个工程中,任何地方都可以通过指针、类对象声明、资源ID号、使用头文件、引用宏、使用资源序号、调用动态库文件等方式,来使用这些资源。

对话框资源,要使用可以为其添加对话框类,但它本质上的意义,并不是说它就属于这个类,比如,你完全可以在另一个对话框上,点某个按钮,或者达到特定的条件,弹出这个对话框。比如下面的示例:(在Dialog2上)

#include "Dialog1.h"

.....

void CDialog2::OnOK()
{
    CDialog1 dlg1;
    dlg1.DoModal();
}

这也就是说,一旦新增一个对话框并为其指定了类,便可以在整个工程的任何地方使用它。

请注意,这并不是说,这个对话框就属于给它指定的这个类。

我们知道,比如一张位图资源,一旦导入,便可以通过ID号,或资源序号,随处使用。但也可以这样:(其他代码我就不打了,只写关键代码)

CBitmap bkBitmap;
bkBitmap.LoadBitmap(IDB_BITMAP1);

来加载这张已导入进来的位图。但你就不能说,这个位图是属于CBitmap的。

其他资源也一样,比如图标、声音、字串、版本等等,皆是一般,可以通过声明相应类对象来使用这些资源。

综上所述,要对资源进行加载、使用等操作,虽然有时候是通过声明类对象来实现的,但是并不能讲是属于这个类的。

而实现使用的过程,是相应的类提供了比较全面的适合特定资源的某些操作的方法成员和数据成员。比如,CDialog类提供了ShowWindow()方法,CBitmap类提供了LoadBitmap()方法,CBrush类提供了CreatePattenBrush()方法,等等,是用来对相应资源进行相关操作的。这并不是一种从属关系。

以上,就是资源与类的关系。确切的讲,资源与类其实没有什么关系。但你可以这样理解:资源通过相应的类,来实现你要的操作;类,提供了特定资源可进行的各种操作的接口和方法。


你可能感兴趣的:(原创)