搜档网
当前位置:搜档网 › 第三章:程序编辑窗口用法详解

第三章:程序编辑窗口用法详解

第三章:程序编辑窗口用法详解
第三章:程序编辑窗口用法详解

第三章:程序编辑窗口用法详解

3.0.1 程序编辑窗口界面

3.0.2 邂逅Paste按钮

3.0.3 用程序编辑窗口加快我们的工作

3.0.4 用程序编辑窗口完成对话框无法完成的工作

如果对话框无法满足你的统计分析要求(别瞪眼,下面你就会看到了),就请你在本章学习一下如何写SPSS程序吧。

什么?SPSS还有程序?!是的,如果大家以前用过SPSS/PC+ 4.0,就一定不会对SPSS的程序感到陌生:在那个非常遥远的DOS时代(大约15年前),学习SPSS程序的语法,掌握如何编写SPSS程序是熟练使用SPSS的必要条件(但还不充分)。随着Windows旋风的登陆,软件的易操作性被推进到了前所未有的高度,而SPSS显然是统计软件中做的最成功的一个。它的操作界面是如此的成功,让使用者可以完全无须了解SPSS的语法而使用其80%的功能,使得SPSS程序被人逐渐忘记。其实,适当的使用SPSS程序可以大大提高我们的工作效率,并且SPSS在设计时也充分注意到了编程功能和使用界面的结合--还记得Paste按钮吗?下面我们就结合几个实例来学习如何使用程序编辑窗口。

请注意:我们不准备教大家那些枯燥的SPSS语法,现在写SPSS程序就象

在WORD中记录宏一样简单,所需要做的只是略加修改而已。

3.0.1 程序编辑窗口界面

选择菜单File==>new==>syntax,系统会开启一个新的程序编辑窗口如下:

Syntax从字面上应该翻译为句法、语法的意思,这里从实际用途出发,翻译为程序。

和以前见过的数据管理窗口相比,这个窗口简单的不能再简单了。菜单项中的File、Edit、View、Analyze、Graphs等菜单都是通用的,唯一特殊的是Run 菜单,该窗口的特殊功能均在这里实现。

3.0.2 邂逅Paste按钮

Paste按钮在几乎所有SPSS对话框中均存在,它是专门为编程准备的。以第一章的那个t检验为例,如果最终选择完毕后不单击OK而是单击Paste,则程序编辑窗中会自动生成以下语句:

T-TEST

GROUPS=group(1 2)

/MISSING=ANALYSIS

/VARIABLES=x

/CRITERIA=CIN(.95) .

这就是你刚才想做的工作,如果运行它,就可以得到t检验的结果!怎么运行?选择菜单Run==>all,看到了吗?

Paste按钮如何能生成程序?在SPSS中,操作界面实际上起的就是“操作界

面”的作用。当你用对话框选定某项操作,单击OK后,SPSS就将你的选择翻译成程序语句,然后提交系统执行。如果你单击Paste按钮,SPSS就不将生成的

程序语句提交执行,而是传送到程序编辑窗中供你折腾。说的再广一些,不光SPSS,SAS等其他统计软件也是这么做的。

从上面的语句可以看到SPSS程序的基本结构:一条语句可占多行,最前面为语句主体,具体的选项用斜杠和语句主体相连,最后用小数点结束语句。

3.0.3 用程序编辑窗口加快我们的工作

如果程序编辑窗口只能带来“暂停”功能的话,我们也就不用再往下讲了。幸好,它的作用还远不止与此。当需要成批次的处理数据时,当你需要重复进行相同的统计分析时,当你要做许多统计分析,每一步均费时较长而你又不想等时...,使用Paste按钮是你的救命稻草。仍以第一章为例,如果从预分析一开始就连续使用Paste按钮,则到分析结束我们会得到如下程序:

DESCRIPTIVES

VARIABLES=x

/STATISTICS=MEAN STDDEV MIN MAX .

SORT CASES BY group .

SPLIT FILE

SEPARATE BY group .

DESCRIPTIVES

VARIABLES=x

/STATISTICS=MEAN STDDEV MIN MAX .

GRAPH

/HISTOGRAM=x .

T-TEST

GROUPS=group(1 2)

/MISSING=ANALYSIS

/VARIABLES=x

/CRITERIA=CIN(.95) .

现在你可以再次启用Run菜单来一次完成所需的统计分析。特别的,如果你的数据还会不断添加(试验尚未结束),就可以把该程序存为程序文件(*.sps),下次读入新数据后再运行一次就可以直接得到新的结果。

Run菜单几个选项的含义分别为:

?ALL 运行全部程序。

?SELECTION 运行所选择的程序语句。

?CURRENT 运行当前光标所在行的语句。

?TO END 从当前语句起一直运行到程序结束。

3.0.4 用程序编辑窗口完成对话框无法完成的工作

如果程序编辑窗口的本事只限于上面介绍的这一点,那么在Windows时代,我们就不用来专门讲编程这一章了。还记得吗?上面我提到用SPSS的图形界面可以完成80%的工作,可有时候你偏偏需要用另外那20%的功能,请看下面的例子:

例3.1 请打开SPSS提供的cars.sav数据,假设每条记录代表一辆车,现在将按下列条件挑选一些车出来:Year<=76、Cylinder<=4、Weight>=3000,并且要看看每辆车符合了以上三条要求中的几条。

解:没有什么难的,从第二章的知识我们了解到Count对话框就是做这类事情的,好,在Count对话框进行操作如下:

1.Target variable框:键入G1(新变量名)

2.Numeric variable框:选入Y ear

3.单击Define values钮:

4.Range lowest through:键入76:单击ADD钮

5.单击Continue钮

6.Numeric variable框:选入cylinder

7.单击Define values钮:

8.Range lowest through:键入4:单击ADD钮

9.单击Continue钮

10.Numeric variable框:选入Weight

11.单击Define values钮

12.Range through higest:键入3000:单击ADD钮

13.单击Continue钮

14.单击OK

