我正在尝试创建一个图形,我需要知道用户运行代码的窗口大小。我正在尝试缩放数据,因此数据只显示窗口的大小,没有包裹或滚动。我在Windows上,但我想使用类似于Linux等效的东西
int lines = atoi(getenv("LINES") ;
int cols = atoi(getenv("COLUMNS") ;
所以我可以缩放数字并显示这样的图表
320 a ============================================================
160 b ==============================
80 c ===============
40 d =======
20 e ===
10 f =
5 g
2 h
1 i
2 j
17 k ===
41 l =======
67 m ============
97 n ==================
127 o ========================
157 p =============================
191 q ====================================
227 r ===========================================
257 s ================================================
283 t =====================================================
331 u ==============================================================
367 v =====================================================================
373 w ======================================================================
379 x ========================================================================
383 y ========================================================================
389 z ==========================================================================
有什么东西适用于Windows和Linux吗?我正在使用Visual Studio 2012。
答案 0 :(得分:1)
使用 GetConsoleScreenBufferInfo 或其中一个兄弟姐妹。 您对“返回”结构的dz Size字段感兴趣。 阅读文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683171(v=vs.85).aspx
答案 1 :(得分:0)
使用GetWindowRect
RECT rect;
if(GetWindowRect(hwnd, &rect))
{
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
}
答案 2 :(得分:0)
您已经拥有适用于Linux的解决方案。
在Windows上,您需要的API调用是GetConsoleScreenBufferInfo
。
这会返回一个CONSOLE_SCREEN_BUFFER_INFO
结构,您可以从中读出dwSize
成员:
包含控制台屏幕缓冲区大小的COORD结构,以字符列和行为单位。