如何在一个新工程中导入其他工程资源,如Dialog,Toolbar,Menu?

在新工程里直接打开另一个工程的rc文件,打开后会出来另一个工程的资源;

按住CTRL键再用鼠标拖动想要的资源到新的工程的相同资源类型里!

注:按住CTRL为复制资源,没有按CTRL的话就是移动,这样原来的工程里就会没有这个资源了;

一.导入某个Dialog后提示找不到该Dialog的类文件如何处理?

导入Dialog后要关联这个Dialog对应的类文件,可按以下方法操作:

1.导入类文件:

1)手工导入:

       把该类文件*.cpp和*.h拷到新的工程目录下,然后在File View中点击“Add Files To Project”把文件导入新的工程;

2)自动导入:

   打开原工程,将需导出的类添加到仓库,具体操作如下:在ClassView窗口,右键点击需共享的窗体类,执行Add to Gallery。然后打开目标工程,执行Project菜单里的 Add To Project -> Components and Controls...,选中刚才保存的Gallery即可。

2.此时如果想通过Class Wizard修改该类的变量会提示找不到类文件,然后会出现新增或从已有类选择关联的对话框提示;

其实之前对话框对应的类我们已导入工程了,只是Class Wizard没有检测到,所以需要先删除之前Class Wizard删除的文件;

找到工程所在的目录,删除“工程名.clw”后再点击“Class Wizard”,此时会提示找不到这个文件,点击“确定”重新创建即可;

重新创建后就会自动把这个类和对话框相关联了;

---------------------

 百链网http://www.bylian.com

---------------------

二、显示导入后的对话框时没有反应如何处理?

 CDialogDemo dlg;
 dlg.DoModal();

上述显示对话框的语句没起作用;

在Debug窗口中发现一个这样的提示:

Warning:   Dialog   creation   failed!     GetLastError   returns   0x00000715  
  好象错误是:找不到映像文件中指定的资源类型。  

后来发现是该对话框对应的菜单资源没有一起导入,只要导入该菜单资源或先把菜单资源删除即可;

---------------------

  百链网http://www.bylian.com

---------------------

三、如何删除或修改某个类和对话框的关联:

1.某个类和哪个对话框关联存储在类头文件中,如下所示:

// Dialog Data
 //{{AFX_DATA(CDialogMain)
 enum { IDD = IDD_EXAMPLE_DIALOG };
  // NOTE: the ClassWizard will add data members here
 //}}AFX_DATA

其中“IDD_EXAMPLE_DIALOG ”即为该类关联的对话框资源ID;

修改该值即可关联到其它对话框;

按上述步骤修改后打开该工程,在新关联的对话框中点击“Class Wizard”仍然会提示“IDD_XXX  is a new resource.……”;

询问是创建新的类还是关联老的类,此时选择“关联旧的类”然后定位到类名即可;

更好的处理办法是删除工程的*.clw文件,让Class Wizard重新生成类和对话框的对应关系;

因为使用重新定位旧类的方法虽然可以把类定位到新的对话框,但原来的对话框也是定位到该类的;

直接查看*.clw文件就可以看出这点,如下所示(对话框IDD_DIALOG1IDD_GENERAL_CONTROL都关联到CDialogDemo类了):

[DLG:IDD_DIALOG1]
Type=1
Class=CDialogDemo
ControlCount=4
Control1=IDOK,button,1342242817
Control2=IDCANCEL,button,1342242816
Control3=IDC_BUTTON1,button,1342242816
Control4=IDC_EDIT1,edit,1350631552

[DLG:IDD_GENERAL_CONTROL]
Type=1
Class=CDialogDemo
ControlCount=11
Control1=IDC_EDIT1,edit,1350631552
Control2=IDC_CHECK1,button,1342242819
Control3=IDC_CHECK2,button,1342242819
Control4=IDC_RADIO1,button,1342308361
Control5=IDC_RADIO2,button,1342177289
Control6=IDC_RADIO3,button,1342177289
Control7=IDC_LIST1,listbox,1352728835
Control8=IDOK,button,1342242817
Control9=IDCANCEL,button,1342242816
Control10=IDC_STATIC1,static,1342181376
Control11=IDC_BUTTONDELListItem,button,1342242816

四、重新生成*.clw文件时出现:

More than one file was encountered for class "CXxxxxxx".  The original file "E:/xxxxxxx.h" will be kept.

这可能是因为在工程目录中存在该类头文件的备份文件,如我在删除时备份DialogDemo.h文件为DialogDemo1.h后生成clw时就出这个错误了;

相应的解决该问题只要删除备份的DialogDemo1.h文件,删除“工程名.clw”,再生成clw文件即可;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值