dong's profileThinking ...PhotosBlogLists Tools Help

Blog


    Will We?

    If we meet by chance,

    will we say hello?

    VC Studio 使用技巧大全 [转]

    我觉得写C或者C++的程序最好用的编译器,对标准支持最好的编译器非VC莫属.但是新手面对VS2005强大的功能,众多的选项,也有些晕.
    特别收集了以下的文档,分享一下
    VC Studio 使用技巧大全
    1.检测程序中的括号是否匹配
     
    把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,
    键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动
    并且机箱喇叭还会发出一声警告声。
    2.查看一个宏(或变量、函数)的宏定义
     
    把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12
    (或右键菜单中的Go To Defition Of …),如果没有建立Browse
    files,会出现提示对话框确定,然后就会跳到定义那些东西的地方。
    3.格式化一段乱七八糟的源代码
      选中那段源代码,按ATL+F8。
    4.在编辑状态下发现成员变量或函数不能显示
      删除该项目扩展名为.ncb文件,重新打开该项目。
    5.如何整理ClassView视图中大量的类
      可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到
    对应的文件夹中,使整个视图看上去清晰明了.
    6.定位预处理指定
    在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.
    7.如何添加系统中Lib到当前项目
      在Project | Settings | Link | Object/library
    modules:输入Lib名称,不同的Lib之
    间用空格格开.
    8.如何添加系统中的头文件(.h)到当前项目.
      #include <FileName.h>,告诉编译到VC系统目录去找;使用#include
    "FileName.h",告诉
    编译在当前目录找.
    9.如何在Studio使用汇编调试
      在WorkBench的Debugger状态下按CTRL+F7.
    10.怎样处理ClassZiard找不到的系统消息
      如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class
    Info页
    中将Message filter改为Window就有了.
    11.如何干净的删除一个类
     
    先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中
    删除对应的.h和.cpp文件与.clw文件。
    12.如果让控制台应用程序支持mfc类库
      可以在控制台应用程序中include
    来引入mfc库,但是控制台应用程序缺省是单线程的,mfc
    是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code
    generation, use run-time library 下拉框中选择debug multithread。
    13.如何汉化只有可执行代码的.exe 文件
      在nt 下利用vc open file 以resources方式打开*.exe
    文件,直接修改资源文件,然后保 存即可。
    附:VC项目文件说明
    .opt 工程关于开发环境的参数文件。如工具条位置等信息;
    .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.
    .clw
    ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard
    出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘
    提示你是否重建.
    .dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改
    .DSW( DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多.
    .plg
    是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用
    处不大.在Tools->Options里面有个选项可以控制这个文件的生成.
    .hpj (Help Project)是生成帮助文件的工程,用microsfot  Help
    Compiler可以处理.
    .mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会
    提示你是否转换成新的DSP格式.
    .bsc 是用于浏览项目信息的,如果用Source
    Brower的话就必须有这个文件.如果不用这个功
    能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.
    .map
    是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.
    .pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.
    .pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.
    .exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.
    .ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。
    build后会自动生成。

    Scarborough Fair

    《Scarborough Fair》诗经体译词如下(英中对照)
      诗经体的歌词                                   英文原歌词
           《斯卡博罗集市》                          Scarborough Fair
    问尔所之,是否如适。  Are you going to Scarborough Fair?
    蕙兰芫荽,郁郁香芷。  Parsely sage rosemary and thyme.
    彼方淑女,凭君寄辞。  Remember me to one who lives there.
    伊人曾在,与我相知。  She once was a true love of mine.
    嘱彼佳人,备我衣缁。  Tell her to make me a cambric shirt.
    蕙兰芫荽,郁郁香芷。  Parsely sage rosemary and thyme.
    勿用针砧,无隙无疵。  Without no seams nor needle work.
    伊人何在,慰我相思。  Then she will be a true love of mine.
    (伴唱)
    彼山之阴,深林荒址。  On the side of hill in the deep forest green,
    冬寻毡毯,老雀燕子。  Tracing of sparrow on snow crested brown.
    雪覆四野,高山迟滞。  Blankets and bed clothers the child of maintain
    眠而不觉,寒笳清嘶。  Sleeps unawafe of the clarion call.
    嘱彼佳人,营我家室。  Tell her to find me an acre of land.
    蕙兰芫荽,郁郁香芷。  Parsely sage rosemary and thyme.
    良田所修,大海之坻。  Between the salt water and the sea strand,
    伊人应在,任我相视。  Then she will be a true love of mine.
    (伴唱)
    彼山之阴,叶疏苔蚀。  On the side of hill a sprinkling of leaves
    涤我孤冢,珠泪渐渍。  Washes the grave with slivery tears.
    惜我长剑,日日拂拭。  A soldier cleans and polishes a gun.
    寂而不觉,寒笳长嘶。  Sleeps unaware of the clarion call.
    嘱彼佳人,收我秋实。  Tell her to reap it with a sickle of leather.
    蕙兰芫荽,郁郁香芷。  Parsely sage rosemary and thyme.
    敛之集之,勿弃勿失。  And gather it all in a bunch of heather.
    伊人犹在,唯我相誓。  Then she will be a ture love of mine.
    (伴唱)
    烽火印啸,浴血之师。  War bellows blazing in scarlet battalions.
    将帅有令,勤王之事。  Generals order their soldiers to kill and to fight for a cause.
    争斗缘何,久忘其旨。  They have long ago forgotten.
    痴而不觉,寒笳悲嘶。  Sleeps unaware of the clarion call.
    再多找了一点介绍如下:
    《Scarborough Fair》是美国六十年代最受大学生欢迎的电影、1968年奥斯卡获奖片《毕业生》(达斯汀·霍夫曼主演,其成名作)中的主题曲,歌曲名称:《Scarborough Fair》(中译:斯卡博罗集市),原唱歌手:Paul Simon (保罗·西蒙)和Art Garfunkel(加芬克尔),作词:Paul Simon - Art Garfunkel,作曲:Paul Simon - Art Garfunke。莎拉·布莱曼有翻唱的。片中的另一首歌曲《寂静之声》也很出名。
    《Scarborough Fair》作为上个世纪最著名、最成功的民歌之一,必定将永远地在人们心中回响,不断地勾起我们那些或忧伤或欢乐的回忆来。
    后来看到有人用诗经体的格式将《Scarborough Fair》翻译出来,竟也能唱,几乎看不出哪个是原创,哪个是译文。
      我没想到它和诗经之间竟然有着那么一种很微妙的契合,纵然一个是公元之前,而另一个是百世以后。它的旋律,仿佛是一阵清风,夹杂着野草野花的苦寒轻香,在大地上缓缓掠过;而我更看见一个穿白衣服的人摇着木铎,边走边呼唤着苍穹,在一望无际的大地与村庄之间采集梦幻。真的很难忘却这种莫名的联想。很喜欢在异邦的文明之中,还能寻出这样令我心折的古中国的意韵。
    --------------------------------------------------------------------------------------------------------------------------------------------------------------  
      1966年底,又一张主要以西蒙在英国期间创作的歌曲为主的专辑出版了。专辑的名称《欧芹、鼠尾草、迷迭香和百里香》是专辑主打歌《斯卡布罗集市/颂歌》(Scarborough Fair/ Canticle)中的一句歌词。此歌原是一首古老的英国民歌,其起源可一直追溯到中世纪。它曾被英国民歌之父麦考选进他编辑的一本介绍英国民歌的书中。后来英国民歌手马汀·卡西(Martin Carthy)在原歌的基础上加进了自己的再创造(尤其是里面那优美的吉它伴奏),把它变成了一首非常优美的爱情歌曲。西蒙在英国时从卡西那里学会了这首歌。他又再创造性地把自己写的一首反战歌曲《山坡上》(The Side Of A Hill)作为副歌和这首歌混在一起,用对比的手法表达了对和平的渴望。加芬克尔为副歌作了曲,成为歌中的“颂歌”部分。两人在录音时利用多轨技术把多个声部叠加在一起,使人声显得特别丰富。当年崔健在“七合板乐队”出版的一张专辑里曾翻唱过这首动听的歌曲

    (括号内是同时唱出的《颂歌》的歌词):
      斯卡博罗集市/颂歌
      你要去斯卡博罗集市吗?
      那里有醉人的香草和鲜花
      那香味让我想起一位住在那里的姑娘
      我曾经是那么地爱她
      请让她为我做一件麻布的衣裳
      (山坡上那片绿色的丛林中)
      欧芹、鼠尾草、迷迭香和百里香
      (顺着麻雀在雪地上留下的一行脚印)
      没有接缝也找不到针脚
      (在毯子下面找到一个山的孩子)
      那才是我心爱的姑娘
      (他睡得正香听不到山下进军的号角)
      请她为我找到一亩土地
      (山坡上落叶稀疏)
      欧芹、鼠尾草、迷迭香和百里香
      (汹涌的泪水冲洗着大地)
      座落在海水和海滩之间
      (一个士兵正在擦拭手中的枪)
      那才是我心爱的姑娘
      请她用皮做的镰刀收割庄稼
      (战斗激烈,红衣士兵冲向敌阵)
      欧芹、鼠尾草、迷迭香和百里香
      (将军命令士兵杀死敌人)
      再用石南草札成一堆
      (战争的目的早已被遗忘)
      那才是我心爱的姑娘
      你要去斯卡博罗集市吗?
      那里有醉人的香草和鲜花
      那香味让我想起一位住在那里的姑娘
      我曾经是那么地爱她
      Scarborough Fair
      Are you going to Scarborough Fair?
      Parsley,sage,rosemary & thyme
      Remember me to one who lives there
      She once was a true love of mine
      Tell her to make me a cambric shirt
      (On the side of a hill in the deep forest green)
      Parsely,sage,rosemary & thyme
      (Tracing a sparrow on snow-crested ground)
      Without no seams nor needlework
      (Blankets and bedclothes a child of the mountains)
      Then she'll be a true love of mine
      (Sleeps unaware of the clarion call)
      Tell her to find me an acre of land
      (On the side of a hill,a sprinkling of leaves)
      Parsely,sage,rosemary,& thyme
      (Washed is the ground with so many tears)
      Between the salt water and the sea strand
      (A soldier cleans and polishes a gun)
      Then she'll be a true love of mine
      Tell her to reap it in a sickle of leather
      (War bellows,blazing in scarlet battalions)
      Parsely,sage,rosemary & thyme
      (Generals order their soldiers to kill)
      And togather it all in a bunch of heather
      (And to fight for a cause they've long ago forgotten)
      Then she'll be a true love of mine
      Are you going to Scarborough Fair?
      Parsley,sage,rosemary & thyme
      Remember me to one who lives there
      She once was a true love of mine
      对于歌曲的意义我曾见过许多种解释,以前在国内曾有人认为欧芹、鼠尾草、迷迭香和百里香这四种植物都具有很浓的香味,这种香味让歌者联想到了斯卡布罗集市,而歌中作者提出的那些要求其实是在考验那个姑娘的能力。崔健的那首翻唱就是这么认为的。而卡西则在他自己的版本中指出,这四种草药在英国传统中都和死亡有着某种的联系,它们都被认为是能抵抗死神的草药。联想到歌中演唱者要求心爱的姑娘做的那三件不可能完成的任务,似乎是在暗示那位姑娘已经死去了,歌者正虔诚地祈祷,让死神把她还回来。
      最近有人经过研究,提出了完全不同的解释。歌里的那个斯卡博罗集市其实是暗指那个姑娘毫无原由地离开了这位歌者,而歌者对姑娘提出的这些完全不可能实现的要求是在向她表明,爱情有时必须要求双方做出在常人看来不可能的事情才会持久。当一个人为了爱情去尝试明知不可能的事情,才最能表明他(她)对爱情的忠贞。而欧芹、鼠尾草、迷迭香和百里香这四种植物则在中世纪时的欧洲分别代表善良、力量、温柔和勇气,这也是歌者对姑娘的期望。不管当初歌者的动机是什么,此歌那独特的词句和优美的旋律使得她永远地和爱情联系在了一起。这首歌的出版曾引起了不小的争议。本来谁都有权翻唱一首属于民歌范畴的歌曲,可西蒙和加芬克尔的唱片内没有按惯例表明这是首改编歌曲,结果大多数听众都以为这是首西蒙的原创作品。其实西蒙根本没有必要这样做,他们两人出色的改编和演唱早已使这首歌成为西蒙和加芬克尔的标志性歌曲之一,别人想学也学不象了。
      这首歌后来在港台也被多次转译翻唱,其中张明敏唱的《毕业生》曾被许多大陆人认为是原创校园歌曲(80年代时),其实就是它。想必和我一样生于1970年代的朋友们会有印象。
      校园版《毕业生》歌词如下:
      蝉声中那南风吹来
      校园里凤凰花又开
      无限的离情充满心怀
      心难舍师恩深如海
      回忆当年离乡背井
      深夜里梦回旧家园
      游子的热泪沾湿枕畔
      最难忘父母的慈颜
      还记得那阳光遍地
      也记得寒风又苦雨
      无论是快乐失意日子
      最温暖美好的友谊
      祝福声中默默回忆
      琴声起骊歌正悠扬
      莫犹豫也莫再迟疑
      好男儿鹏程千万里

    ======================================================================================

    《Scarborough Fair》是1968年第40届奥斯卡获奖影片《The Graduate》(毕业生)(达斯汀·霍夫曼主演1967年出品)的插曲,曲调凄美婉转,给人以心灵深处的触动。《Scarborough Fair》原是一首古老的英国民歌,其起源可一直追溯到中世纪,保罗·西蒙在英国学习期间从英国民歌歌手Martin Carthy(马汀·卡西)那学会了这首民歌,并对其进行改编,加入了自己创作的一首《The Side of A Hill》作为副歌。由加芬克尔作曲并演唱的副歌做为歌曲的和音在听觉的感受上不是特别强烈,因此很多人对副歌不太留意,认为副歌只是歌唱的一种处理形式,实际上副歌却是整个歌曲的灵魂。西蒙用借尸还魂的手法把自己先前创作的反战歌曲《The Side of A Hill》嫁接到《Scarborough Fair》,实现了战争歌曲特别是反战歌曲常选爱情或亲情题材为载体的习惯,成功的把《Scarborough Fair》从单纯的情歌打造成一首反战歌曲。
    Scarborough是英格兰北约克郡的一座滨海小镇,在历史上小镇从每年八月十五日开始会有一个延续交易45天的集市,吸引着来自全英格兰甚至欧洲的商人,这就是Scarborough Fair的来由。Scarborough Fair还有一个谐音意思,与Scar-Borrow-Fair谐音,意为借来创痛的集市。现实中是不存在可以借来伤痛的集市的,但如果把它放在一首反战歌曲里面,Scar-Borrow-Fair就有了引申的意思了,那就是Battle Field(战场)。用Battle Field替换Scarborough Fair,这首歌的起始句子就变成了 “Are you going to battle field?”(你要上战场吗?)了,直接开宗明义。
    Simon and Garfunkel一直被公认为流行音乐史上最伟大的二重唱组合,而他们的和声也堪称人类所能接触到的最美妙的天籁之音。两人纯净完美的天衣无缝的合音,梦幻般的旋律及完美的低吟浅唱,轻易就可让人进入冥想状态。
    个人观点:保罗·西蒙和阿特·加蓬凯尔(Paul Simon & Art Garfunkel)创作的作为《毕业生》插曲的那个版本,第二声部不是民歌原有的,但那和声技巧非常高,和几百年前的民歌配合得天衣无缝,也有很多人喜爱

    PE文件实例分析

    暑假我花了几天时间对照着PE文件的格式一个一个字节的分析了一个很小的PE文件,感觉比只是看看格式收获多了很多.
    不妨把那几天的实验日志贴出来共享一下.于是有了PE文件实例分析1~15,之所以裁成这么多片段,主要是因为Livespace不支持太大的日志.无奈!!

    批处理文件删除自己

    批处理文件的%0或许是代表自己
    在其中加入这样一条语句
    del %0
    就能删除批处理文件本身了