我正在编写一个简单的破砖程序。程序启动时如何最大化控制台窗口。
#include <iostream>
#include <windows.h>
#include <algorithm>
#include <conio.h>
#define _WIN32_WINNT 0x500
using namespace std;
int lives = 2;
void gotoxy(int x , int y);
void hideCursor();
class Grid
{
public:
char grid[20][79];
void fill()
{
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 79; j++)
{
grid [i][j] = (char)176;
}
}
}
void print()
{
gotoxy(0,0);
for(int i = 0; i < 20; i++)
{
for(int j = 0; j < 79; j++)
{
cout << grid [i][j];
}
cout << endl;
}
}
};
class Paddle
{
public:
int x_pos;
char paddle[7];
void fill()
{
x_pos = 35;
for (int i = 0; i < 7; i++)
paddle [i] = (char)219;
}
void print()
{
gotoxy (x_pos,23);
for (int j = 0; j < 7; j++)
cout << paddle [j];
}
void redraw()
{
for(int i = 0; i < 80; i++)
{
gotoxy (0+i,23);
cout << " ";
}
print();
}
};
class Ball
{
public:
int x_pos, y_pos;
bool crashed;
char ball;
void create()
{
ball = 'O';
crashed = false;
x_pos = 38;
y_pos = 22;
}
void show()
{
gotoxy (x_pos,y_pos);
cout << ball;
}
};
int main()
{
char move;
Grid grid;
Paddle paddle;
Ball ball;
grid.fill();
paddle.fill();
grid.print();
paddle.print();
ball.create();
ball.show();
hideCursor();
while(!ball.crashed)
{
move = getch();
move = getch();
if(move == 75)
paddle.x_pos--;
else if(move == 77)
paddle.x_pos++;
paddle.redraw();
}
cin.get();
return 0;
}
void hideCursor()
{
HANDLE cmd;
CONSOLE_CURSOR_INFO cur;
char *str = (char*)malloc(32);
cur.dwSize = 1;
cur.bVisible = FALSE;
cmd = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(cmd, &cur);
}
void gotoxy(int x , int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
答案 0 :(得分:2)
使用CONSOLE_FULLSCREEN_MODE标志调用SetConsoleDisplayMode()函数。
[如果你想让窗口最大化但不进入全屏模式那么它就会复杂得多,因为你必须计算在当前屏幕分辨率下完全适合屏幕的列数和行数,考虑到窗户家具的尺寸(标题,滚动条,边框)。这不是一项微不足道的任务。请参阅GetSystemMetrics(),EnumDisplayMonitors(),GetMonitorInfo(),SetConsoleScreenBufferSize()等。]
答案 1 :(得分:1)
HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd,SW_SHOWMAXIMIZED);
这对我有用(Dev - C ++)