Spójrz: dokumentacja mówi, że funkcja ta wygląda tak:
BOOL WINAPI SetConsoleScreenBufferInfoEx(
_In_ HANDLE hConsoleOutput,
_In_ PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
);
Tłumacząc na Delphi:
Function SetConsoleScreenBufferInfoEx(hConsoleOutput: HANDLE; lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX): Boolean; stdcall;
(powinno to już być przetłumaczone w module Windows
.)*
Patrzymy na pierwszy argument - uchwyt konsoli. Szybkie wyszukiwanie w Google i dowiadujemy się, że można go pobrać za pomocą funkcji GetConsoleWindow
. Załatwione.
Drugi to jakaś długa nazwa typu - znów patrzymy w dokumentację MSDN.
typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
ULONG cbSize;
COORD dwSize;
COORD dwCursorPosition;
WORD wAttributes;
SMALL_RECT srWindow;
COORD dwMaximumWindowSize;
WORD wPopupAttributes;
BOOL bFullscreenSupported;
COLORREF ColorTable[16];
} CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
(również powinno być przetłumaczone.)*
Czyżby... tak! ColorTable
na samym końcu.
Teraz tylko patrzymy, czym jest COLORREF
...
MSDN napisał(a)
When specifying an explicit RGB color, the COLORREF value has the following hexadecimal form:
0x00bbggrr
I właściwie wszystko mamy załatwione - pozostało tylko pozbierać to w całość.
`*` chociaż w Delphi 7 przykładowo tego nie ma ;p - w razie czego jednak powinieneś dać radę sobie z tym radę, wielkiej magii tutaj nie ma.