请问关于MFC中类和资源关联的有关问题
请教关于MFC中类和资源关联的问题
一直都这么用,今天突然想到一些细节的问题,欢迎各位指导:
1、创建了一个资源,定义一个类与之关联,用这个类实例化对象或者指针,对对象或者指针的操作就是对该资源的操作,对吗?
2、创建了一个资源,定义一个类与之关联,并且我还增加了“一般成员函数”(对资源没有任何操作),用这个类创建指针,我不对资源操作,只是单纯想用里面的“一般成员函数”,我就可以不分配内存,直接p->func() 吗?如果操作资源呢?我到底什么时候要给分配内存?
3、我的一个类对象和对话框相关联了,有了对话框的ID,可是为什么显示出窗口
dlgStatusCtrl->Create(IDD_DIALOG_STATUS_CONTROL, this);里面还要包含了对话框的ID?我关联了资源不就有了这个资源的ID吗?
------解决思路----------------------
1、因为 "类" (保存有资源ID) 和资源关联起来了,这样子我通过它 "类对象” (通过MFC内部机制,也保存有资源ID)可以对资源操作,可以这么理解嘛?
差不多就是这样,但是关键的是对话框模板只是模板,它本身是静态的,只有通过代码,对话框才能动起来、活起来
2、virtual BOOL CDialog::Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL
); MSDN的解释是:使用从资源,创建一个对话框模板调用 Create 创建无模式对话框;nIDTemplate包含对话框模板资源的ID号。
从资源是什么?模板资源的ID号又是什么呢?我的类对象已经关联了资源,还要我填写ID?
从资源?翻译有点问题吧,原文应该是这个吧:Call this member function to create a modeless dialog box using a dialog-box template from a resource.
调用这个成员函数从资源模板创建一个无模式对话框
模板资源ID就是你资源中对话框的ID
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
一直都这么用,今天突然想到一些细节的问题,欢迎各位指导:
1、创建了一个资源,定义一个类与之关联,用这个类实例化对象或者指针,对对象或者指针的操作就是对该资源的操作,对吗?
2、创建了一个资源,定义一个类与之关联,并且我还增加了“一般成员函数”(对资源没有任何操作),用这个类创建指针,我不对资源操作,只是单纯想用里面的“一般成员函数”,我就可以不分配内存,直接p->func() 吗?如果操作资源呢?我到底什么时候要给分配内存?
3、我的一个类对象和对话框相关联了,有了对话框的ID,可是为什么显示出窗口
dlgStatusCtrl->Create(IDD_DIALOG_STATUS_CONTROL, this);里面还要包含了对话框的ID?我关联了资源不就有了这个资源的ID吗?
------解决思路----------------------
1、因为 "类" (保存有资源ID) 和资源关联起来了,这样子我通过它 "类对象” (通过MFC内部机制,也保存有资源ID)可以对资源操作,可以这么理解嘛?
差不多就是这样,但是关键的是对话框模板只是模板,它本身是静态的,只有通过代码,对话框才能动起来、活起来
2、virtual BOOL CDialog::Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL
); MSDN的解释是:使用从资源,创建一个对话框模板调用 Create 创建无模式对话框;nIDTemplate包含对话框模板资源的ID号。
从资源是什么?模板资源的ID号又是什么呢?我的类对象已经关联了资源,还要我填写ID?
从资源?翻译有点问题吧,原文应该是这个吧:Call this member function to create a modeless dialog box using a dialog-box template from a resource.
调用这个成员函数从资源模板创建一个无模式对话框
模板资源ID就是你资源中对话框的ID
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?