簡體   English   中英

C ++如何獲取窗口大小(寬度和高度)?

[英]C++ How to get the window size (width and height)?

我正在嘗試創建一個圖形,我需要知道用戶在其中運行代碼的窗口的大小。我正在嘗試縮放數據,以便數據僅在窗口的大小上顯示,而沒有環繞或滾動。 我在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。

使用GetWindowRect

RECT rect;
if(GetWindowRect(hwnd, &rect))
{
  int width = rect.right - rect.left;
  int height = rect.bottom - rect.top;
}

使用GetConsoleScreenBufferInfo或其同級之一。 您被“返回”結構的dzSize字段困住了。 在此處閱讀文檔: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/ms683171(v=vs.85).aspx

您已經有Linux解決方案。

在Windows上,您需要的API調用是GetConsoleScreenBufferInfo

這將返回CONSOLE_SCREEN_BUFFER_INFO結構,您從中讀取dwSize成員:

一個COORD結構,其中包含控制台屏幕緩沖區的大小(以字符列和行表示)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM