📄 8第八章:输出修饰(attributes).htm
字号:
mso-bidi-font-family:Tahoma'>闪动显示</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_DIM</b><spanstyle='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>半亮显示</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_BOLD</b><spanstyle='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>加亮加粗</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_PROTECT</b><spanstyle='mso-spacerun:yes'> </span><spanstyle='mso-tab-count:1'> </span></span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>保护模式</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_INVIS</b><spanstyle='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>空白显示模式</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_ALTCHARSET</b><spanstyle='mso-spacerun:yes'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>字符交替</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>A_CHARTEXT</b><spanstyle='mso-tab-count:2'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>字符掩盖</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='text-indent:21.75pt'><b><span lang=EN-USstyle='font-family:Tahoma'>COLOR_PAIR(n)</span></b><span lang=EN-USstyle='font-family:Tahoma'><span style='mso-tab-count:1'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>前景、背景色设置</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><b><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>(注:</span></b><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>经过译者试验(见试验程序</span><span lang=EN-USstyle='font-family:Tahoma'>lst01.c</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>),上述修饰中只有</span><span lang=EN-US style='font-family:Tahoma'>A_NORMAL</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>A_BLINK</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>A_DIM</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>A_INVIS</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>A_BOLD</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>A_STANDOUT</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span lang=EN-US style='font-family:Tahoma'>A_REVERSE</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>有效。且</span><span lang=EN-US style='font-family:Tahoma'>A_STANDOUT</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><spanlang=EN-US style='font-family:Tahoma'>A_REVERSE</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>具有相同的输出结果。也许是笔者的试验环境问题,也许是笔者的这个测试程序还不完备。还请读者能够在自己所使用的系统上测试,欢迎把测试结果给我。如果你有更好的测试程序,我更加希望你能通过</span><spanlang=EN-US style='font-family:Tahoma'>E-mail</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>寄给我。<b>)</b></span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>最后一个修饰是最吸引人的,它可以设置输出的字符及背景的颜色。<b>颜色</b>的设置将在后面章节详细介绍。</span><spanlang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>我们可以给一段输出同时设定多种修饰。这样可以得到多种结合的效果。如果你想反白显示字符并同时让字符闪烁。只需要在两种修饰属性间加一个“</span><spanlang=EN-US style='font-family:Tahoma'>|</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>”字符就可以了:</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-left:31.5pt;mso-para-margin-left:3.0gd'><b><spanlang=EN-US style='font-family:Tahoma'>attron(A_REVERSE | A_BLINK);<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>8.2 attron()</span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数和</span></b><b><spanlang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>attrset()</span></b><b><spanstyle='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数之比较(</span></b><b><spanlang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>attron()vs attrset()</span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)</span></b><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'><o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>现在我们该讨论讨论</span><spanlang=EN-US style='font-family:Tahoma'>attron()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数和</span><span lang=EN-US style='font-family:Tahoma'>attrset()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数之间的区别了。</span><span lang=EN-US style='font-family:Tahoma'>attrset()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>为整个窗口<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:22">设置</ins></span>一种修饰<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:22">属性</ins></span>。而</span><spanlang=EN-US style='font-family:Tahoma'>attron()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数只从被调用的地方开始<span class=msoIns><ins cite="mailto:Simon%20Zhan"datetime="2004-02-10T22:22">设置</ins></span>。所以</span><span lang=EN-USstyle='font-family:Tahoma'>attrset()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>会覆盖掉你先前为整个窗口<span class=msoIns><ins cite="mailto:Simon%20Zhan"datetime="2004-02-10T22:23">设置</ins></span>的任何修饰<span class=msoIns><inscite="mailto:Simon%20Zhan" datetime="2004-02-10T22:23">属性</ins></span>。就像在窗口的开始处开启修饰<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:23">忏悔</ins></span>,在窗口结尾处关闭修饰<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:23">属性</ins></span>一样。这两种方法为我们管理输出修饰<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:23">属性</ins></span>提供了更简单、更富有弹性的方法。但是,如果你粗心的话,可能会让整个屏幕变得十分杂乱无章<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:24">,</ins></span>函数之间的调用会难以管理。这种情况,尤其在某些利用到菜单的程序中出现的十分普遍。所以,事先做好设计,然后按照设计去实施会有效得多。你可以经常使用</span><spanlang=EN-US style='font-family:Tahoma'>standend()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数关闭所有<span class=msoIns><ins cite="mailto:Simon%20Zhan"datetime="2004-02-10T22:26">设置</ins></span>的修饰。这个函数的作用和</span><span lang=EN-USstyle='font-family:Tahoma'>attrset(A_NORMAL)</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数是相同的。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>8.3 attr_get() </span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数</span></b><b><spanlang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>(attr_get())<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'>attr_get()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数用来取得当前窗口的修饰<span class=msoIns><inscite="mailto:Simon%20Zhan" datetime="2004-02-10T22:26">属性</ins></span>设置以及背景、文字颜色。虽然这个函数不像上面的那些函数常用。但它却对检测屏幕区域的修饰<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:26">属性</ins></span>设置很有用。当我们在屏幕输出一些混合的复杂修饰效果时,这个函数可以告诉我们每一个字符关联的修饰。这个函数必须在设置了</span><spanlang=EN-US style='font-family:Tahoma'>attrset()</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>或者</span><span lang=EN-US style='font-family:Tahoma'>attron()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数之后使用。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>8.4 attr_ </span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'><span class=msoIns><inscite="mailto:Simon%20Zhan" datetime="2004-02-10T22:27">类</ins></span>函数(</span></b><b><spanlang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>attr_functions</span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)</span></b><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'><o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>这些函数都有</span><spanlang=EN-US style='font-family:Tahoma'>attr_</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的前缀,比如:</span><span lang=EN-US style='font-family:Tahoma'>attr_set()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span lang=EN-US style='font-family:Tahoma'>attr_on()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>等等……它们的作用和上面的函数一样,只不过要在调用时添加一定的参数。</span><spanlang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>8.5 wattr_ </span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'><span class=msoIns><inscite="mailto:Simon%20Zhan" datetime="2004-02-10T22:27">类</ins></span>函数(</span></b><b><spanlang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'>wattrfunctions</span></b><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)</span></b><b><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;font-family:Tahoma'><o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:Tahoma;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -