2020-04-28
啊是发说的 提供的方法有效,但在VC++6.0中GetConsoleWindow()无法通过编译
经查询并添加头文件、声明等之后均无法使用
后将GetConsoleWindow()换为FindWindow(), 亲测可用
例如:SetWindowLong(FindWindow("ConsoleWindowClass", NULL),GWL_STYLE,GetWindowLong(FindWindow("ConsoleWindowClass", NULL),GWL_STYLE) & ~WS_SIZEBOX & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX);
FindWindow()也能获取控制台窗口句柄,内含两个参数,具体可百度
参考链接:网页链接
C语言、VC++6.0编译
我曾经遇到同样的问题,在网上找不到有效具体的解决方案,后来去WSDN看了具体的文档发现一个解决方案,发到这里给遇到同样问题的人,希望能对大家有所帮助。
可以使用SetWindowLongPtrA()函数修改窗口样式:
#include <Windows.h>
SetWindowLongPtrA(
GetConsoleWindow(),
GWL_STYLE,
GetWindowLongPtrA(GetConsoleWindow(),GWL_STYLE)
& ~WS_SIZEBOX & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX
);
第一个参数获取了控制台窗口句柄
第二个参数指定修改所获得的窗口的窗口样式
第三个参数代表所想应用的窗口的具体样式,先用GetWindowLongPtrA(GetConsoleWindow(), GWL_STYLE)获取控制台窗口的原样式,再在原样式的基础上添加~WS_SIZEBOX(代表不可改变窗口大小),~WS_MAXIMIZEBOX(代表隐藏窗口右上角最大化按钮)和~WS_MINIMIZEBOX(代表隐藏窗口右上角最小化按钮)
最终得到的控制台窗口边缘无法拉动,隐藏了大小化按钮使得窗口大小不可改变(但是仍然可以通过右键窗口头选择属性进行修改)。这个函数理论上可以修改包含控制台窗口在内的Windows窗口属性。如果还有疑问的话,可以自己上WSDN查看第一手的文档。
Windows Styles 除了上面介绍的样式外其他可以修改的窗口样式
SetWindowLongPtrA function 上面介绍的函数具体定义与具体的参数解释
给你个链接吧,我就是借它的力量才做完大作业的。
http://hi.baidu.com/onlywater/blog/item/917981822ec5b8ba6d81192e.html
#include
#include
#include
void main()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
// 获取标准输出设备句柄
CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
GetConsoleScreenBufferInfo(hOut, bInfo );
// 获取窗口缓冲区信息
char strTitle[255];
GetConsoleTitle(strTitle, 255); // 获取窗口标题
printf("当前窗口标题是:%s\n", strTitle);
_getch();
SetConsoleTitle("控制台窗口操作"); // 获取窗口标题
_getch();
COORD size = {80, 25};
SetConsoleScreenBufferSize(hOut,size); // 重新设置缓冲区大小
_getch();
SMALL_RECT rc = {0,0, 80-1, 25-1}; // 重置窗口位置和大小
SetConsoleWindowInfo(hOut,true ,&rc);
CloseHandle(hOut); // 关闭标准输出设备句柄
}
还有控制台大部分语言都是支持的,毕竟编译简单还有效率。