| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1727 人关注过本帖, 1 人收藏
标题:向hellovfp大哥请教关于windows编程中资源文件的编辑问题。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏(1)
已结贴  问题点数:60 回复次数:13 
向hellovfp大哥请教关于windows编程中资源文件的编辑问题。
windows编程自学手册看到资源那一章 遇到些问题求教。
Emerson 程序中有个EMERSON.RC文件
程序代码:
程序清单 6.3 EMERSON.RC
#include "windows.h"
#include "Emerson.h"
// The Emerson Menu
Menu MENU
BEGIN
    POPUP "Poems"
    BEGIN
        MENUITEM "Bitmap",CM_BITMAP
        MENUITEM "Brahmin",CM_BRAHMIN
        MENUITEM "Woodnotes",CM_WOODNOTES
        MENUITEM "SeaShore",CM_SEASHORE
    END
    MENUITEM "&About",CM_ABOUT
END

// The Emerson Icon
Icon ICON "Emerson.ico"

// The Emerson Cursor
Cursor CURSOR "Emerson.cur"

我已经把其他部分都抄录到了VC6中
图片附件: 游客没有浏览图片的权限,请 登录注册

问题
1. 添加Emersion.rc文件后在右侧出现一个相同的文件名 双击后无法打开 只能点右键进行一些引入和插入操作,也就是无法把书本上的原代码进行文字抄录 要把那段原代码抄录上去怎么弄?
2. 我把Emerson 都写成了Emersion 怎么在不删除原文件的情况下直接修改文件名?貌似VS2010能直接修改 但是VC6没这个功能?找了半天。
3. 貌似External Dependencies是运行程序后自动冒出来的,basetsd是什么意思?查字典查不到
4.目前资源文件是个空壳,但是仍能运行程序并出现一个空白窗口,不知道添加后要不要对源程序进行相应的修改?
搜索更多相关主题的帖子: windows 编程 资源 
2012-04-09 11:45
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:60 
rc资源文件就是一个文本文件 ,所以书的代码,你可以用vc或是记事本,创建一个文本文件,把上面的内容直接拷进去,存盘就OK了。关于资源脚本怎么手写,这个在罗云彬的《Win32 汇编程序》一书中有详解。
http://wenku.baidu.com/view/39d072360b4c2e3f572763d5.html 第三小节。
如何使用vc进行可视化资源文件编辑,这个我记得如鹏的视频上好象讲过的,就是双击左边的RC,在右边出现的夹上点右健,选“插入”,在弹出的对话框中“新建”各种Windows资源对象就可以用了,很简单的。如果一开始工程中没有这个RC文件 ,你可以点菜单上的“插入”->“资源...”这里添加一个新的资源文件,点存盘就可以输入文件名了。

工作空间workspace,就是你图上的那个树状结构,只是一个逻辑上的文件分组,不是物理的,可以创建N多的逻辑文件夹把自己的工程文件进行分类管理,实际上物理上还是在一个目录中,rc文件一般放在Resouce Files这个夹里,包括你的BMP,CUR文件这些都可以放这里,方便管理,当程序结构比较复杂的时候,这些的分类看着很清楚。

关于文件名打错了的问题,vc6这个做得可能不是很好,我是这样解决的,选中错误的文件,直接按Del,删除(这并不是真的删除,文件还在盘上),然后打开你的项目目录文件,把文件名改好,然后在vc6的工作空间对应的Resouce Files上面点右健,选“添加文件到目录”将刚才逻辑删除的文件添加进来就OK了。

External Dependencies是系统编译时自动添加进去的,表示扩展文件依赖,你可以双击打开看看,就是Type definitions for the basic sized types.定义基本的一些数据宏。可以不用管它。

我们都在路上。。。。。
2012-04-09 13:16
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
以后不要用请教二字喽,我们都是平等的,大家一起切蹉一下。
其实偶也很好奇,当一个新人初次接触win32编程的过程中,倒底会遇到哪些问题?你的问题给了偶新的思考。