好了,做完了--不过好象不大对劲呀!怎么前面做的条件选择在后面定义的时候仍然出现?再看看结果,更不对了!看来有问题。毛病出在哪里呢?请再次开启Count对话框,选择好的条件仍然在里面,单击Paste钮,可以看到这些选择产生的SPSS语句如下:

COUNT

G1 = year cylinder weight (Lowest thru 76) year cylinder weight (Lowest thru 4) year cylinder weight (3000 thru Highest) .

EXECUTE .

仔细看看,这个语句不对呀!明明Lowest thru 76应该是对变量Year的限制,怎么year、cylinder、weight 这三个变量都在它前面?再看另两个条件,一样“大家有份”,这还了得,改!将语句改为正确的格式如下:

COUNT

G1 = year (Lowest thru 76) cylinder (Lowest thru 4) weight (3000 thru Highest) .

EXECUTE .

再次运行该语句,可以看到各个记录G1分别被取值为0~3,代表这些记录满足了0~3条要求,最终满足全部三条要求的应为3条记录。

3.0.5 结构化语句简介

有了Paste按钮,变成的工作就轻松多了,如果只是从上往下的顺序执行语句,有它也就够了。但许多时候所编制的程序还需要进行判断、循环等操作,每一种结构化语言编写的程序都由顺序、分支、循环三种结构组成,SPSS程序也不例外。那么,下面我们来介绍一下分支和循环语句的语法。

1、分支(条件)语句

【IF语句】

分支语句就是大家非常熟悉的判断语句,SPSS中最常见的判断语句是IF语句,它的格式如下:

IF 逻辑表达式目标表达式

逻辑表达式用于给出逻辑判断条件,而目标表达式则是当逻辑条件被满足时需要进行的操作。最常见的情况是给一个变量赋值,如compute语句。比如下面的语句:IF (AGE>20 AND SEX=1) GROUP=2 其含义是当AGE>20并且SEX=1时,变量GROUP被赋值为2。

下面我们来看一个实际运行的例子:

COMPUTE ageclass=1. 给变量ageclass一律赋值为1。

IF (age>50) ageclass=2. 当age>50时,ageclass赋值为2。Execute. 开始执行以上程序。

注意:最后的execute语句不能省略,否则程序被存在缓冲区里,没有真正执行。

【DO IF 语句】

IF 语句适合于比较简单的情况,如果需要多充分支,或者联合判断条件,则可以直接使用RECODE语句(过程),或者这里要介绍的DO IF / END IF语句,其格式如下:

DO IF 逻辑表达式

目标表达式

ELSE

目标表达式

END IF

DO IF / END IF 语句的作用主要是生成多重分之的判断结构,如下面的例子:DO IF ( age<20).

COMPUTE ageclass=1.

ELSE IF (age<30).

COMPUTE ageclass=2.

ELSE IF (age<40).

COMPUTE ageclass=3.

ELSE IF (age<50).

COMPUTE ageclass=4.

END IF.

EXECUTE.

【循环语句】

在SPSS中提供了好几个循环语句,由DO REPEAT/END REPEAT,LOOP/END LOOP 等,这里我们只介绍后者,LOOP/END LOOP语句的语法格式如下:

LOOP 控制变量名= 起始值 TO 终止值 [BY 步长]

运算语句

END LOOP

该语句主要用于建立数据集和数据变换操作,比如下面的语句:

SET MXLOOPS=10. 设置最大允许循环次数为10

LOOP. 开始无限循环,指达到最大次数

COMPUTE X=X+1. 将变量X累加1

END LOOP. 结束循环

EXECUTE.

该程序会将数据文件中的X都重复加1,即加10。但如果文件中没有变量X,则执行后X为缺失值。在看下面的程序:

LOOP #lop=1 TO 5.开始循环,要求循环5次

COMPUTE X=X+1. 将变量X累加1

END LOOP. 结束循环

EXECUTE. 开始执行以上程序

该程序会将数据文件中的X都重复加5次1,其中变量lop前带有#号,标明为控制变量,不写入数据集,否则将会在数据集中建立一个新变量lop,其大小等于循环结束后lp取值6。

一个复杂的程序示例:

这里我们给出一个比较复杂的数据集生成程序,里面运用了许多前面学习过的指示,同时还用到了建立数据文件所需的一些语句,希望大家通过这个示例能对SPSS程序有一个更深入地了解。

SET SEED 5502090. 将为随机种子设为5502090

INPUT PROGRAM. 开始数据录入程序段

LOOP #LOP=1 TO 50. 一共循环50次,变量LOP不写入文件 COMPUTE A=NORMAL(1). 新变量A服从标准正态分布

END CASE. 结束一条记录的定义

END LOOP. 结束循环

END FILE. 结束数据文件

END INPUT PROGRAM. 结束数据录入程序

EXECUTE. 开始执行以上程序

DO IF (A>=0).

COMPUTE B=A. 如果A〉=0,则新变量B=A ELSE.

COMPUTE B=A*2. 否则,B=A*2

END IF.

EXECUTE. 开始执行以上程序

LIST. 在结构窗口中输出数据变量表

在程序运行完毕以后,就会生成一个有50条记录的新数据集,其中变量A 服从均数为0,标准差为1的正态分布,而变量B的取值在变量A大于等于0时和A相等,否则等于A的两倍。同时在结果窗口中会将所有记录打印输出。由于我们采用的是为随机函数,以上程序重复时得到的结果都是相同的。

“副”的几种用法

