Как работает эта функция? invoke SetConsoleFont,[@si.hStdOutput],10 Помоему всё зависит от Font Family, а как на это повлиять в XP ?
Функция SetConsoleFont в MSDN почему-то не документирована. Может лучше через пару GetCurrentConsoleFontEx/SetCurrentConsoleFontEx шрифты устанавливать. GetCurrentConsoleFontEx нужна только если не знаешь чем структуры заполнять.
Да, это недокументированная функа, а SetCurrentConsoleFontEx в XP не доступна. Чтоб я моск не сломал от си, скажите мне что здесь происходит? - http://cboard.cprogramming.com/windows-programming/102187-console-font-size.html#post745508 Code (Text): for (DWORD n = 0; n < num_fonts; ++n) { fonts[n].dim = GetConsoleFontSize(hOut, fonts[n].index); if (fonts[n].dim.X == 6 && fonts[n].dim.Y == 8) Зачем надо узнавать установленный шрифт? Мне нужно установить (Lucida Console 18), зачем надо знать какой был? Обычно дефолтом идёт растровый шрифт, правда в деталях я не разбираюсь. Я еле добился установки размеров экрана консоли програмно, но теперь если будет случайный шрифт в реестре, то всё на смарку пойдёт.
Semiono Не используйте SetConsoleFont. Просто забудьте. Недокументированная - вот и не надо. Тут надо еще с реестром плотно работать, а в какое место смотреть, тоже никто не знает - не документировано. А зачем вызывается GetConsoleFontSize - потому что автору нужен консольный шрифт 6*8. Номера (используемые в SetConsoleFont) в разных системах и даже с одинаковой версией ОС означают разные шрифты. Собственно, он и ищет тот, который ему нужен. А уж Люциду, да еще и 18, вы никогда не получите таким способом. И есть у меня сму-утное подозрение, что (у вас по крайней мере, с Люцидой) все это только для того, чтобы отображать русские буквы в консоли, не используя CharToOEM - OEMToChar )) ну так их надо использовать, и не трахаться с неведомой фигней.
Вместо CharToOEM - OEMToChar можно макросы использовать, у меня на masm`e есть и хорошо работает. Или все строки расположить в отдельном инклуде и редактировать его например asmedit`oм.
Нет, я не люблю русификацию, меня это всегда мало волнует! Хотя я видел именно в темах с русификацией об этом болтали про SetConsoleFont. Я просто настроил себе большую консоль с нормальным шрифтом, чтоб удобно было. Теперь хочу зделать это универсальным для других компов, экраны ведь могут иметь разное разрешение. Lucida18 у меня для 1152x864 на мой взгляд смотриться хорошо. То есть в примере был выбор растрового шрифта, ясно, я так и думал что нужно что-то чтоб Font FAMILY установить, чтоб лусида была.
HKEY_CURRENT_USER\Console - вот. Но консольное приложение как я понимаю, сначала читает реестр, в случае если нет настроек устанавливает зашитые в cmd.exe настройки дефолт, и если в этом прилжении задать настройки реестра, то лишь при повторном запуске они сработают. Я зделал два модуля один запускает конвеером другой и первый при этом просто пишет в реестр, и передаёт коммандную строку во второй модуль, хотя это всё дурь, не люблю сложно когда. ))