c++ 绘制方框

知识点:
GetStdHandle函数
FillConsoleOutputCharacter函数
SetConsoleCursorPosition函数
system函数
 

一、 GetStdHandle 获取标准设备句柄 :  
 HANDLE GetStdHandle(   DWORD nStdHandle   );  
 GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。  
 其参数nStdHandle的值为下面几种类型的一种:  
 值含义  
 STD_INPUT_HANDLE   标准输入的句柄  
 STD_OUTPUT_HANDLE 标准输出的句柄   
  STD_ERROR_HANDLE  标准错误的句柄 
二、FillConsoleOutputCharacter 填充字符
BOOL FillConsoleOutputCharacter(

HANDLE hConsoleOutput, // 缓冲区句柄 一般通过
GetStdHandle(STD_OUTPUT_HANDLE)获取
TCHAR cCharacter,      // 要填充的字符 
DWORD nLength,         // 填充的字符数量  
COORD dwWriteCoord,    // 填充的起始坐标x,y 
LPDWORD lpNumberOfCharsWritten 
  // 返回一个写入数量的指针

 );


三、SetConsoleCursorPosition 移动光标位置
BOOL SetConsoleCursorPosition(
 
    HANDLE hConsoleOutput,   //缓冲区句柄 一般通过
GetStdHandle(STD_OUTPUT_HANDLE)获取
  
                  COORD dwCursorPosition   // 指定新的光标位置
                           );

四、设置当前光标位置 gotoxy(int x, int y);
   //之前需要用字符填满窗口缓冲区
  1、获取当前输出缓冲区句柄 GetStdHandle
  2、设置当前光标位置(x,y)   SetConsoleCursorPosition

   
五、用system命令设置颜色和标题
system("title 郁金香灬老师:QQ150330575"); //设置标题
system("color 0A"); //设置颜色
六、绘制方框
  1、确定左上角坐标X,Y //画边前先用空格填满窗口缓冲区
  2、画上边
  3、画下边
  4、画左边
  5、下右边
 

 
作业:
A、探讨以下2个控制台函数的使用方法:
1、GetConsoleTitle 获取控制台窗口标题
2、SetConsoleTitle 设置控制台窗口标题
B、绘制一个2*2的表格 : 类似下图
    
    






#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h> 
#include <time.h>
#include "hello.h"
#include <share.h>
#include <Windows.h>

//清屏
void cls_screen(char a)
{
    COORD xy={0,0};
    long byw;
    HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
    FillConsoleOutputCharacter(hout,a,2000,xy,&byw);
}
//#define  var 333;
void gotoxy(int x,int y)
{
    COORD xy={0,0};
     
    HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
    xy.X=x;
    xy.Y=y;
    SetConsoleCursorPosition(hout,xy);
}
//绘制方框
#define X 22
#define Y 6
void drawM(void)
{ int i,j;
    //到达x,y
    gotoxy(X,Y);
    //上边--------------------
    printf("");
    for (i=0;i<=12;i++)
    {
        printf("");
    }
    printf("");
    //左边
 
    for (i=0;i<15;i++)
    { 
        gotoxy(X,Y+1+i);
        printf("");
    }
    //右边
     
    for (i=0;i<15;i++)
    { 
        gotoxy(X+28,Y+1+i);
        printf("");
    }
    //下边
    gotoxy(X,Y+16);
    //上边--------------------
    printf("");
    for (i=0;i<=12;i++)
    {
        printf("");
    }
    printf("");

}
int main(void)
{   system("title QQ150330575");
    system("color 0a");
    system("dir");
    cls_screen(' ');//清屏;
    cls_screen(' ');//;
    gotoxy(3,2);
    //绘制方框
    drawM();
    getchar();
    getchar();
    return 0;
}

 

posted @ 2016-12-12 15:58  whzym111  阅读(3749)  评论(0编辑  收藏  举报