На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Иконки в тулбаре на Вин 7 и 8 не прорисоваваются , На Вин-10 норамльно
    Прикреплённая картинка
    Прикреплённая картинка
    Добрый день!
    Не могу понять, почему самодельные иконки (которые сам нарисовал в фотошопе и сконвертировал в ico через Ico Converter) не прорисовываются в тулбаре на винде 7 и 8, а на десятке всё нормально, посмотрите прикрепленный скриншот (слева на вин-10, справа на вин-7).
    Хотя те же самые иконки нормально прорисовываются в окне буферов А и В ниже тулбара.
    Может кто подскажет почему так?

    Добавлено
    Почему-то несколько картинок прикрепилось...
    Сообщение отредактировано: vot -
      Можешь сделать синтетический пример с одним только тулбаром и выложить сюда?
        Цитата Timon K @
        Не могу понять, почему самодельные иконки (которые сам нарисовал в фотошопе и сконвертировал в ico через Ico Converter) не прорисовываются в тулбаре на винде 7 и 8

        InitCommonControls() использовал ?
          Цитата Majestio @
          Можешь сделать синтетический пример с одним только тулбаром и выложить сюда?

          Т.е. оставить часть своего кода без всего остального? Наверное смогу, но только как быстро, вот вопрос...

          Добавлено
          Цитата ЫукпШ @
          InitCommonControls() использовал ?

          Нет
            Цитата ЫукпШ @
            InitCommonControls() использовал ?

            Только тогда уж InitCommonControlsEx()
              Цитата Majestio @
              Только тогда уж InitCommonControlsEx()

              Завтра на работе смогу попробовать, т.к. дома нет компьютеров со старой виндой.
              Но вот вопрос - почему иконка с дискетой (сохранение) работает без проблем? На скриншоте видно, что она полностью прорисована и там и там, да ещё и как в активном, так и выключенном состоянии.
                Какой размер у этих иконок? См. GetSystemMetrics(SM_CXICON / SM_CYICON)
                  Цитата macomics @
                  Какой размер у этих иконок?

                  16х16
                    Цитата Timon K @
                    Но вот вопрос - почему иконка с дискетой (сохранение) работает без проблем? На скриншоте видно, что она полностью прорисована и там и там, да ещё и как в активном, так и выключенном состоянии.

                    Я вспомнил, начинал я когда-то проект на Си, но потом как-то забросил. Осталось на уровне заготовки. Сейчас проверил - у меня под виндой и 7, и 10 - все отрисовывается норм. Выглядит это пока так:
                    Прикреплённая картинка
                    Прикреплённая картинка

                    В общем, прикрепляю проект - полазь, посмотри, может чего интересного найдешь. Обрати внимание на то, как и что я написал в своей функции InitialiseCommonControls().
                    Прикреплённый файлПрикреплённый файлEasyKeys.7z (12,5 Кбайт, скачиваний: 21)

                    Да, этот проект я собирал под MSYS2. А там GNU-шниые компиляторы. Поэтому, если под майкрософтскими компиляторам будет на что-то ругаться - просто удали, ну или найди соответствующее решение-замену. Хотя, там из этого только __attribute__((unused)) вроде.
                      Применение InitCommonControlsEx() не помогло от слова совсем. Ничего не изменилось, к сожалению.
                      Сделал прям как в примере Majestio

                      Попробовал подставить иконку, вытащенную из shell32 dll, она отображается нормально.
                      Такое ощущение, что неправильно отображаются только мои самодельные иконки. Рисую неправильно? Ставлю только цвета, только совместимые с интернетом.
                        Ниже мой код по созданию тулбара. Может какой стиль или ещё что-то упущено?

                        ExpandedWrap disabled
                          HWND createToolBar(MY_GL_STR* myGlobData)
                          {
                              INITCOMMONCONTROLSEX icc;
                              icc.dwSize = sizeof(INITCOMMONCONTROLSEX);
                              icc.dwICC = ICC_BAR_CLASSES;
                              InitCommonControlsEx(&icc);
                           
                              const DWORD dwStyle = WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | TBSTYLE_LIST;
                              const UWORD nBut{ 14 }; // количество кнопок(иконок). Линии тоже считаются
                              HWND hTb;
                              UINT i{ 0 };
                              static TBBUTTON but[nBut];
                              WCHAR txtBufA[] = TEXT("A"), txtBufB[] = TEXT("B");
                              if (myGlobData->hImgList)
                                  return 0;
                           
                              myGlobData->hImgList = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, nBut, 0);
                              // Информация о кнопках
                              but[i++].fsStyle = BTNS_SEP;
                           
                              but[i].iBitmap = I_IMAGENONE;
                              but[i].idCommand = 0;
                              but[i].fsState = 0;
                              but[i].fsStyle = BTNS_SHOWTEXT & 0 | BTNS_AUTOSIZE;
                              but[i++].iString = (INT_PTR)&txtBufA;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgOp, NULL);
                              but[i].idCommand = CM_FOPENA;
                              but[i].fsState = 0;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgSa, NULL);
                              but[i].idCommand = CM_FSAVEA;
                              but[i].fsState = 0;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgDe, NULL);
                              but[i].idCommand = CM_FCLEARA;
                              but[i].fsState = 0;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i++].fsStyle = BTNS_SEP;
                           
                              but[i].iBitmap = I_IMAGENONE;
                              but[i].idCommand = 0;
                              but[i].fsState = 0;
                              but[i].fsStyle = BTNS_SHOWTEXT | BTNS_AUTOSIZE;
                              but[i++].iString = (INT_PTR)&txtBufB;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgOp, NULL);
                              but[i].idCommand = CM_FOPENB;
                              but[i].fsState = 0;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgSa, NULL);
                              but[i].idCommand = CM_FSAVEB;
                              but[i].fsState = 0;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgDe, NULL);
                              but[i].idCommand = CM_FCLEARB;
                              but[i].fsState = TBSTATE_MARKED;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i++].fsStyle = BTNS_SEP;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgSe, NULL);
                              but[i].idCommand = CM_SSETTINGS;
                              but[i].fsState = TBSTATE_ENABLED;
                              but[i++].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              but[i++].fsStyle = BTNS_SEP;
                           
                              but[i].iBitmap = ImageList_AddIcon((HIMAGELIST)myGlobData->hImgList, (HICON)myGlobData->hImgHe, NULL);
                              but[i].idCommand = CM_HHELP;
                              but[i].fsState = TBSTATE_ENABLED;
                              but[i].fsStyle = TBSTYLE_BUTTON | BTNS_AUTOSIZE;
                           
                              hTb = CreateToolbarEx(myGlobData->hWndMainW, dwStyle, ID_TOOLBAR, 0, HINST_COMMCTRL, IDB_STD_SMALL_COLOR, but, nBut, 0, 0, 0, 0, sizeof(TBBUTTON)); //IDB_STD_LARGE_COLOR
                              if (!hTb)
                                  return 0;
                              SendMessage(hTb, TB_SETIMAGELIST, 0, (LPARAM)myGlobData->hImgList);
                              return hTb;
                          }
                          Цитата Timon K @
                          Такое ощущение, что неправильно отображаются только мои самодельные иконки. Рисую неправильно?

                          Попробуй перерисовать иконки в другом редакторе.
                          Хотя, можешь для теста прислать 2 иконки - которая норм отображается (из shell32 dll) и твою "неправильную" - присоедини их тут. Интересно.
                            Открыть и с корзинкой это мои, они искажаются, с дискеткой на помню где взял, наверное готовый был, выглядит отлично везде.
                            Прикреплённый файлПрикреплённый файлopenB_1.ico (420 байт, скачиваний: 25)
                            Прикреплённый файлПрикреплённый файлSave.ico (318 байт, скачиваний: 26)
                            Прикреплённый файлПрикреплённый файлeraseA.ico (219 байт, скачиваний: 27)
                              ExpandedWrap disabled
                                 $ hexdump -C Save.ico
                                00000000  00 00 01 00 01 00 10 10  00 00 01 00 04 00 28 01  |..............(.|
                                00000010  00 00 16 00 00 00 28 00  00 00 10 00 00 00 20 00  |......(....... .|
                                00000020  00 00 01 00 04 00 00 00  00 00 80 00 00 00 00 00  |................|
                                00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
                                00000040  00 00 80 00 00 00 00 80  00 00 80 80 00 00 00 00  |................|
                                00000050  80 00 80 00 80 00 00 80  80 00 c0 c0 c0 00 80 80  |................|
                                00000060  80 00 ff 00 00 00 00 ff  00 00 ff ff 00 00 00 00  |................|
                                00000070  ff 00 ff 00 ff 00 00 ff  ff 00 ff ff ff 00 00 00  |................|
                                00000080  00 00 00 00 00 00 00 11  18 88 88 81 11 00 01 99  |................|
                                00000090  97 11 ff 71 19 10 01 99  9f 11 ff 71 19 10 01 99  |...q.......q....|
                                000000a0  9f 11 ff 71 19 10 01 99  97 f7 7f 71 19 10 01 99  |...q.......q....|
                                000000b0  99 99 99 99 99 10 01 99  99 99 99 99 99 10 01 9f  |................|
                                000000c0  ff ff ff ff f9 10 01 9f  ff ff ff ff f9 10 01 9f  |................|
                                000000d0  f7 77 77 7f f9 10 01 9f  ff ff ff ff f9 10 01 9f  |.ww.............|
                                000000e0  f7 77 77 7f f9 10 01 9f  ff ff ff ff f9 10 00 17  |.ww.............|
                                000000f0  77 77 77 77 71 00 00 00  00 00 00 00 00 00 ff ff  |wwwwq...........|
                                00000100  00 00 c0 03 00 00 80 01  00 00 80 01 00 00 80 01  |................|
                                00000110  00 00 80 01 00 00 80 01  00 00 80 01 00 00 80 01  |................|
                                *
                                00000130  00 00 80 01 00 00 c0 03  00 00 ff ff 00 00        |..............|
                                0000013e
                                 $ hexdump -C eraseA.ico
                                00000000  00 00 01 00 01 00 10 10  00 00 00 00 20 00 c5 00  |............ ...|
                                00000010  00 00 16 00 00 00 89 50  4e 47 0d 0a 1a 0a 00 00  |.......PNG......|
                                00000020  00 0d 49 48 44 52 00 00  00 10 00 00 00 10 08 06  |..IHDR..........|
                                00000030  00 00 00 1f f3 ff 61 00  00 00 01 73 52 47 42 00  |......a....sRGB.|
                                00000040  ae ce 1c e9 00 00 00 04  67 41 4d 41 00 00 b1 8f  |........gAMA....|
                                00000050  0b fc 61 05 00 00 00 09  70 48 59 73 00 00 0e c3  |..a.....pHYs....|
                                00000060  00 00 0e c3 01 c7 6f a8  64 00 00 00 5a 49 44 41  |......o.d...ZIDA|
                                00000070  54 38 4f ad 8d c9 0d c0  30 0c c3 bc 53 f6 9f 2d  |T8O.....0...S..-|
                                00000080  fd a8 ca 01 97 70 01 13  d0 27 a2 9c f8 62 c6 98  |.....p...'...b..|
                                00000090  7b f4 5c e7 d7 81 5b ae  46 f3 86 03 2d 64 3f 50  |{.\...[.F...-d?P|
                                000000a0  34 5b 64 12 45 b3 c5 5e  dc 12 75 86 24 ea 0c 49  |4[d.E..^..u.$..I|
                                000000b0  d4 19 92 a8 33 24 51 67  48 a2 ce bc 45 35 9a 9d  |....3$QgH...E5..|
                                000000c0  64 62 16 e9 1d 44 3c 3a  22 1c f2 1d eb d6 40 00  |db...D<:".....@.|
                                000000d0  00 00 00 49 45 4e 44 ae  42 60 82                 |...IEND.B`.|
                                000000db
                              Думаю просто взглянув на иконки в hex можно все понять.

                              Скрытый текст
                              Формат ваших иконок отличается от формата используемого в виндовс (до обновления). Ваши иконки это PNG файлы внутри ICO, а винде нужны простые BMP.
                              Сообщение отредактировано: macomics -
                                macomics, спасибо за пояснение, никогда бы до такого не додумался. Но опять же вопрос - а почему ровно эти же иконки корректно отображаются вне тулбара? И второй - как тогда сделать иконку по старым "понятиям"? Конвертировать рисунок из bmp? Но в нём нет прозрачности...
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0718 ]   [ 20 queries used ]   [ Generated: 9.05.25, 06:37 GMT ]