对了,那本书里如果需要有图片,光标什么的资源,你可以在网上随便下载一个充数,纯菜单类,字符串类的可以直接编译的。

[ 本帖最后由 hellovfp 于 2012-4-9 14:32 编辑 ]

我们都在路上。。。。。
2012-04-09 13:20
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
谢谢 大哥的讲解 看完后知道了很多东西

按照你讲的去摸索了下 终于以文本方式打开了 Emerson.rc文件
程序代码:
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Chinese (P.R.C.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 187, 94
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 10, "System"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,130,7,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,130,24,50,14
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 180
        TOPMARGIN, 7
        BOTTOMMARGIN, 87
    END
END
#endif    // APSTUDIO_INVOKED

#endif    // Chinese (P.R.C.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

上面这个是添加Emerson.rc文件后不做任何动作 直接打开得到的代码
我在后面加上了书上的那段代码
程序代码:
#include "windows.h"
#include "Emerson.h"
// The Emerson Menu
Menu MENU
BEGIN
    POPUP "Poems"
    BEGIN
        MENUITEM "Bitmap",CM_BITMAP
        MENUITEM "Brahmin",CM_BRAHMIN
        MENUITEM "Woodnotes",CM_WOODNOTES
        MENUITEM "SeaShore",CM_SEASHORE
    END
    MENUITEM "&About",CM_ABOUT
END
重新运行后窗口发生了明显的改变。

目前还不知道
// The Emerson Icon
Icon ICON "Emerson.ico"

// The Emerson Cursor
Cursor CURSOR "Emerson.cur"

这个段子有什么用 添加上去会报错。


梅尚程荀
马谭杨奚







                                                       
2012-04-09 14:55
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

梅尚程荀
马谭杨奚







                                                       
2012-04-09 14:57
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
还有个问题就是 Emerson.rc 文件 首先就 写到 #include "resource.h"
但是在我的FileView --> EMERSON files --> Header Files 下只有一个 EMERSON.h 并没有出现 resource.h
程序仍然能正确运行
后来去本地文件夹中看了下 resource.h 豁然在目
图片附件: 游客没有浏览图片的权限,请 登录注册

这是什么原因呢?

梅尚程荀
马谭杨奚







                                                       
2012-04-09 15:14
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
// The Emerson Icon
Icon ICON "Emerson.ico" 这个定义icon图标的,你在网上下个ico文件,改成这个名字就可以了。
可以用在程序的标题栏左边的图标,或是作为菜单的icon,或是做为图片控件的源。

// The Emerson Cursor
Cursor CURSOR "Emerson.cur" 这个定义鼠标的样式文件,你可以跑到windows\cursors目录中去找一个,拷到项目中改名,如果安装的是精简版的系统,多半没有这个目录,可以在网上下个cur文件,同上。

我们都在路上。。。。。
2012-04-09 15:17
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
resource.h是系统头文件,放在vc98\atl\include目录下的,是用来定义系统默认资源的文件。。
比如说OK和Cancel按钮的默认ID是1和2,定义好后就可以方便的使用。
另外资源编译器也会默认在项目中生成一个resource.h文件,用于定义你创建资源时定义的ID值。
编译的时候会自动联上这个文件的。一般我习惯把这个文件添加进Header Files目录中。

[ 本帖最后由 hellovfp 于 2012-4-9 15:28 编辑 ]

我们都在路上。。。。。
2012-04-09 15:20
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
另外VC资源编译器会在RC文件中添加很多的注释行和其它代码,据我所知是为了可视化编辑所添加的。
但照成了代码的特化问题,手写资源文件没有这些一样可以通过编译,
但用vc资源编辑器加载有时候会出现无法识别符标的问题,
偶用codeblocks的时候,有时候把生成的资源文件转到vc下面打开就会出现这个问题。

我们都在路上。。。。。
2012-04-09 15:39
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
原来这样啊 再去搞下。

梅尚程荀
马谭杨奚







                                                       
2012-04-09 15:58
快速回复:向hellovfp大哥请教关于windows编程中资源文件的编辑问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044920 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved