首页 > 精品范文库 > 8号文库
shell编程实例集锦5篇
编辑:静谧旋律 识别码:17-1061202 8号文库 发布时间: 2024-07-04 18:04:32 来源:网络

第一篇:shell编程实例集锦

shell

编程实

例集锦

【ZT】

shell编程实例集锦 如何远程杀死僵进程?

所谓“僵进程”是指处于睡眠中,而且没用的进程。在进行并行计算时经常会有僵进程产生。由于用 top 看不到“僵进程”,所以写了如下一个叫做“rkill”的 shell 文件: #!/bin/tcshecho “ Input start number of node: ”set N1=“$<”echo “ Input end number of node: ”set N2=“$<”echo “ Input the NAME of program”set pname=“$<”echo “**********************************************************”while($N1 <= $N2)set

h='t'$N1 set ppid=`rsh $h ps-ef | grep $pname | awk '{print $2}' ` echo “rsh $h kill $ppid” rsh $h kill $ppid @ N1++endecho

“**********************************************************”

如何将一个 index 文件中的空链接删除?

在目录 /doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day 中只有有限的几个文件,而 archivepix.html 文件中却链接了两千多个文件,我们的目标就是要把不存在的文件链接删除掉。

#!/bin/tcsh-f# 从当前目录中查找有哪些可用文件。find 不支持正则表达式 {}set tmp=`find.-type f-maxdepth 1 vuDLinux联盟

-name “ap[0-9][0-9][0-9][0-9][0-9][0-9].html” `# 将查找结果./ap000303.html 转换为 ap000303.htmlset ff1=`echo $tmp | sed-e 's/./(ap[0-9]{6}.html)/1/g' `# 在文件 archivepix.html 中查找包含类似 ap000303.html 的行,vuDLinux联盟 并将其导入临时文件 ftmp 中grep 'ap[0-9]{6}.html' archivepix.html >ftmp# 将 ftmp 中的每一行转换为 ap000303.html 的形式,这样 ff1 和 ff2 vuDLinux联盟 中的字符串在形式上就是相同的了。set ff2 = ` sed-e 's/.*(ap[0-9]{6}.html).*/1/g' ftmp`rm ftmp-f# 比较变量 ff1 和 ff2 的内容,如果一个字符串只存在于 ff2 中,vuDLinux联盟

那么就把文件 archivepix.html 中含有# 该字符串的行删除掉。foreach f2($ff2)echo $f2 set flag=0 foreach f1($ff1)if($f2 == $f1)then set flag=1 endif end if($flag == 0)then sed-e '/'$f2'/d' archivepix.html >ftmp # 此句最关键之处在于

'$f2'vuDLinux联盟

可用于正则表达式。mv ftmp archivepix.html-f endifend

如何将一个目录中的所有文件链接到网页中? 只要将下列程序的输出导到一个文件中,再将其拷至网页的相应位置就可以了。这

编程实

例集锦

【ZT】 shell编程实例集锦

里最关键的是看双引号如何输出(“)。

#!/bin/tcsh-fset dd = ”/doc/Art_and_Photos/Flash/flash/AGui“set ffff = `find $dd-type f `set n=0foreach f($ffff)@ n++echo $fecho '< a href='”$f“'<'$n','>> AGui.htmlend

如何为一堆文件换名字?

在吴老师的笔记心得中介绍了张林波的高招,但那是 bash 的,而且是以命令行形式给出的。为了便于理解,我将其改写为 tcsh 格式,并将其置于脚本文件之中,更利于使用。

#!/bin/tcsh-f #-f 说明直接运行该文件,而不会先运行.cshrc 进行初始化rm

tmp_file-f # 确保该文件不存在foreach fold(*.jpg.*)set fnew = ` echo $fold | sed-e ”s/.jpg.(.*)/-1.jpg/g“ `vuDLinux联盟

# 精华之处echo ”mv $fold $fnew-f “ >>tmp_fileendchmod a+x

tmp_file./tmp_filerm tmp_file-f

在这个脚本文件中,关键是“精华之处”。它的意义是:首先将要修改的文件名($fold)通过管道(|)传给流编辑器(sed),流编辑器对文件名进行处理,其各项的具体意义为:

set fnew = ` echo $fold | sed-e ”s/.jpg.(.*)/-1.jpg/g“ `sed-e 命令+选项 表示允许多点编辑s/re/string/ 用 string 替换正则表达式 re/.jpg.(.*)/ vuDLinux联盟 “.”表示一个真正的点,“.jpg.” 代表文件名中的“.jpg.”;vuDLinux联盟

“(.*)” 中的„.‟匹配一个非换行符的字符,„*‟匹配 0 个或多个“先前”字符,它与 shell 的通配符完全不同,shell 的通配符代表 0 个或多个“任意”字符。“.*”所代表的内容被设为“标签 1”,可在需要的地方用“1”引用。值得注意 的是:“.*”决不能用“*”来代替,因为“*”将表示任意个“.”。/-1.jpg/ “1”代表“标签 1”的内容g 表示行内全面替换这里还有一个地方需要提醒,那就是将 `echo...` 引起来的不是单引号,而是键盘左上角标有 “~ ` ”上的撇号.如何解决网页中字体放大时出现重叠的问题? 方案一:适用于单层目录

