⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8第八章:输出修饰(attributes).htm

📁 curses界面编程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b>goto_prev = FALSE; </b><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;</span><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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-USstyle='font-family:Tahoma'> */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp; </span><span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span><b>}<o:p></o:p></b></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>else printw(&quot;</span></b><span lang=EN-USstyle='font-family:Tahoma'>%c<b>&quot;, ch);<o:p></o:p></b></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>refresh();<span style='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></b><spanlang=EN-US style='font-family:Tahoma'><span style='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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-USstyle='font-family:Tahoma'> */<o:p></o:p></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>if(prev == '*' &amp;&amp; ch == '/')<o:p></o:p></span></b></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>attroff(A_BOLD); <span style='mso-tab-count:1'>&nbsp;&nbsp; </span></span></b><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'>*</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'>/</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'>*/<o:p></o:p></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>prev = ch;<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp; </span>}<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><b>getch();<o:p></o:p></b></span></p><p class=MsoNormal><b><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>endwin();</span></b><spanlang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </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'>Curses</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'>&nbsp; </span><b><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;</span>return 0;<o:p></o:p></b></span></p><p class=MsoNormal><b><span lang=EN-US style='font-family:Tahoma'>}<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p>&nbsp;</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'>不用去理睬那些初始化部分和其它部分<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:16">的</ins></span>废话。把注意集中在上面的这个</span><spanlang=EN-US style='font-family:Tahoma'>while</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'>/*</span><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'>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'>*/</span><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'>attroff()</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>&nbsp;</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'>getyx()</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'>move()</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'>getyx()</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'><span class=msoIns><ins cite="mailto:顾宇"datetime="2004-05-22T22:04">函数</ins></span><span class=msoIns><inscite="mailto:Simon%20Zhan" datetime="2004-02-10T22:17">其实</ins></span>是一个定义在</span><spanlang=EN-US style='font-family:Tahoma'>ncurses.h</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:17">由于</ins></span></span><span lang=EN-USstyle='font-family:Tahoma'>getyx()</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:17">通常所指的</ins></span>函数,因此我们不能向它传递指针,只可以传递一对整型变量。函数</span><spanlang=EN-US style='font-family:Tahoma'>move()</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:18">(译者注:</ins></span>在这里再强调一点:所有这些函数中使用行列坐标的时候是先<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:18">行</ins></span>列后<spanclass=msoIns><ins cite="mailto:Simon%20Zhan" datetime="2004-02-10T22:18">列</ins></span>。就是先写</span><spanlang=EN-US style='font-family:Tahoma'>y</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'>x</span><spanstyle='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:18">)</ins></span>很多初学者因为数学上的使用习惯而使用了先行后列的方式。<spanstyle='font-weight:normal !msorm'><b style='mso-bidi-font-weight:normal'><spanstyle='mso-prop-change:顾宇 20040522T2205'><span class=msoIns><inscite="mailto:顾宇" datetime="2004-05-22T22:05">(在这里一定要注意!)</ins></span></span></b></span></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>&nbsp;</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'>C</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'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p>&nbsp;</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.1 </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'>Thedetails</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'>attroff()</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'>函数以及他们的姊妹函数(</span><spanlang=EN-US style='font-family:Tahoma'>sister functions</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_get()</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'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><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'>attroff()</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'>on</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'>off</span><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'>CURSES.h</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>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b>A_NORMAL</b><spanstyle='mso-tab-count:3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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'> (</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'>)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><b>A_STANDOUT</b><spanstyle='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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'>&nbsp;&nbsp;&nbsp; </span><b>A_UNDERLINE</b><spanstyle='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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'>&nbsp;&nbsp;&nbsp; </span><b>A_REVERSE</b><spanstyle='mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><spanstyle='mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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'>&nbsp;&nbsp;&nbsp; </span><b>A_BLINK</b><spanstyle='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='mso-tab-count:1'>&nbsp;&nbsp; </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -