浏览代码

Merge pull request #2357 from JeppeSS/sys-windows-additions

Added missing Windows functions for console manipulation
gingerBill 2 年之前
父节点
当前提交
99e2f0c91e
共有 2 个文件被更改,包括 21 次插入0 次删除
  1. 3 0
      core/sys/windows/kernel32.odin
  2. 18 0
      core/sys/windows/types.odin

+ 3 - 0
core/sys/windows/kernel32.odin

@@ -370,6 +370,9 @@ foreign kernel32 {
 	GenerateConsoleCtrlEvent :: proc(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD) -> BOOL ---
 	FreeConsole :: proc() -> BOOL ---
 	GetConsoleWindow :: proc() -> HWND ---
+	GetConsoleScreenBufferInfo :: proc(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO) -> BOOL ---
+	SetConsoleScreenBufferSize :: proc(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL ---
+	SetConsoleWindowInfo :: proc(hConsoleOutput: HANDLE, bAbsolute : BOOL, lpConsoleWindow: ^SMALL_RECT) -> BOOL ---
 
 	GetDiskFreeSpaceExW :: proc(
 		lpDirectoryName: LPCWSTR,

+ 18 - 0
core/sys/windows/types.odin

@@ -3884,3 +3884,21 @@ COORD :: struct {
 	X: SHORT,
 	Y: SHORT,
 }
+
+SMALL_RECT :: struct {
+	Left: SHORT,
+	Top: SHORT,
+	Right: SHORT,
+	Bottom: SHORT,
+}
+
+CONSOLE_SCREEN_BUFFER_INFO :: struct {
+	dwSize: COORD,
+	dwCursorPosition: COORD,
+	wAttributes: WORD,
+	srWindow: SMALL_RECT,
+	dwMaximumWindowSize: COORD,
+}
+
+
+PCONSOLE_SCREEN_BUFFER_INFO :: ^CONSOLE_SCREEN_BUFFER_INFO