Заголовка недостаточно.С другой стороны, вам действительно не нужно слишком много работать, поскольку эта страница указывает на то, что API на самом деле очень прост.Вот код C, который вам нужен:
#include <tcl.h>
#include <windows.h>
static int MySetConsoleColorCmd(
ClientData clientData, Tcl_Interp *interp,
int objc, Tcl_Obj *const objv[])
{
HANDLE hConsole;
int code;
/* Parse arguments, first for argument count, then for number format */
if (objc != 2) {
Tcl_WrongNumArgs(interp, 1, objv, "colorCode");
return TCL_ERROR;
} else if (Tcl_GetIntFromObj(interp, objv[1], &code) != TCL_OK) {
return TCL_ERROR;
}
/* Get console handle, checking for the error case */
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
if (hConsole == INVALID_HANDLE_VALUE) {
Tcl_SetResult(interp, "not a console application", TCL_STATIC);
return TCL_ERROR;
}
/* Set the color! */
SetConsoleTextAttribute(hConsole, code);
return TCL_OK;
}
/* Standard entry point for loadable library */
int Consolecolor_Init(Tcl_Interp *interp) {
Tcl_CreateObjCommand(interp, "consolecolor", MySetConsoleColorCmd,
NULL, NULL);
return TCL_OK;
}
Скомпилируйте это в DLL (у нее нет никаких причудливых зависимостей, кроме самой Tcl) под названием consolecolor.dll
(имя должно несколько соответствовать функции точки входа), а затем вы сможете использовать команду load
для импорта новой команды consolecolor
в ваш код, например:
load /path/to/consolecolor.dll
# Duplicate example from the page mentioned at the top of this answer
for {set k 1} {$k < 255} {incr k} {
consolecolor $k
puts "$k => I want to be nice today!"
}
Для получения инструкций о том, какчтобы выбрать цвета, см. эту страницу MSDN .