• 大小: 93KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: 其他
  • 标签: c语言  

资源简介

文本菜单,但不是dos环境的,比较直观,有输出报表功能,运行后可以用鼠标操作,直接代码文件,报告什么的就不传了。

资源截图

代码片段和文件信息

#include“htt.h“
int main()
{
    COORD size = {SCR_COL SCR_ROW};              /*窗口缓冲区大小*/

    gh_std_out = GetStdHandle(STD_OUTPUT_HANDLE); /* 获取标准输出设备句柄*/
    gh_std_in = GetStdHandle(STD_INPUT_HANDLE);   /* 获取标准输入设备句柄*/

    SetConsoletitle(gp_sys_name);                 /*设置窗口标题*/
    SetConsoleScreenBufferSize(gh_std_out size); /*设置窗口缓冲区大小80*25*/

    LoadData();
    InitInterface();          /*界面初始化*/
    RunSys(&head);             /*系统功能模块的选择及运行*/
    CloseSys(head);            /*退出系统*/

    return 0;
}


/**
 * 函数名称: InitInterface
 * 函数功能: 初始化界面.
 * 输入参数: 无
 * 输出参数: 无
 * 返 回 值: 无
 *
 * 调用说明:
 */
void InitInterface()
{
    WORD att = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY
               | BACKGROUND_BLUE;  /*黄色前景和蓝色背景*/

    SetConsoleTextAttribute(gh_std_out att);  /*设置控制台屏幕缓冲区字符属性*/

    ClearScreen();  /* 清屏*/

    /*创建弹出窗口信息堆栈,将初始化后的屏幕窗口当作第一层弹出窗口*/
    gp_scr_att = (char *)calloc(SCR_COL * SCR_ROW sizeof(char));/*屏幕字符属性*/
    gp_top_layer = (layer_NODE *)malloc(sizeof(layer_NODE));
    gp_top_layer->layerNo = 0;      /*弹出窗口的层号为0*/
    gp_top_layer->rcArea.Left = 0;  /*弹出窗口的区域为整个屏幕窗口*/
    gp_top_layer->rcArea.Top = 0;
    gp_top_layer->rcArea.Right = SCR_COL - 1;
    gp_top_layer->rcArea.Bottom = SCR_ROW - 1;
    gp_top_layer->pContent = NULL;
    gp_top_layer->pScrAtt = gp_scr_att;
    gp_top_layer->next = NULL;

    ShowMenu();     /*显示菜单栏*/
    ShowState();    /*显示状态栏*/

    return;
}

/**
 * 函数名称: ClearScreen
 * 函数功能: 清除屏幕信息.
 * 输入参数: 无
 * 输出参数: 无
 * 返 回 值: 无
 *
 * 调用说明:
 */
void ClearScreen(void)
{
    CONSOLE_SCREEN_BUFFER_INFO bInfo;
    COORD home = {0 0};
    unsigned long size;

    GetConsoleScreenBufferInfo( gh_std_out &bInfo );/*取屏幕缓冲区信息*/
    size =  bInfo.dwSize.X * bInfo.dwSize.Y; /*计算屏幕缓冲区字符单元数*/

    /*将屏幕缓冲区所有单元的字符属性设置为当前屏幕缓冲区字符属性*/
    FillConsoleOutputAttribute(gh_std_out bInfo.wAttributes size home NULL);

    /*将屏幕缓冲区所有单元填充为空格字符*/
    FillConsoleOutputCharacter(gh_std_out ‘ ‘ size home NULL);

    return;
}

/**
 * 函数名称: ShowMenu
 * 函数功能: 在屏幕上显示主菜单 并设置热区 在主菜单第一项上置选中标记.
 * 输入参数: 无
 * 输出参数: 无
 * 返 回 值: 无
 *‘

 * 调用说明:
 */
void ShowMenu()
{
    CONSOLE_SCREEN_BUFFER_INFO bInfo;
    CONSOLE_CURSOR_INFO lpCur;
    COORD size;
    COORD pos = {0 0};
    int i j;
    int PosA = 2 PosB;
    char ch;

    GetConsoleScreenBufferInfo( gh_std_out &bInfo );
    size.X = bInfo.dwSize.X;
    size.Y = 1;
    SetConsoleCursorPosition(gh_std_out pos);
    for (i=0; i < 5; i++) /*在窗口第一行第一列处输出主菜单项*/
    {
        printf(“  %s  “ ga_main_menu[i]);
    }

    GetConsoleCursorInfo(gh_std_out &lpCur);
    lpCur.bVisible = FALSE;
    SetConsoleCursorInfo(gh_std_out &lpCur);  /*隐藏光标*/

    /*申请动态存储区作为存放菜单条屏幕区字符信息的缓冲区*/
    gp_buff_menubar_info = (CHAR_INFO *)malloc(size.X * size.Y * sizeof(CHAR_INFO));
    SMALL_RECT rcMenu = {0 0 size.X-1 0} ;

    /*将窗口第一行的内容读入到存放菜单条屏幕区字符信息的缓

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-17 08:42  HTT\
     文件        1076  2013-10-18 22:59  HTT\HTT.cbp
     文件        1257  2014-07-17 08:38  HTT\HTT.depend
     文件         346  2014-07-17 08:42  HTT\HTT.layout
     目录           0  2014-05-17 10:44  HTT\bin\
     目录           0  2014-07-17 08:42  HTT\bin\Debug\
     文件      102366  2014-07-17 08:42  HTT\bin\Debug\HTT.exe
     文件        9209  2013-10-23 17:55  HTT\htt.h
     文件      125382  2014-07-17 08:42  HTT\main.c
     目录           0  2014-01-17 21:59  HTT\obj\
     目录           0  2014-07-17 08:42  HTT\obj\Debug\
     文件      108416  2014-07-17 08:42  HTT\obj\Debug\main.o

评论

共有 条评论