The problem is, the only connection between the console is a data stream of what text goes into and out of the console. The console is a separate program that is the mouth piece of you program. The issue comes when different operating systems/flavors use different consoles. There is no common "settings" channel between your program and the console program, only the text streams.
--Edit--
I forgot to mention there is a "common language" that most consoles use (excluding windows because they are special). These are ANSI escape code, which can be used to change color and cursor position. I usually don't like referencing Wikipedia but this page is very good starting point. These codes are sent over the data stream already established.
If you are going to do modal programming with the console, use NCurses on *nixen and the Windows API + windows VT escape sequences on Windows. (This is what “most” programs will do.)
||=== Build: Debug in film (compiler: GNU GCC Compiler) ===|
D:\c++woėr\film\draw.h|10|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
D:\c++woėr\film\draw.h|11|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
D:\c++woėr\film\draw.h|13|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
D:\c++woėr\film\draw.h||In function 'void setFontSize(int)':|
D:\c++woėr\film\draw.h|18|error: 'CONSOLE_FONT_INFOEX' was not declared in this scope|
D:\c++woėr\film\draw.h|19|error: 'info' was not declared in this scope|
D:\c++woėr\film\draw.h|23|error: 'SetCurrentConsoleFontEx' was not declared in this scope|
D:\c++woėr\film\draw.h||In function 'void gotoxy(int, int)':|
D:\c++woėr\film\draw.h|51|warning: narrowing conversion of 'xa' from 'int' to 'SHORT {aka short int}' inside { } is ill-formed in C++11 [-Wnarrowing]|
D:\c++woėr\film\draw.h|51|warning: narrowing conversion of 'ya' from 'int' to 'SHORT {aka short int}' inside { } is ill-formed in C++11 [-Wnarrowing]|
D:\c++woėr\film\draw.h|69|warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11|
||=== Build failed: 3 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|