Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > GUILib она же GUIToolKit


Автор: zkv 12.1.2007, 07:57
  Здравствуйте!
  Требуется разработать несколько нестандартный интерфейс, конкретно: выезжающие панельки,  как в Visual Studio, кнопки на тулбаре с возможностью выбора нескольких пунктов (т.е. кнопка, рядом стрелочка, жмем на стрелку - там выпадающий список с вариантами), быстрый предпросмотр (thumbnail) изображений как в ACDSee. 
Вот захотелось использовать что нибудь готовое, выбор пал на GUILib, довольно привлекательные там примеры, но вот реализовать что нибудь свое оказалось совсем не просто, даже приведенные примеры не все собираются, не говоря о том, чтобы собрать свой проект.
 В чем заключаются трудности могу рассказать, если кому то будет интересно smile
 Может знает кто, где можно что-нибудь почитать про неё, или может быть существует что-либо более подходящее для моих задач (желательно бесплатное smile )? 
 Заранее благодарен.

Автор: zkv 14.1.2007, 05:01
так понял, что самому придется разбираться smile 
вроде как кое-чего начало получаться, но вот первая проблема - при попытке вывести специфические заголовки контролов на русском рисуются каракули, в чем дело нашел - используются шрифты (или только один, не знаю пока наверняка smile ) не поддерживающие кириллицу (если кто столкнется - ищите в файлах библиотеки ключевые слова Verdana, CreateFont, и т.п.). 

Вопрос вот в чем, можно ли как-нибудь получить список шрифтов, установленных в системе, которые поддерживают кириллицу? 

Или хотя бы можно определить, поддерживает конкретный шрифт кириллицу или нет?  
(вопрос задаю, исходя из предположения, что на одном компе шрифт может поддерживать кириллицу, а на другом компе шрифт с тем же названием ее  (кириллицу) поддерживать не будет)
  
Или может существует некий перечень кириллистических smile шрифтов, которые обязаны быть в каждой Windows?
    
       Заранее благодарю.
PS просто дефолтный шрифт совсем не вписывается в картину 

Автор: Earnest 15.1.2007, 19:12
Про библиотеку ничего не знаю, а у фонта можно спросить информацию в виде LOGFONT, там есть lfCharSet, так он должен быть RUSSIAN_CHARSET вроде. Но если DEFAULT_CHARSET, а система русская, то тоже оно.

Нет таких кириллических фонтов, которые обязаны быть в каждой Windows - на фига, скажем, китайцам кириллица. Чем кириллица лучше "японницы"?

Автор: zkv 17.1.2007, 17:13
Цитата(Earnest @  15.1.2007,  19:12 Найти цитируемый пост)
Нет таких кириллических фонтов, которые обязаны быть в каждой Windows - на фига, скажем, китайцам кириллица. Чем кириллица лучше "японницы"?

Прошу прощения за неточность. Я имел ввиду русифицированные Windows'ы. Я полагаю, что в них должен быть по крайней мере один кириллистический   фонт - "System" (или я ошибаюсь?), может просто существует некоторый дефолтный набор  кириллистических  фонтов?

А можно в программу вшить нужный мне фонт, и использовать, так чтобы не устанавливать его в систему? (вполне устроит ответ да/нет) Просто просить пользователя установить шрифт в систему, думаю, не самое изящное решение.

Earnest, вот вы, как краевед smile, в конечном итоге, что посоветовали бы, если очень не хочется использовать дефолтный шрифт? 

PS господа модераторы, не стал создавать новую тему, так как посчитал, что вопрос напрямую был связан с созданной темой, если я был не прав, то просто намекните - и я больше так не буду smile

Автор: Earnest 18.1.2007, 11:05
А Default font тебе не нравится, потому что он жирный? Тогда используй другой стандартный, скажем, ANSI_VAR_FONT - я имею в виду значение, которое передают в GetStockObject. Если Windows русифицирована, все стандартные шрифты должны поддерживать кириллицу (вроде). 
Я, честно говоря, никогда не парюсь с конкретными шрифтами. Если нужно определять фонт вообще с пустого места (не у кого спросить), спрашиваю у системы: SystemParametersInfo, и как-то с проблемами не сталкивалась. Например: 
Код

    NONCLIENTMETRICS ncm;
    ncm.cbSize = sizeof(NONCLIENTMETRICS);
    VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
    // ncm.lfMessageFont - содержит описание шрифта

Автор: zkv 26.1.2007, 10:55
Earnest, громадное спасибо за участие и помощь. 
Вообщем с либой кое как разобрался (с теми частями, которые интересовали), оставлю напоследок мнение. 

Минусы:
- отсутствие какого либо руководства по использованию
- почти полное отсутствие комментариев, те немногие присутствующие на испанском или итальянском, не знаю даже точно smile
- как следствие предыдущих пунктов, выяснить какой метод что делает можно в большинстве случаев только изучением кода и методом тыка.
- попадаются явные и неявные (возможно я чего то не уловил) огрехи в коде, например попадалась строка типа: ~CClassName::CClassName()...

Плюс:
- то что удается заставить работать smile, работает вроде без косяков, хотя есть непонятные места - то ли баг, то ли фича
- весь код открыт, можно (вернее приходится smile ) изучать и подправлять все что угодно
- На мой взгляд, довольно наглядные примеры, но увы, охватывают далеко не все особенности
- имена классов, методов и членов данных, в основном довольно информативны, хотя встречается иногда что-нибудь на подобие: 
Код

int m_minSize;
int m_minSize1;


Вообщем сложилось впечатление, что либа была написана для личного пользования, потом на быструю руку написали примеры, и в таком виде выложили. О том, чтобы облегчить жизнь тем, кто с ней будет разбираться никто не задумывался - это не упрек, понятно что "as is", просто факт.
Надеюсь кому нибудь эти заметки помогут smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)