1、创建了一个资源,定义一个类与之关联,用这个类实例化对象或者指针,对对象或者指针的操作就是对该资源的操作,对吗?
2、创建了一个资源,定义一个类与之关联,并且我还增加了“一般成员函数”(对资源没有任何操作),用这个类创建指针,我不对资源操作,只是单纯想用里面的“一般成员函数”,我就可以不分配内存,直接p->func() 吗?如果操作资源呢?我到底什么时候要给分配内存?
3、我的一个类对象和对话框相关联了,有了对话框的ID,可是为什么显示出窗口
dlgStatusCtrl->Create(IDD_DIALOG_STATUS_CONTROL, this);里面还要包含了对话框的ID?我关联了资源不就有了这个资源的ID吗?
9 个解决方案
#1
lz只要记住:资源是资源,类对象是类对象,本来是没有什么联系的,是你的代码通过资源ID使得类对象和特定的资源发生了关联
那么很多问题就很好理解了
那么很多问题就很好理解了
#2
谢谢~你这么一说我确实经常模糊了两者的关系。
请允许我问一些细节点的东西:
1、因为 "类" (保存有资源ID) 和资源关联起来了,这样子我通过它 "类对象” (通过MFC内部机制,也保存有资源ID)可以对资源操作,可以这么理解嘛?
2、virtual BOOL CDialog::Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL
); MSDN的解释是:使用从资源,创建一个对话框模板调用 Create 创建无模式对话框;nIDTemplate包含对话框模板资源的ID号。
从资源是什么?模板资源的ID号又是什么呢?我的类对象已经关联了资源,还要我填写ID?
#3
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
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
差不多就是这样,但是关键的是对话框模板只是模板,它本身是静态的,只有通过代码,对话框才能动起来、活起来
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
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
#4
由衷的感谢你~
#5
1、资源是一堆数据,如对话框资源,记录了这个对话框的属性,只是作为模板,运行出现的对话框是实体对话框不是资源?
2、利用一个对话框资源,就可不断的创建出基于此对话框模板的对话框吗?
3、virtual BOOL CDialog::Create( UINT nIDTemplate,CWnd* pParentWnd = NULL ); 用pMyDialog->Create( nIDTemplate,pParentWnd ); pMyDialog是由跟对话框关联的类创建,pMyDialog中不就有了对话框的ID了吗?
#6
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、利用一个对话框资源,就可不断的创建出基于此对话框模板的对话框吗?
3、virtual BOOL CDialog::Create( UINT nIDTemplate,CWnd* pParentWnd = NULL ); 用pMyDialog->Create( nIDTemplate,pParentWnd ); pMyDialog是由跟对话框关联的类创建,pMyDialog中不就有了对话框的ID了吗?
#7
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
IDD_SET_FREQ, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 309
TOPMARGIN, 7
BOTTOMMARGIN, 176
END
IDD_OSC_II, DIALOG
BEGIN
RIGHTMARGIN, 588
BOTTOMMARGIN, 333
END
END
#endif // APSTUDIO_INVOKED
这就是所谓的资源,你想创建几个对话框就创建几个
#8
1.正确
2.类的指针?不是实例(对象)的指针一般不能操作类的函数
3.表面上是这样的。但是微软的函数就这样定义了,必须这样用
2.类的指针?不是实例(对象)的指针一般不能操作类的函数
3.表面上是这样的。但是微软的函数就这样定义了,必须这样用
#9
"资源是一堆数据",似乎明确了一个概念,谢谢。
#1
lz只要记住:资源是资源,类对象是类对象,本来是没有什么联系的,是你的代码通过资源ID使得类对象和特定的资源发生了关联
那么很多问题就很好理解了
那么很多问题就很好理解了
#2
lz只要记住:资源是资源,类对象是类对象,本来是没有什么联系的,是你的代码通过资源ID使得类对象和特定的资源发生了关联
那么很多问题就很好理解了
谢谢~你这么一说我确实经常模糊了两者的关系。
请允许我问一些细节点的东西:
1、因为 "类" (保存有资源ID) 和资源关联起来了,这样子我通过它 "类对象” (通过MFC内部机制,也保存有资源ID)可以对资源操作,可以这么理解嘛?
2、virtual BOOL CDialog::Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL
); MSDN的解释是:使用从资源,创建一个对话框模板调用 Create 创建无模式对话框;nIDTemplate包含对话框模板资源的ID号。
从资源是什么?模板资源的ID号又是什么呢?我的类对象已经关联了资源,还要我填写ID?
#3
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
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
差不多就是这样,但是关键的是对话框模板只是模板,它本身是静态的,只有通过代码,对话框才能动起来、活起来
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
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
#4
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
当然需要你填写,因为创建是别的窗口的事情,你程序运行开始是没有对话框的,只有在某个位置点击或操作了什么,从而引发创建对话框的操作,你没有填写,那么电脑哪知道你要创建什么对话框?
由衷的感谢你~
#5
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、利用一个对话框资源,就可不断的创建出基于此对话框模板的对话框吗?
3、virtual BOOL CDialog::Create( UINT nIDTemplate,CWnd* pParentWnd = NULL ); 用pMyDialog->Create( nIDTemplate,pParentWnd ); pMyDialog是由跟对话框关联的类创建,pMyDialog中不就有了对话框的ID了吗?
#6
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、利用一个对话框资源,就可不断的创建出基于此对话框模板的对话框吗?
3、virtual BOOL CDialog::Create( UINT nIDTemplate,CWnd* pParentWnd = NULL ); 用pMyDialog->Create( nIDTemplate,pParentWnd ); pMyDialog是由跟对话框关联的类创建,pMyDialog中不就有了对话框的ID了吗?
#7
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 163
TOPMARGIN, 7
BOTTOMMARGIN, 55
END
IDD_SET_FREQ, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 309
TOPMARGIN, 7
BOTTOMMARGIN, 176
END
IDD_OSC_II, DIALOG
BEGIN
RIGHTMARGIN, 588
BOTTOMMARGIN, 333
END
END
#endif // APSTUDIO_INVOKED
这就是所谓的资源,你想创建几个对话框就创建几个
#8
1.正确
2.类的指针?不是实例(对象)的指针一般不能操作类的函数
3.表面上是这样的。但是微软的函数就这样定义了,必须这样用
2.类的指针?不是实例(对象)的指针一般不能操作类的函数
3.表面上是这样的。但是微软的函数就这样定义了,必须这样用
#9
"资源是一堆数据",似乎明确了一个概念,谢谢。