2. 职务的误译 在翻译职务时, 最容易误译的是翻译“副”职时, 因为表示 “副……”的有“deputy”“vice”、“associate”、“assistant”、 “under”、“sub”等, 且迄今为止, 我国还没有就汉语“副职”的英 译建立起一个统一的标准, 致使英译的形式多样, 缺少章法, 使得外国听众不知所云, 有时甚至引起误解。其实经过调查分 析, 表示“副”意思的英语词素与其它词汇在搭配时具有特定 的语法规则和语用规则。 2.1 Deputy 有人认为“deputy”经常和一些表示职位相对较低的词连 用, 这种说法不一定正确。和它搭配频率较高的词汇有: minister,leader,chairman,director,mayor,editor,manager,secretary –general,等。可以看出, deputy 主要用来表示企业、事业、行政 部门的副职。 2.2 Vice- 有人认为Vice- 常和Chairman 这样的表示职位相对高 的词连用。但是, 并不意味着vice- 不能和表示一般职位的词 连用, 例如, 我们也可以说: vice- manager( 副经理).同时, Vice 与表示“正职”名词搭配的方式比较固定, 它常和President, Chairman, Chancellor 等连用。 所以, 我们认为, Vice- 不一定只与表示职位相对较高的 词连用, 同样的道理,Deputy 不只是与所谓表示职位相对较低 的词连用。 2.3 Associate Associate 在大多数情况下用作名词, 表示“助理”的意思。 在用作“副”的意思时, 它主要用来表示立法和执法部门的副 职。但是, Assistant Manager 不是我们通常所指的“经理助理”, 因为“经理助理”只是经理的一般帮手, 他可能没有头衔. Assistant Manager 可以理解翻译为“助理经理”或“副经理”因为当经理不在时, Assistant Manager 通常可以代替经理处理日 常事务。 2.4 Under- 表示职务的名词和under- 搭配的只有secretary- general 和secretary,指的是联和国、部、厅等机关的副秘书长、次长等。 2.5 Sub- 与sub- 搭配表示副职的词较少, 只有sub dean( 大学的副 教务长、副系主任) 、sub- agent( 副代理人) 、sub prefect( 副县 长) 、sub deacon( 副助祭) "副"字在英语中可以用vice、deputy、assistant、associate、under、sub等词表示。 副总裁Vice President

SPSS 10.0高级教程四:程序编辑窗口用法详解

SPSS 10.0高级教程四:程序编辑窗口用法详解 某年某月的某一天,你和你的另一半正在街上为地球表面的平整而贡献自己的绵薄之力。突然(也许是必然),你觉得有些饿了。这是一个问题,当然,不用说大家也知道解决问题的方法就是--吃。不过就是吃也有讲究,可以随便找个面馆简单的填饱肚子;要求高的话还可以去几星级的地方享受一下;当然还有的人觉得自己回去做口味也合适,花费也不多;更有些超级美食家,星级水准也不满意,需要亲自给一级厨师露一手,指点他们一下,才会吃的满意。 好,使用SPSS进行统计分析的方式就象上面填饱肚子的方法一样有几种选择,如果你烹饪工夫还欠火候,或者习惯了享受星级服务,那么直接使用SPSS为你提供的对话框进行操作就是了;而如果你习惯了DIY,甚或对话框也无法满足你的统计分析要求(别瞪眼,下面你就会看到了),就请你在本章学习一下如何写SPSS程序吧。 什么?SPSS还有程序?!是的,如果大家以前用过SPSS/PC+ 4.0,就一定不会对SPSS的程序感到陌生:在那个非常遥远的DOS时代(大约15年前),学习SPSS程序的语法,掌握如何编写SPSS程序是熟练使用SPSS的必要条件(但还不充分)。随着Windows旋风的登陆,软件的易操作性被推进到了前所未有的高度,而SPSS显然是统计软件中做的最成功的一个。他的操作界面是如此的成功,让使用者可以完全无须了解SPSS的语法而使用其99%的功能,使得SPSS程序被人逐渐忘记。其实,适当的使用SPSS程序可以大大提高我们的工作效率,并且SPSS在设计时也充分注意到了编程功能和使用界面的结合--还记得Paste按钮吗?下面我们就结合几个实例来学习如何使用程序编辑窗口。 请注意:我们不准备教大家那些枯燥的SPSS语法,现在写SPSS程序就象在WORD中记录宏一样简单,所需要做的只是略加修改而已。 3.0.1 程序编辑窗口界面 选择菜单File==>new==>syntax,系统会开启一个新的程序编辑窗口如下:

在Win程序中添加控制台窗口方法汇总

