### C高级编程技术详解 #### 一、文本的屏幕输出和键盘输入 ##### 1.1 文本的屏幕输出 **基本概念** - **文本方式与图形方式**: 显示器的屏幕显示通常有两种方式,文本方式和图形方式。文本方式以字符作为基本单位,而图形方式则以像素为单位。 - **文本方式下的坐标系统**: 在文本方式下,屏幕的显示单位是字符而非像素。因此,屏幕上的字符位置通常用行和列来表示。Turbo C默认的文本窗口大小为80列×25行。 - **坐标系统**: 整个屏幕的坐标原点位于左上角,即(1, 1),右下角坐标为(80, 25)。坐标系统中,X轴沿着水平方向向右延伸,Y轴沿着垂直方向向下延伸。 **文本窗口定义** - **默认文本窗口**: Turbo C默认的文本窗口覆盖整个屏幕,大小为80×25。 - **自定义文本窗口**: 用户可以通过特定函数调整文本窗口的大小。例如,`void textmode(int newmode)`函数可以用来改变文本模式。其中`newmode`参数可以指定不同的文本显示模式。 - **文本窗口属性**: 每个文本单元包括一个字符及其对应的属性,如颜色和强度。 **常用函数** - **设置文本窗口大小**: `void cbreakmode(void)`用于设置或取消文本缓冲。 - **设置文本颜色**: `void textcolor(int color)`用于设置当前文本的颜色。 - **设置背景颜色**: `void textbackground(int color)`用于设置当前背景颜色。 - **清除屏幕**: `void clrscr(void)`用于清除屏幕上的所有内容。 - **设置文本位置**: `void gotoxy(int x, int y)`用于将文本输出位置设置到指定坐标(x, y)。 **实例代码** ```c #include <conio.h> int main() { textcolor(LIGHTGRAY); // 设置文本颜色为浅灰色 textbackground(BLUE); // 设置背景颜色为蓝色 clrscr(); // 清除屏幕 gotoxy(10, 10); // 将输出位置设置到(10, 10) printf("Hello, World!"); // 输出文本 return 0; } ``` --- ##### 1.2 键盘输入 **基础知识** - **键盘事件**: 键盘输入通常涉及按键被按下或释放的事件。 - **等待按键**: `int getch(void)`函数用于获取用户按下的下一个按键,不会导致程序暂停。 - **读取特定按键**: `int kbhit(void)`函数用于检测是否有按键被按下但尚未读取。 - **处理键盘事件**: 使用上述函数可以实现简单的键盘事件处理。 **实例代码** ```c #include <conio.h> int main() { while (1) { if (kbhit()) { // 检测是否有按键被按下 char key = getch(); // 获取按键 switch (key) { case 'a': printf("Key 'A' pressed.\n"); break; case 'b': printf("Key 'B' pressed.\n"); break; default: printf("Other key pressed.\n"); } } } return 0; } ``` --- ##### 1.3 问题实现: 文本窗口的创建与切换 **问题描述** - 创建两个文本窗口,分别设置不同的前景色和背景色。 - 实现通过Tab键在两个窗口之间切换的功能。 **解决方案** 1. **创建文本窗口**: 使用`textwindow()`函数创建文本窗口。 2. **设置颜色**: 使用`textcolor()`和`textbackground()`函数设置窗口的颜色。 3. **键盘事件处理**: 通过`getch()`和`kbhit()`函数处理Tab键的输入事件。 **实例代码** ```c #include <conio.h> #include <dos.h> void setup_window(int left, int top, int right, int bottom) { textwindow(left, top, right, bottom); } int main() { setup_window(1, 1, 40, 25); // 左边窗口 textcolor(WHITE); textbackground(BLUE); clrscr(); gotoxy(10, 10); printf("Left window"); setup_window(41, 1, 80, 25); // 右边窗口 textcolor(RED); textbackground(GREEN); clrscr(); gotoxy(50, 10); printf("Right window"); while (1) { if (kbhit()) { char key = getch(); if (key == '\t') { // Tab键 delay(100); // 延迟,防止快速切换 clrscr(); gotoxy(10, 10); printf("Switched to left window."); } else if (key == '\t') { // 再次按Tab键 clrscr(); gotoxy(50, 10); printf("Switched to right window."); } } } return 0; } ``` #### 二、图形显示方式和鼠标输入 ##### 2.1 图形显示 **基础知识** - **图形模式**: 在图形模式下,屏幕的显示单位是像素而非字符。 - **坐标系统**: 图形模式下的坐标原点位于屏幕左上角,X轴和Y轴的方向与文本模式相同。 **常用函数** - **设置图形模式**: `void graphmode(int mode)`用于设置图形模式。 - **获取图形模式**: `int getgraphmode(void)`用于获取当前的图形模式。 **实例代码** ```c #include <graphics.h> int main() { int gd = DETECT, gm; initgraph(&gd, &gm, ""); // 初始化图形环境 line(100, 100, 300, 300); // 绘制直线 circle(200, 200, 50); // 绘制圆 return 0; } ``` --- ##### 2.2 鼠标的使用 **基础知识** - **鼠标事件**: 包括鼠标移动、点击等。 - **获取鼠标状态**: `struct mousestatus`结构体可以用来获取鼠标的当前位置和状态。 **常用函数** - **初始化鼠标**: `int inkey(void)`用于初始化键盘和鼠标。 - **获取鼠标状态**: `struct mousestatus getmouse(void)`用于获取当前鼠标的状态。 **实例代码** ```c #include <conio.h> #include <mouse.h> int main() { inkey(); // 初始化鼠标 struct mousestatus ms; while (1) { getmouse(&ms); // 获取鼠标状态 if (ms.bleft) { printf("Left button clicked.\n"); } } return 0; } ``` --- 通过以上内容的介绍,我们不仅深入了解了C语言中高级编程技术的相关知识点,还提供了具体的实例代码帮助理解和实践。掌握了这些技能后,开发者可以更加灵活地使用C语言进行复杂的项目开发。
- lichenchen_shanxiyda2011-11-19内容高度精炼,不到100页的内容详尽阐述了文本编辑,图形,动画,窗口,音乐,汉字等各种技术的实现方法。超级使用。pdf格式,方便阅读。
- lhjwoai2014-11-27不错,讲的东西还是很全面的 ,很干净,方便阅读
- c1dx2253182011-12-29不错 虽然页数不多 但是讲的东西还是很全面的 而且不是扫描的PDF看着很干净,内容很丰富 谢谢分享!
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一款出色的 Vue3 管理框架.zip
- 单片机原理与接口技术 单片机汇编程序设计基础 含习题答案.docx
- 单片机原理与接口技术 单片机课后习题解答.docx
- 单片机原理与接口技术 单片机汇编语言程序设计_练习.pdf
- 单片机原理与接口技术 单片机课后习题解答.pdf
- 单片机原理与接口技术 单片机练习题答案.pdf
- 单片机原理与接口技术 单片机练习题答案.docx
- 单片机原理与接口技术 单片机原理及接口技术试题.pdf
- 单片机原理与接口技术 单片机习题集及答案.docx
- 单片机原理与接口技术 汇编语言单片机考试试题和答案.docx
- 单片机原理与接口技术 适配-单片机原理与接口技术习题答案.docx
- 单片机原理与接口技术 中北大学C51单片机习题及答案.docx
- 单片机原理与接口技术 汇编语言单片机考试试题和答案.pdf
- 单片机原理与接口技术 中北大学C51单片机习题及答案.pdf
- 单片机原理与接口技术 单片机答案汇编.docx
- 单片机原理与接口技术 MCS-51单片机复习题总复习.docx