如何判断MFC中string table中的资源是否冗余?

一根烂笔头 2012-03-12 11:29:12
如题!
说明:要做一个小工具,实现对mfc的string table中冗余资源处理。

换言之:有些ID定义了在程序中并没有使用,如何帅选出他们,并进行删除处理?望高手指点!

声明:本人菜鸟,新手上路!
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ystemni 的回复:]

引用 8 楼 my_live_123 的回复:
首先谢谢各位的回答。

我想达到的效果就像:vc6.0中view->resource symbols中显示那样,哪个资源使用了,哪个没有使用,做个统计出来,也便于修改之类的!还在迷茫中!

我不知道这些在resource中的资源ID是如何判断他们是使用了还是没有使用,比如一个静态文本,它一般不响应触发事件,只是单一的显示标题之类的,那么他……
[/Quote]
谢谢9L,正是我想要的!基本实现了!
ystemni 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 my_live_123 的回复:]
首先谢谢各位的回答。

我想达到的效果就像:vc6.0中view->resource symbols中显示那样,哪个资源使用了,哪个没有使用,做个统计出来,也便于修改之类的!还在迷茫中!

我不知道这些在resource中的资源ID是如何判断他们是使用了还是没有使用,比如一个静态文本,它一般不响应触发事件,只是单一的显示标题之类的,那么他在cpp中也检索不到IDC_STATIC此标示,但是……
[/Quote]

xx.rc中,你所有使用的控件ID都会在里面,包括resource.h中已定义的,还包括resource.h中未定义的(比如你说的IDC_STATIC)。
你想清楚得展示每个控件与窗口的关联关系等等,那就只能分析xx.rc,比较麻烦。
如果你只想展示已定义未使用的ID,那就只要分析resource.h中定义的ID,然后在xx.rc中查找就行了,如果找不到,就是未使用的。
一根烂笔头 2012-03-13
  • 打赏
  • 举报
回复
首先谢谢各位的回答。

我想达到的效果就像:vc6.0中view->resource symbols中显示那样,哪个资源使用了,哪个没有使用,做个统计出来,也便于修改之类的!还在迷茫中!

我不知道这些在resource中的资源ID是如何判断他们是使用了还是没有使用,比如一个静态文本,它一般不响应触发事件,只是单一的显示标题之类的,那么他在cpp中也检索不到IDC_STATIC此标示,但是它确实在窗口中存在,我又怎样才能知道它存在?
ystemni 2012-03-12
  • 打赏
  • 举报
回复
在resource.h中有定义,但在XX.rc中未使用的。
一根烂笔头 2012-03-12
  • 打赏
  • 举报
回复
没有思路,在线等!
用户 昵称 2012-03-12
  • 打赏
  • 举报
回复
rc中有不认识的宏没关系,去掉.h中未使用宏就行了。
一根烂笔头 2012-03-12
  • 打赏
  • 举报
回复
资源向导创建一个基于对话框的程序
在resource.h中自动生成的定义

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by DEALSTRINGTABLE.RC
//
#define IDR_MAINFRAME 128
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_DEALSTRINGTABLE_DIALOG 102

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 32771
#endif
#endif


在string table中只有

IDS_ABOUTBOX 101


其他的多余宏定义又有什么用呢?
一根烂笔头 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ystemni 的回复:]

在resource.h中有定义,但在XX.rc中未使用的。
[/Quote]
也就是说凡是使用的ID都在.h中定义保存了,未使用的都没有存在其中,然后以此筛选.rc?
guyuexuangyx 2012-03-12
  • 打赏
  • 举报
回复
通过ID号来筛选
用户 昵称 2012-03-12
  • 打赏
  • 举报
回复
跟2楼差不多。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