XDE(Xanavi Development Enveriment)的在PC机上运行的时候,除了模拟导航仪屏幕的对话框窗口外,还有一个用来协助调试的控制台(console)窗口。这个console窗口可以用来输入调试命令,也可以进行打屏输出以观察程序的运行状态,非常方便。这样做有两个好处:一、console窗口的输入输出速度比一般的windows窗口要快;二、console窗口的输入输出不会对消息流产生影响(你知道,就像dos窗口不知道消息的存在一样,console 窗口也具有这样的特性),而在一般的windows窗口上进行输入输出时,会打乱原有的消息流(因为会有一大堆的像WM_PAINT、WM_GETFOCUS这样与鼠标、焦点、键盘、刷新相关的消息产生)。对于调试与消息相关的程序来说(比如像XDE这样拥有自己消息控制的程序),console这样的特性是非常重要的。 在windows系统下使用C/C++编程的时候,我们一般会有两种选择,一个是做成类似DOS字符界面样式的程序(这就是console程序),这种程序的入口函数是main(对于UNICODE则是wmain),另一种是做成win32窗口程序,这样的程序会产生标准的windows 窗口,它的入口函数是WinMain 。一般来讲,一个win32的窗口程序在默认状态下是不会产生console窗口的。 但是,对于一个win32窗口程序,我们可以在运行期间给这个程序添加一个控制台窗口。有几个win32的API是用来实现这个功能的:AllocConsole,FreeConsole以及与Console相关的Get和Set系列函数。AllocConsole用来产生一个窗口,FreeConsole用来销毁它。下面我们来具体地看看每一个函数的作用。 与Console窗口相关的API函数介绍: BOOL AllocConsole(void) 这个函数为调用它的进程产生一个console窗口,如果成功,就返回非0值;否则,返回0。要注意的是,每个进程最多只有拥有一个console的窗口(但多个进程可能同时拥有一个console窗口,比如子进程可以共享父进程的console窗口),如果这个进程已经有一个console窗口了,那么再调用AllocConsole的时候它会返回0。 BOOL FreeConsole(void) 销毁进程所拥有的console窗口(如果这个console是被多个进程共同拥有,那么它不会被Free掉,但是调用此函数的进程将无法再访问到这个console了)。成功返回非0值,否则返回0 。 HANDLE GetStdHandle( DWORD nStdHandle ); nStdHandle:取STD_INPUT_HANDLE、STD_OUTPUT_HANDLE、STD_ERROR_HANDLE 三个值中的一个。 STD_INPUT_HANDLE:标准输入设备句柄 STD_OUTPUT_HANDLE:标准输出设备句柄 STD_ERROR_HANDLE:标准错误输出设备句柄。 这个函数用来获取标准输入、输出、错误输出设备的句柄。这些句柄是某些console相关的函数上会用到,比如下面几个函数。 BOOL WriteConsole( HANDLE hConsoleOutput, // 控制台窗口输出句柄 const VOID* lpBuffer, // 需要输出的字符所在的buffer address

Do_的四种用法

助动词的用法 一、助动词do的用法 在英语中,助动词本身没有意义,只是帮助实义动词完成某些语法功能,如构成否定句、疑问句、简略答语等。 do 有两种形式 原形 现在时第三人称单数 do的基本用法: 构成否定句 构成一般疑问句及回答 构成特殊疑问句 1.原形 肯定式: do 否定式: do not 缩略否定式: don’t 用法:do用在第一人称单复数(I,we…)、第二人称单复数(you…)和第三人称复数(they…)做主语,且时态为一般现在时的句子中,构成否定句、一般疑问句及回答、特殊疑问句。 Examples: I like this red hat. 我喜欢这顶红色的帽子。 否定句:我不喜欢这顶红色的帽子。 I don’t like this red hat. 一般疑问句及回答:你喜欢这顶红色的帽子吗? 是的,我喜欢。∕不,我不喜欢。 Do you like this red hat? Yes, I do./ No, I don’t. 特殊疑问句: 你喜欢哪一顶帽子?Which hat do you like? Lily and I want to go to Beijing. 莉莉和我想去北京。

否定句: Lily and I don't want to go to Beijing. 莉莉和我不想去北京。 一般疑问句及回答: Do Lily and you want to go to Beijing? Yes, we do. ∕No, we don't. 莉莉和你想去北京吗? 是的,我们想去。∕不,我们不想去。 特殊疑问句:Where do Lily and you want to go? 莉莉和你想去哪儿? 练习:1、我不喜欢狗。 Idon't like dogs. 2、你喜欢什么颜色? What color do you like? 3、你有词典吗?是的,我有。 Do you have a dictionary? Yes, I do. 2.现在式第三人称单数 肯定式: does 否定式: does not 缩略否定式:doesn’t 用法:does用在第三人称单数做主语,且时态为一般现在时的句子中。注意:当does出现时,句子中用动词原形。 Examples: She likes that red dress. 否定句:She doesn’t like that red dress. 一般疑问句及回答:Does she like that red dress? Yes, she does./ No, she doesn’t. 特殊疑问句:Which dress does she like? 课堂练习:

1在Word窗口中

1.在Word窗口中,按住( )键的同时键入字母F即可打开“文件”菜单。( ) A.Ctrl B.Alt C.Shift D.Tab 2.下列是关于Word菜单的叙述,错误的是( ) A.颜色暗淡的命令表示当前不能使用 B.带省略号的命令表示会打开一个对话框窗口 C.菜单栏中的菜单个数是可变化的 D.菜单中的内容(命令)是可变化的 3.在Word中,当前正编辑一个新建文档“文档1”,当执行“文件”菜单中的“保存”命令后( ) A.该“文档1”被存盘 B.打开“另存为”对话框,供进一步操作 C.自动以“文档1”为名存盘 D.不能以“文档1”存盘 4.在Word中,Ctrl+A快捷键的作用,等效于用鼠标在文档选定区中( ) A.单击一下 B.连击两下 C.连击三下 D.连击四下

5.在Word中,当前输入的文字被显示在( ) A.文档的尾部 B.鼠标指针位置 C.插入点位置 D.当前行的行尾 6.按住Ctrl键,再用鼠标拖动所选文本,所完成的操作为( ) A.移动文本 B.复制文本 C.替换文本 D.删除文本 7.在Word中,“剪切”命令是( ) A.将选定的文本移入剪切板 B.将选定的文本复制到剪切板 C.将剪切板中的文本粘帖到文本的指定位置 D.仅将文本删除 8.在Word中,选中某段文字,连击两次“格式”工具栏中的斜体按钮,则( ) A.该段文字呈左斜体格式 B.该段文字呈右斜体格式 C 这句话字符格式不变 D.产生错误信息

9.在Word中,快速打印整篇文档的方法是( ) A.单击“文件”菜单中的“打印”命令 B.单击“常用”工具栏中的“打印预览”按钮 C.单击“常用”工具栏中的“打印”按钮 D.使用组合键Ctrl+P进行快速打印 10.Excel中,运算公式的一般形式为( ) A.=表达式 B.:表达式 C.>=表达式 D.=<表达式 11.在Excel中除第一行外,清单中的每一行被认为是数据的( ) A.字段 B.字段名 C.标题行 D.记录 12.一个单元格中存储的完整信息应包括( ) A.数据、公式和批注 B.内容、格式和批注 C 公式、格式和批注 D.数据、格式和公式

C语言控制台窗口界面编程(修正版)

控制台窗口界面编程控制 〇、摘要 一、概述 二、控制台文本窗口的一般控制步骤 三、控制台窗口操作 四、文本属性操作 五、文本输出 六、文本操作示例 七、滚动和移动 八、光标操作 九、读取键盘信息 十、读取鼠标信息 十一、结语 补充篇--经典程序(Internet资源) 摘要: 文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用 Visual C++已越来越被众多学习者所接受。显然,现今如果还再把TC作为开发环境的话,不仅没有必要,而且也不利于向Windows应用程序开发的过渡。然而,Visual C++的C++专用库却没有TC所支持的文本屏幕(控制台窗口)控制函数(相应的头文件是conio.h)。这必然给C++学习者在文本界面设计和编程上带来诸多不便。要知道,文本界面设计是一种深入学习C++、掌握交互系统的实现方法的最简单的一种手段,它不像C++的Windows图形界面应用程序,涉及知识过多。为此,本系列文章来讨论在Visual C++ 6.0开发环境中,如何编写具有美观清晰的控制台窗口界面的C++应用程序。 (一)概述操作 所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦控制台应用程序在Windows操作系统中运行后,就会弹出一个窗口。例如下列代码: #include int main(int argc,char *argv[]) { printf("Hello, Console!\n"); return 0; } 单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。

以为的几种用法

以为的几种用法 邢台市第五中学李敬华 “以为”在古汉语中使用频率很高。因为“以”和“为”都有多种用法,所以两个字搭配在一起就有了多种含义,“以为”可以是连用,也可以是“以……为……”。现对课本中出现的几种形式作一简单总结: 一“以为”等于现代汉语中的“认为” 例: (1)“老臣窃以为媪之爱燕后,贤于长安君。” (我私下认为您疼爱燕后就超过了疼爱长安君。) (2)故以为其爱不若燕后。(因此我认为您疼爱他(长安君)比不上疼爱燕后。) (3)闻道百,以为莫己若者,我之谓也。(听到了上百条道理,便认为天下再没有谁能比得上自己’的,说的就是我这样的人了。) 二“以……为……”中“以”是介词“把”,“为”是动词“作为”或“当作” 例:(1)必以长安君为质,兵乃出。(一定要把长安君来做人质,援兵才能派出。”)

(2)然后以六合为家,崤函为宫。(然后将天下作为一家私产,把崤山、函谷关作为宫墙) 三“以……为……”中“以”是动词“认为”,“为”是介词“替” 例:老臣以媪为长安君计短也。(我认为您替长安君打算得太短了) 四“以为”连用,却相当于“以……为……”“以为”中间省略“之” 例:(1)若舍郑以为东道主,行李之往来,共其乏困。(假如放弃灭郑的打算,而让郑国作为您秦国东道上的主人,秦国使者往来,郑国可以随时供给他们所缺乏的东西)(2)收天下之兵,聚之咸阳,销锋镝,铸以为金人十二,以弱天下之民。(收缴天下的兵器,集中在咸阳,去掉刀刃和箭头,把它铸成十二个金人,以便削弱百姓的反抗力量。) (3)南取百越之地,以为桂林、象郡。(向南攻取百越的土地,把它划为桂林郡和象郡) 五“以……为……”实际上相当于“以为”,译作“认为” 例:以天下之美为尽在己。(认为天下一切美好的东西全都聚集在自己这里。)

VB6.0中的窗口控制全集

VB6.0中的窗口控制全集 2 2007-03-20 11:28:55| 分类:开发语言阅读376 评论0 字号:大中小订阅 让窗口一直在上面 很多流行软件都有这样一个选项:Always on Top。它可以让窗口在最上面,别的窗口不能覆盖它。我们在VB 中,可以使用下面的方法来实现: Private Const SWP_NOSIZE = &H1 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOZORDER = &H4 Private Const SWP_NOREDRAW = &H8 Private Const SWP_NOACTIVATE = &H10 Private Const SWP_FRAMECHANGED = &H20 Private Const SWP_SHOWWINDOW = &H40 Private Const SWP_NOCOPYBITS = &H80 Private Const SWP_NOOWNERZORDER = &H200 Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER Private Const HWND_TOP = 0

Private Const HWND_BOTTOM = 1 Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2 Private Declare Function SetWindowPos Lib "user32" ( _ ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long) As Long Private mbOnTop As Boolean Private Property Let OnTop (Setting As Boolean) if Setting Then SetWindowPos hwnd, -1, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Else SetWindowPos hwnd, -2, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE End If mbOnTop = Setting End Property

利用wmctrl控制窗口

【转载】利用wmctrl控制窗口2009-06-29 16:02:48 分类:IT职场 使用wmctrl控制窗口行为使用wmctrl控制窗口行为 2008年04月08日星期二 , 1,260 次点击 前两天我谈了窗口匹配工具Devil’s Pie的使用,和DP一样,wmctrl同样可以控制窗口的行为。不同的是,DP是一个规则匹配工具,通过检查既有的窗口规则配置文件在DP启动时或窗口打开时应用规则到窗口;而wmctrl是一个命令行工具,它完全通过命令行命令来控制窗口行为。 一个使用wmctrl操纵窗口行为的实际命令如下: wmctrl -r firefox -b add,shaded 此命令将标题中含有”firefox”字串的窗口折叠起来。 wmctrl的命令行命令格式分为三个组成部分:动作、选项和参数。 要控制一个窗口的行为,首先要让wmctrl找到这个窗口。在这一点上,wmctrl是通过参数来实现的。 值为一个整数,用来指定相应的工作区。和DP不同,wmctrl从0开始计数,即第一个虚拟桌面为0,第二个是1。 一个”g,x,y,w,h”格式的字符串,用来指定窗口的层次、位置和大小。其中,”g”代表窗口的层次,所有窗口普通层次的值都为0;”x”和”y”分别是窗口的横、竖坐标;”w”和”h”分别是窗口的宽度和高度。五个参数都是整数,宽度和高度的值如果不需要改变,可以使用”-1″来代替。 缺省情况下,此参数表示一个字符串,所有标题中含有此字符串的窗口都是匹配项,忽略大小写。如果加上”-F”选项,则会检查大小写。如果使用”-i”的选项,此参数将被当作一个整数来进行比较。 此参数有两个特殊值:”:SELECT:”表示命令执行后需要用户选择一个窗口作为目标,然后将命令作用到该窗口;”:ACTIVE:”表示将当前处于活动状态的窗口作为命令执行目标。 当前只实现了一个workaround属性,即”DESKTOP_TITLES_INVALID_UTF8″。在使用Window Maker作为窗口管理器时可以修正打印非ASCII编码窗口标题的输出结果。 wmctrl选择目标窗口的选项并不如DP丰富和精确,不过大多数情况下并不影响使用,况且通过”“参数的两个特殊值可以多少弥补一些选项上的缺失,且能提供一种更机动的操作方式。 当选择了目标窗口后,就要向该窗口指定具体行为了。这一点通过”动作”来实现。 -a

AKTApurifier方法编辑窗口 on-siter training SOP II

V.Advanced Unicorn Software——Method Edit 新建柱子 具体软件操作如下: ①在Unicorn软件Method Editor界面中选择Edit→ Column List ②新建一根自己的柱子:New ③→New Column中输入柱参数:输入Height,柱子直径diameter;输入其他相关参数:Vt,Vo,Max Pressure,Default Flowrate,Max Flowrate等,然后Save As 特定的柱名。

这样在Column List中就有了我们自己编辑好的层析柱。 新建方法: 在Unicorn软件Method Editor界面中选择File→New→Wizard→OK Main Selection层析方式选择:Affinity、Anion/Cation Exchange、HIC、Size exclusion

→Column:Any(或者预装柱)→Flexible Flow Rate在不同阶段用不同流速→Next Wavelength 波长选择UV:280nm →Pump Inlet入口选择→Next Equalibration: Start Concentration %B起始浓度选择→Equalibration Volunme: CV 平衡体积→Watch Equlibration和前一个条件是满足任一条件,就跳入下一步。

Sample Injection:Injection Technique: Manual注射器上样→ Empty Loop With: 1mL; 或者 System Pump Direct Loading系统泵直接上样→Injection Volume 上样体积(必须>10mL),默认样品入口为A2(如果HIC,默认B2) →Next

控制台窗口界面控制设计

摘要:文本界面的控制台应用程序开发是深入学习C++、掌握交互系统的实现方法的最简单的一种手段。然而,Visual C++的C++专用库却没有TC所支持的文本(字符)屏幕控制函数,为此本系列文章从一般控制步骤、控制台窗口操作、文本(字符)控制、滚动和移动、光标、键盘和鼠标等几个方面讨论控制台窗口界面的编程控制方法。 在众多C++开发工具中,由于Microsoft本身的独特优势,选用Visual C++已越来越被众多学习者所接受。显然,现今如果还再把TC作为开发环境的话,不仅没有必要,而且也不利于向Windows应用程序开发的过渡。然而,Visual C++的C++专用库却没有TC所支持的文本屏幕(控制台窗口)控制函数(相应的头文件是conio.h)。这必然给C++学习者在文本界面设计和编程上带来诸多不便。要知道,文本界面设计是一种深入学习C++、掌握交互系统的实现方法的最简单的一种手段,它不像C++的Windows图形界面应用程序,涉及知识过多。为此,本系列文章来讨论在Visual C++ 6.0开发环境中,如何编写具有美观清晰的控制台窗口界面的C++应用程序。 一、概述 所谓控制台应用程序,就是指那些需要与传统DOS操作系统保持某种程序的兼容,同时又不需要为用户提供完善界面的程序。简单地讲,就是指在Windows环境下运行的DOS程序。一旦C++控制台应用程序在Windows 9x/NT/2000操作系统中运行后,就会弹出一个窗口。例如下列过程: 单击Visual C++标准工具栏上的“New Text File”按钮,打开一个新的文档窗口。 选择File | Save菜单或按快捷键Ctrl+S或单击标准工具栏的Save按钮,弹出“保存为”文件对话框。将文件名为“Hello.cpp” (注意扩展名.cpp不能省略)。 在文档窗口中输入下列代码: #include void main() { cout<<"Hello, Console!"< } 单击小型编译工具栏中的“Build”按钮或按F7键,系统出现一个对话框,询问是否将此项目的工作文件夹设定源文件所在的文件夹,单击[是]按钮,系统开始编译。 单击小型编译工具栏中的“Execute Program”按钮或按Ctrl+F5键,运行刚才的程序。 程序运行后,弹出下图的窗口。

破折般有以下几种用法

破折般有以下几种用法集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

破折号一般有以下几种用法:1、表示破折号后面是解释说明的部分。 (1)各国政府——无论专制政府或共和政府都驱逐他。 (2)带工老板或者打杂的拿着一叠叠的名册,懒散地站在正门口——好像火车站剪票处一般的木栅子前面 2、表示意思的递进。 每年——特别是水灾、旱灾的时候,这些在日本厂里有门路的带工…… 3、表示意思的转换、跳跃或转折。 (1)“今天好热啊!——你什么时候去上海?” (2)我本来不想去,可是俺婆婆非叫我再去看看他——有什么看头啊! 4、表示语音的延长 (1)“小林——,我来了!”他大喊着 (2)“呜——呜——呜”小男孩大声哭起来。 (3)我们在天安门前深情的呼唤:周——总——理—— 5、表示语音较大的停顿或中断。 那个时候在无锡的人,我倒问过,可是——(表示说话中断) 破折号作用主要有: 1、表示解释说明。 例句:迈进金黄色的大门,穿过宽阔的风门厅和衣帽厅,就到了大会堂建筑的枢纽部分——中央大厅。 2、表示意思的转折及转换。 例句:到山上打柴的记忆至今都是幸福而快乐的——尽管那是童年十分辛苦的一种劳作。 例句:“好香的菜,——听到风声了吗?”赵七爷站在七斤的后面说。 3、表示意思的递进。 例句:自然是读着,读着,强记着——而且要背出来。 4、用于标明语句间的因果关系,破折号前是果,后是因。 例句:他首先指出早恋并不可耻——这是一种十分自然、正常的现象……早恋并不可爱——早结的果不甜,早开的花早谢。 5、表示声音的延长、中断或停顿。 6、表示分项列举。 7、用于副标题前。 ● 【提示】破折号与逗号都有强调的作用,一般逗号强调的是前面的内容,而破折号强调的是后面的内容。 例句:我,是第一个跑到终点的。 那就是我——一名普通的中学教师。 当语句容易引起误解时要用两个破折号。破折号前可用点号以示强调突出。 如:我有四年多,曾经常常,——几乎是每天——出入于质铺和药店 1,他们的脸却恒常浮着——像晴空,在整个雨季中我们不见它,却清晰地记得它。 2,有一个女老师——我连她的脸都记不起来了,但好象觉得她是美的。3,我立刻快乐得有有如肋下生翅一般——我平生似乎再也没有出现那么自豪的时刻。 4,泥土的大地可以成为那么美好的纸张,尖锐的利石可以成为那么流利的彩笔——我第一次懂得。 ① 语意的跃进; ② 话题的转换;③解释说明; ④ 时间或声音的延续

如何控制其他程序窗体上的窗口控件

如何控制其他程序窗体上的窗口控件 回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows 操作系统,比如其他的程序等等之类的。但是什么时候被调用却不知道了。回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数。所以很多人打比方,说回调函数还真有点像您随身带的BP 机:告诉别人号码,在它有事情时Call您! 所以一个回调函数写出来之后,一定有个注册的动作,就是告诉调用者,你怎么样找到我写的函数。某些Windows API 函数会要求以回调函数地址作为其参数之一,例如SetTimer 、LineDDA 、EnumObjects,以及我们下面要用到的EnumWindows。 在Delphi里声明一个回调函数的格式很简单,例如: function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall; 首先是函数名称可以随便乱取,但函数参数的类型一般不得乱来,其顺序,数据类型等都有规定的,因为这些都是让其他程序调用的,他们已经规定好了的,但参数名称可以随便乱叫。注意后面一定要带上“stdcall”, stdcall是标准调用,也就是说采用标准windows参数传递方式来调用函数。 编写函数体就很简单了,利用传递过来的参数就可以了,只要记住,这些参数是别人送给你的,你只要知道这些参数代表了什么意思。 再看个向调用者注册回调函数入口地址的函数。 function EnumWindows(lpEnumFunc: TFNWndEnumProc; lParam: LPARAM): BOOL; stdcall; TFNWndEnumProc其实就是指针类型。其中的lpEnumFunc就是回调函数的入口地址了。 下面是调用EnumWindows的格式: EnumWindows(@EnumWindowsProc,0); 通过向系统注册回调函数的入口地址,系统就能在需要的时候,调用回调函数,传递参数给它,也许这些参数就是我们想要的。 EnumWindows函数的功能是:枚举屏幕上所有程序中的顶层窗口,将窗口句柄以参数的形式传递给回调函数。找到一个窗口,就调用一次回调函数。枚举结束的条件是:要么枚举完所有的窗口,要么回调函数返回False。 lParam: LPARAM参数是程序定义的值,这个值被传递到回调函数。 回过头来再看一下EnumWindowsProc: function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall; 当系统找到了一个窗口后,就开始调用这个回调函数,将窗口的句柄作为第一个参数传递过来,将在EnumWindows中lParam: LPARAM这个程序定义的值作为第二个参数传递过来。 所以我们可以在EnumWindowsProc函数中利用传递过来的两个参数来做某些处理了。 下面我们新建一个程序列举系统中所有程序的顶层窗口,我们要得到窗口的标题,要得到窗口类名称。 得到窗口标题用: function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall; 该函数功能是将窗口句柄为hWnd的窗口的标题拷入到一个缓冲区lpString。nMaxCount

matlab窗口界面编辑

编辑一个窗口实现以下功能:输入几个人的成绩求其平均值,最大值,最小值 clear clc hf=figure('Color',[0,1,1],'Position',[100,200,400,200],... 'Name','成绩分析 ','NumberTitle','off','MenuBar','none'); uicontrol(hf,'Style','Text', 'Units','normalized',... 'Position',[0.03,0.8,0.35,0.1],'Horizontal','center',... 'String','输入成绩','fontsize',[14] ,'Back',[0 1 1]); uicontrol(hf,'Style',' Text ','Position',[0.4,0.8,0.25,0.1],... 'Units','normalized','Horizontal','center',... 'String','最高分', 'fontsize',[14],'Back',[0 1 1]); he1=uicontrol(hf,'Style',' Text ','Position',[0.7,0.8,0.25,0.1],... 'Units','normalized','Back',[1,1,0]); uicontrol(hf,'Style','Text','Position',[0.4,0.6,0.25,0.1],. .. 'Units','normalized','Horizontal','center',... 'String','最低分', 'fontsize',[14] ,'Back',[0 1 1]);

电机控制窗口制作

电机控制窗口制作 1)设备名称:首先添加个静态文本框,单击右键出现选择对话框,单击选择属性,出现对象属性对话框,选择属性中的字体属性,设置字体属性中的文本属性,静态填写设备名称,动态添加变量Y_NAME(为内部变量,文本变量8位字符集),更新周期为有变化时。 2)设备编号:首先添加个静态文本框,单击右键出现选择对话框,单击选择属性,出现对象属性对话框,选择属性中的字体属性,设置字体属性中的文本属性,静态填写设备编号,动态添加变量Y_KKS(为内部变量,文本变量8位字符集),更新周期为有变化时。 3):首先从图库中添加该图标,单击右键出现选择对话框,单击选择属性,出现对象 属性对话框,选择事件,选择对象事件,选择单击,单击右键,选择C动作,添加程序,程序如下: #include "apdefap.h" void Click(char* lpszPictureName, char* lpszObjectName ) { SetV isible("运行画面","电机控制帮助窗口",TRUE);} 4)设备状态:首先添加个静态文本框,单击右键出现选择对话框,单击选择属性,出现对象属性对话框,首先选择颜色属性,选择背景颜色,单击右键选择动作对话框,在表达式/公式中添加变量: GetTagBit(GetTagChar("M_SF"))+GetTagBit(GetTagChar("M_SS"))*2 其中M_SF和M_SS为内部变量,文本变量8位字符集。 数据类型:选择模拟量 表达式/公式结果: 1. 数值范围1:等于0;颜色为绿色 2. 数值范围2:等于1;颜色为红色 3. 数值范围3:等于2;颜色为绿色 4. 数值范围4:等于3;颜色为黄色

