📄 5第五章:窗口系统简介(a word about windows).htm
字号:
div.Section1 {page:Section1;}--></style><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}</style><![endif]--></head><body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'><div class=Section1 style='layout-grid:15.6pt'><h3><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>第五章:窗口机制简介(</span><span lang=EN-US>AWord about Windows</span><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)</span></h3><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" datetime="2004-02-05T19:44">进</ins></span>入数以<spanclass=msoIns><ins cite="mailto:simon" datetime="2004-02-05T19:44">万</ins></span>计的</span><spanlang=EN-US style='font-family:Tahoma'>NCURSES</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'>windows</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)的知识。关于窗口机制的详细信息我们会在以后的章节中详细介绍。这一章只是一些基础的知识,为了给<spanclass=msoIns><ins cite="mailto:simon" datetime="2004-02-05T19:36">讲解</ins></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> </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'>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'>Windows</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</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'>stdscr</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'>80</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'>25</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>行的屏幕(根据显示器或者显卡的不同,可能会出现不同的大小)如果你运行简单的任务,比如打印几个字<spanclass=msoIns><ins cite="mailto:simon" datetime="2004-02-05T19:36">符</ins></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> </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'><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-family:Tahoma'><spanstyle='mso-tab-count:1'> </span>printw(“Hi!There!”);<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-tab-count:1'> </span>refresh();<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><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'>stdscr</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'>Hi!There!</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'>refresh()</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'>stdscr</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><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'>win</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'>w</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> </o:p></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>wprintw(win, "Hi There !!!");<o:p></o:p></span></b></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>wrefresh(win);<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><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> </o:p></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>printw(string);</span></b><span lang=EN-USstyle='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><spanstyle='mso-spacerun:yes'> </span><span style='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><spanlang=EN-US style='font-family:Tahoma'>stdscr</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'>string */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>mvprintw(y, x, string);<spanstyle='mso-tab-count:1'> </span><spanstyle='mso-spacerun:yes'> </span><span style='mso-tab-count:1'> </span></b>/*</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'>string</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'>(y,x)</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>处</span><span style='font-family:Tahoma'> <span lang=EN-US>*/<o:p></o:p></span></span></p><p class=MsoNormal><span lang=EN-US style='font-family:Tahoma'><spanstyle='mso-spacerun:yes'> </span><b>wprintw(win, string);</b><spanstyle='mso-tab-count:1'> </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'>win</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'>string */<o:p></o:p></span></p><p class=MsoNormal style='text-indent:21.0pt'><b><span lang=EN-USstyle='font-family:Tahoma'>mvwprintw(win, y, x, string);<o:p></o:p></span></b></p><p class=MsoNormal style='text-indent:21.0pt'><span lang=EN-USstyle='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'>win</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'>(y,x)</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'>string */<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'>w</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'>stdscr</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'><o:p></o:p></span></p></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -