#include <stdio.h>  
#include <stdlib.h>  
#include <Windows.h>  
#include <conio.h> 

SMALL_RECT SizeOfWindow(HANDLE hConsoleOutput)
{
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(hConsoleOutput, &info);
    return info.srWindow;
}   
   
int main()//1  
{  
    HANDLE handle_out;   
    CONSOLE_SCREEN_BUFFER_INFO info;   
    handle_out = GetStdHandle(STD_OUTPUT_HANDLE);    
    GetConsoleScreenBufferInfo(handle_out, &info);  
    SMALL_RECT rect =SizeOfWindow(handle_out); 
    COORD size={rect.Right+1,rect.Bottom+1};//2
    //SetConsoleWindowInfo(handle_out, true, &rect); 
    SetConsoleScreenBufferSize(handle_out, size);//3
    CloseHandle(handle_out);      
    return 0;  
}

1---->取消滚动条的显示

2---->定义缓冲区尺寸和窗口坐标一样大

3---->设置缓冲区尺寸,如果屏蔽了就会出现滚动条


做了一个获取控制台窗口尺寸的函数:

SMALL_RECT SizeOfWindow(HANDLE hConsoleOutput)
{
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(hConsoleOutput, &info);
    return info.srWindow;
}

应用举例:

#include <stdio.h>  
#include <stdlib.h>  
#include <Windows.h>  
#include <conio.h>   
SMALL_RECT SizeOfWindow(HANDLE hConsoleOutput); 
  
int main()  
{  
    HANDLE handle_out;             
    handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
    SMALL_RECT rc;
    system("cls");//1
    rc=SizeOfWindow(handle_out);
    printf("%d,%d,%d,%d\n",rc.Left,rc.Top,rc.Right,rc.Bottom);
    CloseHandle(handle_out);      
    return 0;  
}  
SMALL_RECT SizeOfWindow(HANDLE hConsoleOutput)
{
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(hConsoleOutput, &info);
    return info.srWindow;
}

说明:

1---->清屏函数,头文件stdlib.h


获取控制台窗口的桌面位置:

#include "stdio.h"
#include "windows.h"
void main()//1
{
    HWND hwnd=GetForegroundWindow();//2
    RECT rect;
    GetWindowRect(hwnd,&rect);//4
    printf("%d,%d\n",rect.left,rect.top);//3     
}

说明:

1---->与控制台也没什么关系

2---->获取当前活动窗口句柄

3---->输出窗口左上角坐标

4---->获得的是桌面的分辨率坐标,控制台默认的坐标是字符个数


问题:取消滚动条的窗口显示之前的一段时间会出现滚动条,如何直接出现无滚动条的窗口?

点赞(6)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

验题君 6年前 回复TA

不错不错哦