at all的四种用法

at all的四种用法 一、用于否定句 at all 用于否定句,主要是加强否定的语气,意思是:根本不,一点也不。如: It wasn’t difficult at all. 这一点也不难。 There was nothing to eat at all. 根本没什么可吃的。 That kind of belief is not at all unusual. 那种看法极为常见。 I haven’t got any idea at all about what happened. 我根本不知道出了什么事。 It’s quite extraordinary;I can’t understand it at all. 这件事太不寻常了,我根本没法理解。 Mike doesn’t enjoy classical music (very much) at all. 迈克根本就不(是很)喜欢古典音乐。 有时与hardly, few, seldom, scarcely 等半否定词连用。如: It hadly rained at all last summer. 去年夏天没怎么下雨。 It scarcely mentions women at all. 它几乎一点都未提及妇女。 注:在否定句中,at all 可位于句末,也可跟在否定词后。如: He’s not at all stupid. 他一点儿都不傻。 He isn’t tired at all. /He’s not at all tired. 他一点也不累。 另外,在口语中单独说not at all, 可用来回答感谢或道歉。如: A: Thank you very much. 多谢你了。 B: Not at all. 不客气。 A: I’m sorry to keep you waiting. 对不起,让你久等了。 B: Oh, not at all. 噢,没关系。 二、用于疑问句 at all 用于疑问句,主要加强疑问的语气,意思是:到底,究竟,难道不。如: Did you know him at all? 你究竟认识他还是不认识他? Are you at all worried about it? 你难道对此不担心吗? Have you read any of the report at all? 那份报告你到底有没有读一点? Did it play any role at all in the presidential campaign? 这件事在总统选举中到底起作用没有? 三、用于条件句 at all 用于条件句,主要用于加强if的语气,意为:假若,既然,即使,反正。如:If you do it at all, do it well. 既然要做,就把它做好。 He’ll come before supper if he comes at all. 他要是来,准在晚饭以前。 If you want to consult me at all, give me a ring. 如果你确实要和我商量,可以给我打个电话。 四、用于肯定句 at all 用于肯定句(较少见),意为:不管怎样,竟然。如: I was surprised at his coming at all. 我很奇怪,他竟然来了。 It’s a miracle that you returned at all. 你竟然回来了真是奇迹。 That he was rescued at all was a matter of coincidences. 他的获救实属巧合。 在肯定句中,尤其见于前面有any的场合,即用于强调any的意思。如: I’ll do any job at all—even road-sweeping. 什么工作我都干——扫街都行。 You can come whenever you like---any time at all. 你什么时候想来就来——无论什么时候都行。

