C语言节制台窗口图形界面编程之一
本系列文章改编自《C语言节制台窗口界面编程(批改版)》。本系列文章会丢弃一些原文中难解难领略且不常用的部门,并修改了部门样例措施。只为了越发清晰地进修C语言的节制台窗口界面编程。而想要越发深入的相识本系列文章,请阅读《C语言节制台窗口界面编程(批改版)》。
《C语言节制台窗口界面编程(批改版)》下载地点:http://download.csdn.net/detail/jzqt_t/7471013
在Windows操纵系统下用C语言编写节制台的窗口界面首先要获取当前尺度输入和尺度输出设备的句柄。通过挪用函数GetStdHandle可以获取当前尺度输入以及输出设备的句柄。函数原型为:
HANDLE GetStdHandle(DWORD nStdHandle); /* 个中,nStdHandle可以是 STD_INPUT_HANDLE 尺度输入设备句柄 STD_OUTPUT_HANDLE 尺度输出设备句柄 STD_ERROR_HANDLE 尺度错误设备句柄 */
本栏目
需要说明的是,“句柄”是Windows最常用的一个观念。它凡是用来标识Windows资源(如菜单、 图标、窗口等)和设备等工具。固然可以把句柄领略为是一个指针变量范例,但它不是工具地址的地点指针,而是作为Windows系统内部表的索引值来利用 的。挪用相关文本界面节制的API函数。这些函数可分为三类。一是用于节制台窗口操纵的函数(包罗窗口的缓冲区巨细、窗口前景字符和配景颜色、窗口标题、巨细和位置等);二是用于节制台输入输出的函数(包罗字符属性操纵函数);其他的函数并为最后一类。通过挪用CloseHandle函数来封锁输入输出句柄。
示例措施:
#include <stdio.h> #include <windows.h> #include <conio.h> int main(int argc,char *argv[]) { HANDLE handle_out; //界说一个句柄 CONSOLE_SCREEN_BUFFER_INFO screen_info; //界说窗口缓冲区信息布局体 COORD pos = {0, 0}; //界说一个坐标布局体 handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //得到尺度输出设备句柄 GetConsoleScreenBufferInfo(handle_out, &screen_info); //获取窗口信息 _getch(); //输入一个字符,不会显示到屏幕上 /* 向整个缓冲区填充字符'A' 个中填充的开始处为pos,坐标为{0, 0},也就是屏幕最左上角的字符处 填充个数为screen_info.dwSize.X(缓冲区宽度,也就是横坐标) * screen_info.dwSize.Y(缓冲区高度,也就是纵坐标) 因此可以到达向整个缓冲区填充字符'A'的结果 */ FillConsoleOutputCharacter(handle_out, 'A', screen_info.dwSize.X * screen_info.dwSize.Y, pos, NULL); CloseHandle(handle_out); //封锁尺度输出设备句柄 return 0; }
//措施中,COORD和CONSOLE_SCREEN_BUFFER_ INFO是wincon.h界说的节制台布局体范例 //原型如下 //坐标布局体 typedef struct _COORD { SHORT X; SHORT Y; }COORD; //节制台窗口信息布局体 typedef struct _CONSOLE_SCREEN_BUFFER_INFO { COORD dwSize; //缓冲区巨细 COORD dwCursorPosition; //当前光标位置 WORD wAttributes; //字符属性 SMALL_RECT srWindow; //当前窗口显示的巨细和位置 COORD dwMaximumWindowSize; // 最大的窗口缓冲区巨细 }CONSOLE_SCREEN_BUFFER_INFO;
还需要说明的是,固然在C++中,iostream.h界说了cin和cout的尺度输入和输出流工具。但它们只能实现根基的输入输出 操纵,对付节制台窗口界面的节制却无能为力,并且不能与stdio.h和conio.h友好相处,因为iostream.h和它们是C++两套差异的输入 输出操纵方法,利用时要出格留意。
(
jzqt_t
)
From:cnblogs 龙梦之痕