Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кнопки на панели инструментов больше 256 цветов, В Windows 7 кнопки урезанные снизу 
:(
    Опции темы
AZNMABS
Дата 8.2.2014, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.9.2013

Репутация: нет
Всего: нет



Создаю MFC приложение на базе диалога с панелью инструментов, где кнопки имеют размер 32х32 и количество цветов 256 и более. При создании такой панели следовал вот этой статье mfc toolbar with 256 colors 32x32 icons
Проблема вот в чем. В Windows XP панель отображается нормально. А в Windows 7 кнопки на панели выводятся урезанными снизу. Никак не пойму в чем дело? Может кто сталкивался с это проблемой?



Это сообщение отредактировал(а) AZNMABS - 8.2.2014, 16:32

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  picture2.jpg 3,54 Kb
PM MAIL   Вверх
cppGhost
Дата 14.2.2014, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.4.2013

Репутация: нет
Всего: нет



Первое, что могу сказать по опыту без сильной нужды не стоит впихивать тулбар на диалог. Так как эта штука больше предназначена для фреймов. То есть как вариант могу предложить следующий механизм:

создаем приложение основанное на фрейме, делаем фрейму обычный тулбар, а в качестве view для фрейма берем CFormView (который представляет из себя как раз диалог). 

p.s. еще меня смущает вот эта строка в той статье
Код

m_Toolbar.SetHeight(0);

как бы высота, устанавливаемая в 0, выглядит странно

p.p.s вот тут вот механизм внедрения тулбара на диалог немного навороченнее =))


Это сообщение отредактировал(а) cppGhost - 14.2.2014, 16:24
PM MAIL   Вверх
AZNMABS
Дата 14.2.2014, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.9.2013

Репутация: нет
Всего: нет



Первое, что я делал, это пробовал менять именно
Код

m_Toolbar.SetHeight(0);

Например, ставил 32, т.к. размеры кнопок 32х32. Никаких изменений.
Интересно, что если устанавливать больше чем 32, то кнопки начинают урезаться и в Windows XP!!
Казалось бы должно быть наоборот, т.е. высоты кнопок должны были бы увеличиваться!
Спасибо за ссылку, но это не совсем то, что мне надо. Я не зря подчеркивал в теме, что кнопки имеют цветность больше чем 256. 
Там используется
Код

LoadToolBar(IDR_TOOLBAR1)

Но, к сожалению, "нормальный" тулбар создать не удается. Дело в том, что в этом случае при попытке создать тулбар из импортированного bitmap (меню Image-Toolbar Editor) и вставке изображения кнопки в тулбар, студия не позволяет сделать это. Точнее, она всегда спрашивает "Would you like the bitmap enlarged?". И тут как ни отвечай, студия "портит" изображение, т.е. при запуске приложения кнопки имеют ну просто  ужаснейший вид.
Поэтому я и использую загрузку в тулбар изображений кнопок прямо из bitmap
Код

    m_bitmapToolbar.LoadBitmap(IDB_BITMAP1);
    m_Toolbar.SetBitmap((HBITMAP)m_bitmapToolbar);
........................................................................................

PM MAIL   Вверх
cppGhost
Дата 17.2.2014, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.4.2013

Репутация: нет
Всего: нет



Не знаю актуально ли еще, но тулбар с картинками больше 256 цветов я делаю постоянно (правда для cmainframe, но думается мне что принцип везде одинаковый). Вот стандартные шаги

1) В ресурсах создаем тулбар
2) В этом тулбаре создаем кнопки (сколько нам нужно). Картинки прорисовывать не нужно, достаточно карандашом нарисовать, чтобы самому было понятно. Главное - это для каждой кнопки задать осмысленный ID
3) Где-нить в фотошопе подготавливаем картинку для тулбара. Если тулбар 32х32 и 5 иконок, то картинка должна быть 160х32 (надеюсь понятно)
4) В месте, где создаем тулбар пишем примерно следующее
Код

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_LIMITS_STRUCTURE))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

    CBitmap bmpToolBarImage;

    bmpToolBarImage.LoadBitmap(IDB_LIMITS_STRUCTURE);
    m_ilToolBarImage.Create(32, 32, ILC_COLOR24 | ILC_MASK, 0, 100);
    m_ilToolBarImage.Add(&bmpToolBarImage, RGB(192, 192, 192));
    bmpToolBarImage.DeleteObject();
    m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ilToolBarImage);

и все. когда запускаем программу, то тулбар будет с нормальными картинками. нюансы в коде есть, но если что-то не понятно, то спрашивайте. буду просматривать эту тему =))
PM MAIL   Вверх
AZNMABS
Дата 23.2.2014, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.9.2013

Репутация: нет
Всего: нет



Здравствуйте cppGhost, почему-то не пришло уведомление о Вашем ответе. Сегодня зашел совсем по другому поводу и увидел Ваш ответ.
В общем, я попробовал сделать так, как Вы писали и для диалога и для cmainframe. Кнопки на панели инструментов повляются, но без изображений. Прикрепил скриншоты.

Это сообщение отредактировал(а) AZNMABS - 23.2.2014, 15:35

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  2.jpg 18,45 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.3228 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.