Ie8不能弹出编辑窗口

Ie8不能弹出编辑窗口 出现这种情况是有些电脑能弹出上传框,有些电脑点了不弹出上传框,什么反应也没有。其他一切正常的情况下,如果你的电脑装了IE8的话,问题就出现在你的浏览器,后台程序对当前浏览器不兼容,用IE7或IE6就能解决问题。其主要原因是IE8禁用了anonymous()。后台编辑器的两种效果 1.不弹出上传对话框框,什么反应也没有 2.弹出对话框的效果图 步骤/方法 1.出现这种情况是有些电脑能弹出上传框,有些电脑点了不弹出上传框,什么反应也 没有。其他一切正常的情况下,如果你的电脑装了IE8的话,问题就出现在你的浏览器,后台程序对当前浏览器不兼容,用IE7或IE6就能解决问题。其主要原因是IE8禁用了anonymous()。 2.浏览器--工具选项

3.进入开发人员工具界面后选择--浏览器兼容性模式 一般情况就是IE8不会兼容,如果你的浏览器模式里面显示了其他的模式,你也可以选择,记得确定后,要刷新页面哦 注意事项 我用的是ewebeditor编辑器,以前也出现过这种问题,主要是由于ewebeditor编辑器有缺陷,换个完整的就好使了,今天也尝试换个确信能用的编辑器,但是还是不行。浏览器设置,服务器设置也检查了,程序都检查无数次了,一些组件服务在网上都下载下来装好了,还是没有找到解决的办法。在网上打开以前做的网站,也是不行,难道是我的浏览器的问题,下了一个火狐浏览器,这个浏览器不是基于IE 内核的,想想应该可以吧,当装上之后,不但不行,连网页显示的布局都变了,赶紧卸载。遇到个这么棘手的问题,真让我头大……。在网上百度一下,看了一些资

