日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题

發布時間:2024/1/23 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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重复问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。