rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题
解决VC++ MFC程序resource.h头文件中ID重复问题
2018-12-07
一般MFC开发的时候,如果有些资源是从其他工程中移植到本工程的,
而在资源移植的时候都要将对应的资源ID复制到本工程的resource.h文件中。
此时不管你在不在本工程中添加资源ID,resource.h文件中的ID可能都有重复的,一般再添加资源ID后,肯定有重复的。
可用下列代码解决此问题,将代码复制到空的win32控制台应用程序,将ressource.h拖入编译后产生可执行文件,即可解决此问题。
[cpp]view plaincopyprint?
#include
#include
#include
#include
using namespace std;
typedef struct {
string line_header;
string line_id_name;
int line_id_value;
bool ishex;//value值是16进制?
bool isdef;//是id定义字符串?
}FILE_ONE_LINE;
void handle_error(char * err)
{
cout<
system("pause");
exit(-1);
}
bool chisblank(char ch)
{
return ch == "\t" ||
ch == "\r" ||
ch == "\n" ||
ch == 32/*空格*/ ||
ch == "\0";
}
int main(int argc,char * argv[])
{
char * pfname=NULL;
if(argc>=2)
pfname = argv[1];
else
pfname = "resource.h";
ifstream is(pfname);
if(!is)
{
handle_error("ifstream:open file failed");
}
///文件读开始处理
list l;
char temp[2000];
char str[200];
while(!is.eof())
{
is.getline(temp,2000);
FILE_ONE_LINE line;
line.ishex = false;
if( temp[0] == "#" &&
temp[1] == "d" &&
temp[2] == "e" &&
temp[3] == "f" &&
temp[4] == "i" &&
temp[5] == "n" &&
temp[6] == "e" )
{
line.isdef = true;
char * p=temp;
int seg = 0;
while(1)
{
while(chisblank(*p)&&( *p == 32 ||*p == "\t"))
{
p++;
}
int i=0;
for(;!chisblank(*p);i++,p++)
{
str[i]=*p;
}
if(seg == 0)
{
str[i]="\0";
line.line_header = str;
}
else if(seg == 1)
{
for(;i<40;i++)
str[i]=" ";
str[i]="\0";
line.line_id_name = str;
}
else if(seg == 2)
{
str[i]="\0";
if(str[0] == "0" && str[1]=="x")
{
line.ishex = true;
sscanf(str,"%x",&line.line_id_value);
}
else
line.line_id_value = atoi(str);
}
seg++;
if(*p == "\n" || *p == "\0"|| seg >2)
break;
}
l.push_back(line);
//cout<
}
else
{
line.line_header = temp;
line.isdef = false;
l.push_back(line);
//cout<
}
}
if(is)
is.close();
///文件读处理完毕
int index=-1;
list::iterator it = l.begin();
for(;it != l.end();it ++)
{
if(index<0)
index = it ->line_id_value;
if(it ->line_id_value >= 100 && index
index = it ->line_id_value;
if(it ->line_id_value >= 1000 && index
index = it ->line_id_value;
if(it ->line_id_value >= 30000 && index
index = it ->line_id_value;
if(it ->isdef)
it ->line_id_value = index++;
}
///文件写开始
ofstream os(pfname);
if(!os)
{
is.close();
handle_error("ostream:Open file failed");
}
for(it = l.begin();it != l.end();it ++)
{
if(it ->isdef)
{
if(!it ->ishex)
sprintf(temp,"%d",it ->line_id_value);
else
sprintf(temp,"0x%04x",it ->line_id_value);
os<line_header<line_id_name<
}
else
{
os<line_header<
}
}
if(os)
os.close();
///文件写处理完毕
l.clear();
cout<
system("pause");
return 0;
}
_Flash
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
http://www.pinlue.com/style/images/nopic.gif
rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题相关推荐
- 解决VC不包含stdint.h头文件问题
stdint.h是C99的标准,主要用于统一跨平台数据定义. MSVC中不带有这个头文件,直到VS2010(新闻). 在之前的版本里面,我们可以: (1)下载这个头文件 download a MS v ...
- stdio.h头文件中申明的基本函数
stdio.h头文件中申明的基本函数 调用scanf函数时,需传入变量的地址作为参数,scanf函数会等待标准输入设备(键盘等)输入数据,并且将输入的数据赋值给地址对应的变量. #include< ...
- 每日一题(12)—— .h头文件中ifndef/define/endif的作用
.h头文件中ifndef/define/endif的作用? 分析: 防止头文件被重复包含. #ifndef _TEST_H_ #define _TEST_H_/* test.h */#endif / ...
- VC MFC程序,在About对话框中获取并显示程序的版本号
=================================================本文为HeYuanHui原作 转载必须确保本文完整并完整保留原作者信息及本文原始链接! NN: ...
- DSP2833x_Device.h头文件中关于extern cregister volatile unsigned int IFR的解释
看源程序(TMS320F28335)的时候在main函数中看到这样一段: // Disable and clear all CPU interrupts: DINT; IER = 0x0000; IF ...
- math.h头文件中声明了常用的一些数学运算
数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 1. 三角函数 double sin(double);正弦 double cos(double);余弦 double tan(d ...
- 我的探究:为什么.h头文件中不要写using namespace std
转载于:https://www.cnblogs.com/nanlan2017/p/9179224.html
- C++中头文件中定义的变量
1.在头文件.h中定义static变量,如: static int x;其实就等效于每个引用该头文件的源文件中,定义一个变量名为x的整型静态全局变量,每个文件中的x变量均属于本源文件,各文件中的互不相 ...
- 能不能在头文件中定义全局变量?
首先,这是一篇科普文,所以 比较杂,我尽量写清楚一些. 1.ANSI C标准是什么?GNU又是什么?ld是什么? ANSI C是C语言的标准规范,是国际标准化组织制定的国际标准. 虽然 ANSI C规 ...
最新文章
- 创意留言墙图片_年会攻略2|创意合影墙、特色文化墙,有点意思启动仪式,继续玩出彩!!...
- A damn at han’s Windows phone book 笔记(2:Flashlight)
- lseek函数实现对打开文件的定位
- 深入探讨一下如何打断点
- python载入图像
- 控制台报错:java.lang.ClassNotFoundException: javax.xml.bind.JAXBException之解决方法
- SSH项目搭建-03-DAO层,Controller层创建及代码抽取
- xlsx模块 前端_前端使用SheetJS的xlsx.js实现excel表格生成
- Java项目:ssm电影院购票系统
- 技术储备(一):CGI介绍
- Python中round函数
- 2020-02-02
- 华为的全闪存存储之路
- enumerate用法
- DELL 电脑 ubuntu20.04系统安装(最新最简版)
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程
- 美摄SDK 局部特效接入文档
- Yocto开发篇 | Ubuntu构建与体验Poky发行版(Yocto 3.1版本)
- 相机标定(二)-畸变校正,张正友标定法
- OpenGL透视投影原理与实现
热门文章
- leetcode 423. Reconstruct Original Digits from English | 423. 从英文中重建数字(Java)
- 算法设计与分析:芯片测试问题、选择问题详解
- 看动画学算法之:doublyLinkedList
- 0-1 背包问题的 4 种解决方法算法策略
- C/C++ 指针和数组
- C:\Users\22981\Desktop (拒绝访问。)
- 【两种解法】1004 Counting Leaves (30 分)_27行代码AC
- python双向索引什么意思_python字典支持双向索引吗
- signature=8cc1e8491a741a9dc954b549013b75e5,基于小波的SAR影像纹理分析
- linux命令行下载github文件,Linux命令行下使用GitHub