料,基本没有给出确定的答案,有个说把一个js文件editor.js修改下使其能兼容IE7和IE8就能用,照着做了,没什么反映。有的说是后台程序对当前浏览器不兼容的问题,建议吧浏览器的版本换成IE7或更低的版本,而我使用的IE浏览器,前两天才刚升级为IE8,莫非问题真是出在这?到楼下用另一台机子(IE7的浏览器)登陆后台后,果然能用,原来问题就出在这,赶紧把IE8卸掉,装上IE7,问题终于解决,哈哈~~,以后再也不装IE8了,对于我来说有点垃圾,平常上网习惯于用遨游,速度快而且自带下载软件很方便实用,很少用IE,不过用遨游其内核还是基于IE的。

CMD下打开控制面板

CMD下打开控制面板 控制面板 模块: control.exe 命令: rundll32.exe shell32.dll,Control_RunDLL 结果:显示控制面板窗口。 辅助选项 模块: access.cpl 命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5 结果:显示辅助选项/常规。 命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1 结果:显示辅助选项/键盘。 命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2 结果:显示辅助选项/声音。 命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3 结果:显示辅助选项/显示。 命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4 结果:显示辅助选项/鼠标。 添加新硬件 模块: sysdm.cpl 命令:rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1 增加新的打印机 模块:shell32.dll 命令:rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter 添加/删除程序 模块:appwiz.cpl 命令:rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1 结果:显示安装/卸载。 命令:rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1 结果:显示安装/卸载。 命令:rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2 结果:显示Windows 安装。

相关主题