#!/bin/tcsh-fset dir=`ls.`foreach d($dir)if(-d $d)then # 判断是否为目录 cd $d echo ”cd $d“ foreach f(*.htm *.html)sed-e '/[0-9]pt/d' $f > ftmp # 删除所有包含 9pt、12pt 等关键词的行 mv ftmp $f-f end cd..endifend

方案二:适用于多层目录

编程实

例集锦

【ZT】 shell编程实例集锦

#!/bin/tcsh-fset SearchPath = ”/doc/Reading/everything/武侠/梁羽生“set files=`find $SearchPath-type f-name ”*.htm*“ `foreach f($files)echo $f sed-e '/[0-9]pt/d' $f > ftmp mv ftmp $f-fend

如何将一个目录中所有文件名由大写变为小写 我们以目录 tmp 为例

1.进入 tmp 目录的上一级目录2.zip-r tmp.zip tmp/*3.mv tmp tmp-old(这是为了安全起见,此处也可改为 rm-r-f tmp)4.unzip-LL tmp.zip

这样,tmp 目录中的文件名就全改为小写了。在确认无误后,可将 tmp-old 目录删除。

如何将一个文件中的内容由大写变为小写

最简单的做法是在 ~/.cshrc 中设如下命令:

alias tr 'tr A-Z a-zttttmp;mv ttttmp!*-f'

此处别名必须为 tr,其他的就不行,不知为什么。当需要对文件进行操作时,敲如下命令:

tr [filename]

该命令在命令行中运行没有任何问题,但是如果将其放在一个 shell script 文件中,然后将该文件的属性改为可执行并执行之的话,你会发现用 alias 设置的简化命令全部失效。解决办法为:

source shell_file

此处还顺便说一句,sh 命令运行的是 bash 文件。

如何使系统每隔大约3小时自动激活一次声卡

1.由于我们所用的声卡驱动程序是一个试用版的,在一星期以内,它有3小时的有效时间(尚可接受)。但超过一个星期以后,有效时间就只有20分钟了,那是绝对无法忍受的!吴首教为此感到义愤填膺,于202_年9月1日“坐台”完毕后,组建攻关小组并亲自挂帅,带领组员王某人经过“极其艰苦” 的奋斗,终于攻克了这一难题。短命的攻关小组在完成了其历史使命,并开完“非典声卡激活经验总结表彰大会”后,就地解散。茫茫天地间只留下了如下解决方案:

(1)建立 shell 脚本文件 opensound

#!/bin/tcsh-fwhile(1)set datesave=`date +%m%d%H%M%Y`date

082500002003/usr/lib/oss/soundoff/usr/lib/oss/soundondate $datesavesleep

编程实

例集锦

【ZT】

10800endshell编程实例集锦

(2)将 opensound 的属性改为所有人均可执行, 命令为:

chmod a+x opensound

(3)将 opensound 拷贝至 /usr/local/bin

(4)在 /etc/rc.d/rc.local 中加入

/usr/local/bin/opensound >&/dev/null&

(5)重新启动计算机。然后我们就能永远听到美妙的声音啦!!(此事又一次证明: 道高一尺, 魔高一丈!)

2.曾经我以为这一问题已圆满解决,但在使用过程中却问题多多,人生最痛苦的事莫过如此。究其原因,都是 soundoff 惹得祸。为了声音永驻,我将不惜 CPU 时间与其试比高。

#!/bin/tcsh-fset datesave=`date +%m%d%H%M%Y`date

082500002003/usr/lib/oss/soundoff/usr/lib/oss/soundondate $datesavesleep 8000 # 以上是为了在系统启动时激活声卡while(1)/usr/lib/oss/soundoff >& out set

flag=`cat out` rm out-f set N=0 if(”$flag“!= ”“)then # flag 不是空串说明 soundoff 执行失败 while(2)@ N++ /usr/lib/oss/soundoff >& out set flag=`cat out` rm out-f if(”$flag“ == ”“)then echo ”soundoff succeed“ break else echo ”$N soundoff failed" sleep 5 endif end endif set datesave=`date +%m%d%H%M%Y` date

082500002003 /usr/lib/oss/soundon date $datesave sleep 8000end

第二篇:shell编程

shell的作用: 是一个软件, 一个cli, 一门解释型的面向过程的程序设计语言

shell如何解析一个完整的命令行? 命令行的处理过程如下:

1.历史命令替换

2.命令行拆分为token(单词)(以空格或tab隔开, 即以空白隔开)

3.历史更新

4.处理引用

5.定义别名替换和函数

6.建立重定向、后台、管道

7.变量替换($USER、$NUM等)

8.命令替换(echo “abc `date` def”)

9.文件名替换(*.conf-> a.conf b.conf)

10.程序执行(内部命令、外部命令、shell脚本等)

一个命令行在执行之前, shell先将其参数进行替换(解析、扩展)

如将变量替换、命令替换、文件名替换, 最后才执行命令

对二进制程序它解析不了, 它解析的是程序执行之前命令行中的参数

第三篇:数控机床编程实例(本站推荐)

一、两种特殊的圆弧编程指令:CT和RND

常用的圆弧编程指令是G2和G3,使用时必须编入圆弧起点坐标,终点坐标、圆弧半径或中心坐标,可处理各种类型的圆弧编程。西门子810D/840D系统中的CT和RND指令也可以生成精确的圆弧轨迹,在加工轮廓中出现用圆弧与其他直线或圆弧相切连接的轨迹时,灵活运用CT和RND指令进行圆弧编程比使用G2和G3指令方便得多:

1、RND指令处理轮廓拐点的圆弧过渡

RND指令的含义:轮廓拐点处用指定半径的圆弧过渡处理,并且和相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标。

参照图1 加工内容为底边外的其余轮廓,所用程序如下。

N005 G54 G90 G0 Z100 T1 D1

N010 X-70 Y-50

N015 M03 S1000 F500 Z-10

N020 G41 Y-20

N025 G1 Y70 RND=5

N030 G1 X-40 RND=5

N035 G3 ×0 CR=20 RND=5

N040 G3 ×40 CR=20 RND=5

N045 G1×70 RND=5

N050 G1 Y-30

N055 M30

程序中用RND=5的格式表示轮廓拐点处用半径R5的圆弧过渡处理,并与相关的直线或圆弧相切连接,数控系统自动运算各个切点的坐标,程序中不需写入切点的坐标。而用G2和G3指令编写各处R5圆弧就必须计算各个切点的坐标(共10个点),还多了五条程序。

2、CT指令完成直线和圆弧或圆弧和圆相切边接

CT指令的含义是:经过一段直线或圆弧的结束点P1和另一个指定点P2生成一段圆弧并且和前面的直线或圆弧在P1点处相切,数控系统自动运算圆弧半径CT指令是模态的。

参照图2 加工内容为底边外的其余轮廓,所用程序如下:

N005 G54 G90 G0 Z100 T1 D1

N010 X-90 Y-120

N015 M03 S1000 F500Z-10

N020 G41Y-100

N025 G1 Y20

N030 X-60

N040 Yo

N045 CT X-20(第一个R20圆弧)

N050 X20(第二个R20圆弧)

N055 X60(第三个R20圆弧)

N060 G1 Y20

N065 G1×90

N070 Y-100

N075 M30

用CT在编制程序时只需输入切点坐标而不用写入圆弧半径,也不用判断圆弧的方向,在直线和圆弧或多段圆弧相切连接的轮廓编程时使用非常方便。

3、CT和RND指令在极坐标系中的应用

在极坐标系中用G2和G3指令编程时有一个限制,极点必须设定在所编程圆弧的中心。而用CT和RND指令就很好地克服了这一障碍。

(1)RND指令在极坐标系中的应用

参照图3在数控铣床加工4个30度的V型槽,以90度位置的V型槽为例程序如下。

N005 G54 G0 T1 D1 Z100

N010 G111 Xo YO

N015 AP=90-15 RP=110

N020 M03 S1000 F500 Z10

N025 G42 RP=100

N030 G1 RP=0 RND=10

N035 G1 RP=100

N040 M30

(2)CT指令在极坐标系中的应用。

参照图4 加工上部的3段圆弧和2段直线相切连接的部位,程序如下。

N005 G54 G90 Go Z100 T1 D1

N010 G111 XO YO

N015 AP=90-36-18 RP=150

N020 M03 S1000 F500 Z-10

N025 G42 RP=130

N030 G1 RP=142.66/2

N035 CT AP=90-18

N040 AP=90+18

N045 AP=90+18+36

N050 G1 RP=150

N055 M30

图3和图4 这两种类型的工件加工部位使用算术坐标系编程数据处理比较麻烦,在极坐标系中用G2和G3指令编程圆弧时极点必须设定在所编圆弧的中心,需要一些计算工作,而使用RND和CT指令编程圆弧时,极点就不必设定在所编圆弧的中心,极点可以设定在任意的方便数据处理的位置。图3和图4 这两种类型的工件加工部位在编程时使用极坐标且极点设定在工件中心最为方便。

二、特殊刀具补偿方法在加工扇形段导入板中的应用

1、一般的刀具补偿方法

参照图5,在数控铣上用40mm立铣刀加工60H7的槽,按照槽的边界线进行编程,使用的程序如下。

N005 G54 G90 Go Z100 T1 D1

N010 X-150 YO

N020 M03 S300 F100 Z30

N025 G42 Y30

N030 G1×150

N035 Y-30

N040 X-150

N050 M30

实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先大后小分别是22mm,20.5mm,20mm(理念值,最终的半径补偿值要经过实际测量确定)。

2、特殊的刀具补偿方法

参照图5,在数控铣床上40mm立铣刀加工60H7的槽,按照中心线进行编程,使用的程序如下。

N005 G54 G90 GO Z100 T1 D1

N010 X-150 YO

N020 M03 S300 F100 Z30

N025 G42 X-140

N030 G1 X150

N035 GO Z100

N040 G40 X-150

N050 Z30

N055 G41 X-140

N060 G1 X150

N065 GO Z100

N070 M30

实际加工中要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿先小后大分别是8mm、9.5mm,10mm(理论值,最终的半径补偿值要经过实际测量后确定),最终的半径补偿理论值=槽的宽度/2-刀具半径。在程序中分别用G41和G42激活两次刀补,增加了一次空行程,这种使用刀具半径补偿的方式在加工一般类型的工件时显得很麻烦,但是在加工特定类型的工件时使用这种方法就会使编程工作变得非常简单。

3、在加工扇形段导入板中的应用

在一些比较特殊槽体的加工中,图纸中只标注槽的宽度、深度和中心线的形状尺寸,针对这一类型的工件,按照中心线进行编程,加工中应用特殊的刀具补偿方法。

参照图6,这是我公司薄板厂连铸设备中使用的扇形段导入板,它是扇形段导入装置中的关键零件。用Tk6920数控锉铣床的加工七条128×44mm导入槽。该工件的七条导入槽是由多段圆弧和直线相切连接构成,图纸中只标注了槽的宽度、深度和中心线的形状尺寸,以上部第一个导入槽为例说明特殊的刀具补偿使用方法,按照中心线进行编程。

程序名称:CA01

程序内容:N5 G54 G90 G64 GO Wo Z150 T1 D1(调用第一个刀号)

N10 G111 XO YO

N15 X=-1804-100 Y=464.424

N20 M04 S250 F200 Z-44

N25 G41 X=IC(50)(激活刀补开始加工槽体的上边界)

N30 G1 X=-1804+920.617

N35 CT AP=90-16.03 RP=1499.5

N40 G1 AP=90-16.03 RP=1499.5+100

N45 GO G40 X=IC(100)Z150

N50 X=-1804-100 Y=464.424 T1 D2(调用第二个刀号)

N55 G42 X=IC(50)(激活刀补开始加工槽体的下边界)

N60 G1 X=-1804+920.617

N65 CT AP=90-16.03 RP=1499.5

N70 G1 AP90-16.03 RP=1499.5+100

N75 GO G40 X=IC(100)Z150

N80 M30

槽的宽度和中心线不对称,程序中用了两个刀号,加工槽体的上边界时用D1,加工槽体的下边界是时用D2,实际加工中用50mm铣刀要经过粗加工、半精加工和精加工运行三次程序,对应的半径补偿值先小后大分别是D1=100mm,12mm,12.5mm,D2=13mm,15mm,15.5mm.如果使用一般的刀具补偿使用方法,按照槽的边界线进行编程,就要计算槽的边界线中各段圆弧和直线切点的坐标以及各段圆弧的半径,计算量是非常大的。而按照中心线进行编程就可直接使用力纸上标注的尺寸,避免了大量、繁琐的数据计算工作,保证了程序中所用数据的准确性,极大的提高了编程效率。

其方法有两个特殊:

(1)按照中心线进行编程而不是按照真实的加工边界线进行编程。

(2)刀具补偿值按照粗加工、半精加工和精加工的顺序逐渐加大,理论补偿值二加工的边界到中心线的距离--刀具半径。优点是直接使用图纸上标注的尺寸进行编程,保证了程序中所用数据的准确性,不需进行大量繁琐的数据计算工作。

第四篇:数控铣床编程实例

第五节 数控铣床编程实例(参考程序请看超级链接)

实例一 毛坯为70㎜×70㎜×18㎜板材,六面已粗加工过,要求数控铣出如图3-23所示的槽,工件材料为45钢。

1.根据图样要求、毛坯及前道工序加工情况,确定工艺方案及加工路线

1)以已加工过的底面为定位基准,用通用台虎钳夹紧工件前后两侧面,台虎钳固定于铣床工作台上。2)工步顺序

① 铣刀先走两个圆轨迹,再用左刀具半径补偿加工50㎜×50㎜四角倒圆的正方形。② 每次切深为2㎜,分二次加工完。2.选择机床设备

根据零件图样要求,选用经济型数控铣床即可达到要求。故选用XKN7125型数控立式铣床。3.选择刀具

现采用φ10㎜的平底立铣刀,定义为T01,并把该刀具的直径输入刀具参数表中。4.确定切削用量

切削用量的具体数值应根据该机床性能、相关的手册并结合实际经验确定,详见加工程序。5.确定工件坐标系和对刀点

在XOY平面内确定以工件中心为工件原点,Z方向以工件表面为工件原点,建立工件坐标系,如图2-23所示。

采用手动对刀方法(操作与前面介绍的数控铣床对刀方法相同)把点O作为对刀点。6.编写程序

按该机床规定的指令代码和程序段格式,把加工零件的全部工艺过程编写成程序清单。

考虑到加工图示的槽,深为4㎜,每次切深为2㎜,分二次加工完,则为编程方便,同时减少指令条数,可采用子程序。该工件的加工程序如下(该程序用于XKN7125铣床): N0010 G00 Z2 S800 T1 M03 N0020 X15 Y0 M08 N0030 G20 N01 P1.-2 ;调一次子程序,槽深为2㎜ N0040 G20 N01 P1.-4 ;再调一次子程序,槽深为4㎜ N0050 G01 Z2 M09 N0060 G00 X0 Y0 Z150 N0070 M02 ;主程序结束 N0010 G22 N01 ;子程序开始 N0020 G01 ZP1 F80 N0030 G03 X15 Y0 I-15 J0 N0040 G01 X20 N0050 G03 X20 YO I-20 J0 N0060 G41 G01 X25 Y15 ;左刀补铣四角倒圆的正方形 N0070 G03 X15 Y25 I-10 J0 N0080 G01 X-15

N0090 G03 X-25 Y15 I0 J-10 N0100 G01 Y-15 N0110 G03 X-15 Y-25 I10 J0 N0120 G01 X15 N0130 G03 X25 Y-15 I0 J10 N0140 G01 Y0 N0150 G40 G01 X15 Y0 ;左刀补取消 N0160 G24 ;主程序结束

实例二 毛坯为120㎜×60㎜×10㎜板材,5㎜深的外轮廓已粗加工过,周边留2㎜余量,要求加工出如图2-24所示的外轮廓及φ20㎜的孔。工件材料为铝。

1.根据图样要求、毛坯及前道工序加工情况,确定工艺方案及加工路线 1)以底面为定位基准,两侧用压板压紧,固定于铣床工作台上 2)工步顺序 ① 钻孔φ20㎜。

② 按O’ABCDEFG线路铣削轮廓。2.选择机床设备

根据零件图样要求,选用经济型数控铣床即可达到要求。故选用华中Ⅰ型(ZJK7532A型)数控钻铣床。3.选择刀具

现采用φ20㎜的钻头,定义为T02,φ5㎜的平底立铣刀,定义为T01,并把该刀具的直径输入刀具参数表中。

由于华中Ⅰ型数控钻铣床没有自动换刀功能,按照零件加工要求,只能手动换刀。4.确定切削用量

切削用量的具体数值应根据该机床性能、相关的手册并结合实际经验确定,详见加工程序。5.确定工件坐标系和对刀点

在XOY平面内确定以0点为工件原点,Z方向以工件表面为工件原点,建立工件坐标系,如图3-24所示。

采用手动对刀方法把0点作为对刀点。6.编写程序(用于华中I型铣床)

按该机床规定的指令代码和程序段格式,把加工零件的全部工艺过程编写成程序清单。该工件的加工程序如下:

1)加工φ20㎜孔程序(手工安装好φ20㎜钻头)%1337 N0010 G92 X5 Y5 Z5 ;设置对刀点

N0020 G91 ;相对坐标编程 N0030 G17 G00 X40 Y30 ;在XOY平面内加工 N0040 G98 G81 X40 Y30 Z-5 R15 F150 ;钻孔循环 N0050 G00 X5 Y5 Z50 N0060 M05 N0070 M02

2)铣轮廓程序(手工安装好ф5㎜立铣刀,不考虑刀具长度补偿)%1338 N0010 G92 X5 Y5 Z50 N0020 G90 G41 G00 X-20 Y-10 Z-5 D01 N0030 G01 X5 Y-10 F150 N0040 G01 Y35 F150 N0050 G91 N0060 G01 X10 Y10 F150 N0070 G01 X11.8 Y0 N0080 G02 X30.5 Y-5 R20 N0090 G03 X17.3 Y-10 R20 N0100 G01 X10.4 Y0 N0110 G03 X0 Y-25 N0120 G01 X-90 Y0 N0130 G90 G00 X5 Y5 Z10 N0140 G40 N0150 M05 N0160 M30

第五篇:MFC编程实例_目录

目录

译者序

前言

第一部分基础知识

第1章窗口 2

1.1窗口和API环境 2

1.1.1三种类型窗口2

1.1.2客户区和非客户区 3

1.2窗口和MFC环境 4

1.3怎样应用MFC创建一个窗口 5

1.4怎样使用MFC销毁一个窗口 9

1.4.1捆绑到一个已有的窗口 9

1.4.2窗口类 10

1.4.3窗口进程 10

1.5怎样使用MFC创建一个窗口类 11

1.5.1使用AfxRegisterWndClass()函数注册一个窗口类 11

1.5.2使用AfxRegisterClass()函数创建一个窗口类 12

1.6怎样销毁一个MFC窗口类 14

1.7厂商安装的窗口类 14

1.8其他类型窗口 15

1.9桌面窗口 16

1.10小结 16

第2章类 18

2.1基类18

2.1.1CObject 18

2.1.2CCmdTarget 19

2.1.3CWnd 19

2.2应用程序、框架、文档和视图类

2.2.1CWinApp(O/C/W)20

2.2.2CView(O/C/W)21

2.3其他用户界面类 22

2.3.1通用控件类 23

2.3.2菜单类 23

2.3.3对话框类 24

2.3.4控制条类 24

2.3.5属性类 25

2.4绘图类 25

2.4.1设备环境类 25

2.4.2图形对象类 25

2.5文件类 26

2.6数据库类 26

2.6.1ODBC类 26

2.6.2DAO类 27

2.7数据集类 27

2.8其他数据类 27

2.9通信类 28 19

2.10其他类 29

2.11小结 31

第3章消息处理 32

3.1发送或寄送一个消息 32

3.1.1发送一个消息32

3.1.2寄送一个消息32

3.1.3发送一个消息与寄送一个消息的比较 32

3.2怎样使用MFC发送一个消息 33

3.3怎样用MFC寄送一个消息 33

3.4三种类型的消息 34

3.4.1窗口消息 34

3.4.2命令消息 34

3.4.3控件通知 34

3.5MFC怎样接收一个寄送的消息 36

3.6MFC怎样处理一个接收到的消息

3.7处理用户界面的对象 44

3.8创建自定义窗口消息 45

3.8.1静态分配的窗口消息 45

3.8.2动态分配的窗口消息 46

3.9重定向消息 47

3.9.1子分类和超分类 47

3.9.2用MFC子分类窗口 48

3.9.3重载OnCmdMsg()49

3.9.4使用SetWindowsHookEx()49

3.9.5使用SetCapture()49

3.9.6专有的消息泵50

3.10小结 50

第4章绘图 51

4.1设备环境 51

4.2在MFC环境中创建一个设备环境

4.2.1屏幕 52

4.2.2打印机 53

4.2.3内存 54

4.2.4信息 54

4.3绘图例程 55

4.3.1画点 55

4.3.2画线 55

4.3.3画形状 55

4.3.4形状填充和翻转 55

4.3.5滚动 56

4.3.6绘制文本 56

4.3.7绘制位图和图标 56

4.4绘图属性 56

4.4.1设备环境属性57

4.4.2画线属性 58

4.4.3形状填充属性58 36

524.4.4文本绘制属性58

4.4.5映像模式 59

4.4.6调色板属性 62

4.4.7混合属性 62

4.4.8剪裁属性 63

4.4.9位图绘制属性64

4.5元文件和路径 65

4.5.1元文件 65

4.5.2路径 66

4.6颜色和调色板 66

4.6.1抖动色 67

4.6.2未经抖动色 67

4.6.3系统调色板 67

4.6.4使用系统调色板 68

4.6.5动画色 71

4.7控制什么时候在哪里绘图 71

4.7.1处理WM_PAINT 71

4.7.2只绘制被无效化的区域 72

4.7.3处理WM_DRAWITEM 72

4.7.4在其他时间绘图 73

4.8小结74

第二部分用户界面实例

第5章应用程序与环境 76

5.1例1规划MFC应用程序 76

5.2例2用AppWizard创建一个MFC应用程序 79

5.3例3用ClassWizard创建一个类 83

5.4例4初始化应用程序屏幕 84

5.5例5保存应用程序屏幕 86

5.6例6处理命令行选项 88

5.7例7动态改变应用程序图标 91

5.8例8提示用户优先选项 93

5.9例9保存和恢复用户优先选项 97

5.10例10终止应用程序 100

5.11例11创建一个启动窗口 101

第6章菜单 107

6.1例12使用菜单编辑器 107

6.2例13添加一个菜单命令处理函数 109

6.3例14根据当前可视文档动态改变菜单 110

6.4例15启用和禁用菜单命令 111

6.5例16复选标记菜单命令 112

6.6例17单选标记菜单命令 113

6.7例18动态修改菜单 114

6.8例19动态修改系统菜单 116

6.9例20触发一个菜单命令 117

6.10例21创建弹出式菜单 117

第7章工具栏和状态栏 120

7.1例22使用工具栏编辑器 120

7.2例23启用和禁用工具栏按钮 122

7.3例24为工具栏按钮添加字 123

7.4例25非标准工具栏大小 128

7.5例26保持工具栏按钮按下 129

7.6例27保持工具栏按钮组中

一个按钮按下 130

7.7例28为工具栏添加非按钮控件 131

7.8例29修改应用程序的状态栏 136

7.9例30更新状态栏窗格 138

7.10例31为状态栏添加其他控件

第8章视图 145

8.1例32滚动视图 145

8.2例33改变鼠标光标形状 147

8.3例34沙漏光标 148

8.4例35窗体视图 149

8.5例36列表视图 152

8.6例37动态分割一个视图 163

第9章对话框和对话条 166

9.1例38使用对话框编辑器 166

9.2例39创建一个对话框类 168

9.3例40模式对话框 170

9.4例41无模式对话框 171

9.5例42在无模式对话框的控件间切换焦点 172

9.6例43对话框中的动画 173

9.7例44消息框174

9.8例45对话条176

第10章控件窗口 182

10.1例46在任意位置创建一个控件窗口 182

10.2例47用子分类定制一个通用控件窗口 183

10.3例48用超分类定制一个通用控件窗口 188

10.4例49在按钮上放置位图 190 10.5例50动态填充一个组合框 192 10.6例51排序一个列表控件 194 10.7例52分隔线控件 196

第11章绘图 198

11.1例53绘制图形 198

11.2例54绘制文本 201

11.3例55从任意位置装入一个图标并绘制 203

11.4例56从任意位置装入一个位 图和绘制一个位图 204 139

11.5例57从文件中创建一个位图 206 11.6例58创建一个自绘位图 211 第三部分内部处理实例

第12章消息 215

12.1例59添加消息处理函数或重载MFC类 216

12.2例60添加命令范围消息处理函数 219 12.3例61重定向命令消息 221

12.4例62创建自己的窗口消息 222

第13章文件、串行化和数据库 225 13.1例63访问二进制文件 225

13.2例64访问标准I/O文件 227 13.3例65访问内存文件 228 13.4例66在数据类中实现串行化 13.5例67串行化SDI或MDI文档 13.6例68按要求串行化 240

13.7例69透明地更新串行化的文档 13.8例70串行化多态类 246 13.9例71串行化数据集 248

13.10例72访问ODBC数据库 252 13.11例73访问DAO数据库 257

第14章杂类 263

14.1例74剪切、拷贝和粘贴文本 数据 263

14.2例75剪切、拷贝、粘贴多信息文本数据 268

14.3例76剪切、拷贝和粘贴二进制数据 273

14.4例77数组函数 280

14.5例78列表函数 281

14.6例79映像函数 283

14.7例80系统键盘输入 285 14.8例81时间 288

第四部分打包实例

第15章库 291

15.1例82静态链接C/C++库 291 15.2例83动态链接C/C++库 295 15.3例84动态链接MFC扩展类库 15.4例85资源库 303

第五部分附录

附录A控件窗口风格 305

附录B消息、控件通知和消息映像宏 附录C访问其他应用程序类 328 附录D开发中注意事项 330

附录EMFC快速参考指南 339 229 235 242 300 323

shell编程实例集锦5篇
TOP