在初始化输出后获取控制台大小
Getting console size after Initialize the output
我正在创建一个跨平台的应用程序,为此我正在打开GCC/Mingw的头源代码文件,并在需要时将定义从那里复制到我的头文件。项目到目前为止运行正确,但现在出现了错误,代码是
console.c
#include<console.h>
HANDLE write_Console
int get_console_size(){
if( ( write_Console = CreateFile( "CONOUT$",
GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ |
FILE_SHARE_WRITE, 0L, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0L) ) == (HANDLE) -1
) {
printf("opened");
}
}
void console_settings_init(){
//For writing on the console
write_Console = GetStdHandle(STD_OUTPUT_HANDLE);
//For Reading from Console
read_Console = GetStdHandle(STD_INPUT_HANDLE);
// Set up the required window size:
SMALL_RECT windowSize = {0, 0, CONSOLE_WIDTH-1, CONSOLE_HEIGHT-1};
// Change the console window size:
SetConsoleWindowInfo(write_Console, TRUE, &windowSize);
// Create a COORD to hold the buffer size:
COORD bufferSize = {CONSOLE_WIDTH, CONSOLE_HEIGHT};
// Change the internal buffer size:
SetConsoleScreenBufferSize(write_Console, bufferSize);
recheck_console():
}
*如果我不写get_console_size函数,那么它会编译得很好*
但是在添加get_console_size之后,它会产生以下错误,CreateFile函数为__cdecl:
console.c:(.text+0x4a): undefined reference to `_CreateFile'
但是当我试图用__declspec(dllimport)编译它时,它产生以下错误:
console.c:(.text+0x4a): undefined reference to `__imp__CreateFile'
GCC编译命令使用:
gcc -DHAVE_CONFIG_H -I. -I.. -I../include
-nostdinc -Wall -fno-builtin -Wno-pragmas -Werror -MT
console.o -MD -MP -MF .deps/console.Tpo -c -o console.o console.c
mv -f .deps/console.Tpo .deps/console.Po
在谷歌上搜索后,我发现它是在Kernel32.dll中内置的功能。
现在,我只想验证控制台大小是否正确设置?
可以使用任何其他方法或任何其他东西来完成吗?
_imp_CreateFile和' _CreateFile函数是什么?它们在哪里定义?
如何链接windows Kernel32.dll与GCC项目?
在Windows上,那么我想你要做的事情在这里已经解释了。基本上,链接的文章调用AllocConsole
来获取一个新控制台的句柄,然后调用GetConsoleScreenBufferInfo
来获取关于控制台的元数据,比如它的宽度和高度。
相关文章:
- 如何获取控制台窗口的宽度?
- std::cin 从控制台获取两种不同的变量类型,'storing'以后使用第二种类型?
- 有没有办法将 getline() 与外部文本文件一起使用,然后重新获得 cin 的控制权以从控制台获取输入?
- 从 R 控制台获取用户输入:Rcpp 和 std::cin
- 如何使用字符串获取用户控制台输入
- 控制台在获取整数后暂停
- 如何阻止 cin.getline() 导致控制台在找不到分隔符时重复获取用户输入?
- C 程序在获取输入[控制台应用程序]时跳过行
- 从用户控制台获取输入 - Java 代码
- 防止Visual Studio C++控制台立即退出,而无需系统("pause")或额外的获取
- 从控制台获取的每 30 秒输入后,从 Vector 中逐个删除数字
- 如何从 win32 控制台应用程序获取输入
- 全屏获取c ++程序的输出.它是控制台输出窗口的目标代码
- 如何获取类似 QIODevice 的控制台输入信号 (stdin)
- 从控制台应用中的命令行参数获取文件名C++
- 可视化 如何获取 C++ 控制台应用程序输出并将其写入文本文件
- 如何在C++中的Xcode 4中从控制台获取输入
- 在C++中从控制台获取触发器
- 从控制台获取字符串,但不知道长度
- 当从控制台获取该行作为输入但处理文件时,Istringstream不工作