На главную Наши проекты:
Журнал   ·   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.
  
> протокол res:// , не получается добраться до ресурса...
    Моя программа генерирует html-файлы-отчёты. Очень не хотелось бы таскать вместе с exe'шником стопку картинок, испольуемых в этом отчёте...
    Нашёл здесь, на форуме инфу про протокол res. Но все мои попытки добраться до ico-файла были тщетны.

    Итак:
    Есть папка, в ней лежит сама программа с ресурсом и готовый html-отчёт.
    В ресурсах программы есть строка:
    ExpandedWrap disabled
      IconMain            ICON                    "C:\\Documents and Settings\\Алексей\\Мои документы\\Visual Studio 2008\\Projects\\FolderAccessManager\\Icon.ico"

    В html:
    ExpandedWrap disabled
      <img src="res://FolderAccessManager.exe/IconMain" width=24 height=22 border=noborder />

    Пробовал и так:
    ExpandedWrap disabled
      <img src="res://FolderAccessManager.exe/ICON/IconMain" width=24 height=22 border=noborder />

    Но картинка не отображается...
      Попробуй
      res://FolderAccessManager.exe/#3/#_тут_значение_IconMain
        какбэ
        http://msdn.microsoft.com/en-us/library/aa767740%28VS.85%29.aspx

        Добавлено
        другой вопрос - как избавится от привязки к имени .exe ?
        передавать в htm имя .exe и там скриптом править все урлы?
          Вобщем-то цель - напечатать содержимое TreeView, я уже создавал тут подобную тему.
          Решил перегонять TreeView в html, нашёл хороший скриптик для создания дерева, переписал его на C++.
          Но дерево-то из картинок состоит... Значит их надо где-то хранить. Но в идеале программа должна представлять собой всего 1 exe'шник. Вот я и вспомнил про Res://.
          То-есть отчёт живёт на диске только чтобы его 1 раз напечатать. Может даже и на диск-то сохранять его не надо, и открыть его можно прямо из памяти IWebBrowser'ом... Но мне кажется, что это лишнее усложнение.
          Просто файлик можно удалять при закрытии программы, если он создан...

          P.S. Поздравляю всех с Наступающим Новым Годом!
            Цитата B.V. @
            Попробуй
            res://FolderAccessManager.exe/#3/#_тут_значение_IconMain

            Пробовал и так:
            ExpandedWrap disabled
              <img src="res://C:%5CFolderAccessManager.exe/#3/#1" />
              <img src="res://FolderAccessManager.exe/#3/#1" />
              <img src="res://FolderAccessManager.exe/#3/#10" />

            (во втором случае exe был и в корне диска C, а в третьем - id другой иконки...
            Но в любом случае вместо картинки - крестик...
              Насколько я знаю для res-ссылкок допустимы только абсмолютные пути. Так html генерируется, с этим не должно быть проблем. Т.е. должно быть что-то подобное:
              ExpandedWrap disabled
                <img src="res://Допустим C:\\Program Path\\FolderAccessManager.exe/IconMain.ico" width=24 height=22 border=noborder>

              закрывающий слеш не нужен, указание расширения обязательно.
              По результатам экспериментов работает только в IE и др. на его основе. Лиса, опера, хром res-ссылки не воспринимают. Хотя может быть я чего-то не знаю, как их заставить читать из .exe...
              Сообщение отредактировано: arj99 -
                Цитата arj99 @
                указание расширения обязательно

                расширение чего? Там ведь не имя файла, а ID ресурса. Или всё-таки имя файла?
                Цитата arj99 @
                C:\\

                И почему "\\", это ж не C++, а... Вобщем в msdn'е написано, что вместо бэкслэшей нужно писать %5C.

                Вобщем не работает к сожалению и такой вариант...

                А в .chm картинки можно хранить? Может лучше не html+картинки, а что-нибудь одно, целиковое?
                  Цитата Алексей_Л @
                  Может лучше не html+картинки, а что-нибудь одно, целиковое?

                  mht? Все лежит в одном файле, бинарные данные закодированы в Base64.
                    Лёх, если тебе еще тема эта интересна, я немного поэкспериментировал по ней, расскажу.
                    По поводу, двойного слеша не обращай внимания, загнался я конечно.
                    По поводу расширения и имени файла, конечно ты прав, там ID ресурса, расширение не нужно. Просто однажды тоже с этим возился, а в некоторых случаях там если за именем ресурса добавить расширение как для имени файла, браузер все равно это хавает. И как-то так совпало, что я указав расширение и сделав что-то там еще получил желаемый результат - подумал расширение обязательно.
                    По поводу того что ты собираешься .chm или .mht использовать не понимаю как это если ты их генерируешь...
                    их ведь компилировать еще надо... или разбираться с форматом, не, игра не стоит свеч.

                    В общем из нынешних экспериментов полагаю, что при res-адресации поддерживаются только bmp, jpeg, gif и png.
                    А иконки просто-напросто не поддерживаются. И кстати, на подобные упоминания натыкался в интернете, но теперь уже ссылку лень искать. Хотя, странно, на msdn'e не заметил ремарок об этой специфике. Если ты их из-за прозрачности хотел использовать, то в принципе png и gif помогут.
                    В общем кое-что получилось, если нужно могу в билдере проект соорудить если устроит.
                      Еще можно картинки прямо в HTML прописывать: "The 'data' URI scheme".
                        Цитата arj99 @
                        bmp, jpeg, gif и png.

                        ммм... Спасибо, arj99!
                        Вот так получилось:
                        ExpandedWrap disabled
                          res://C:%5CFolderAccessManager.exe/#2/#111

                        с относительным путём не работает, хотя где-то читал, что может, точно читал...
                        Цитата vst @
                        прямо в HTML

                        Интересно, но если у меня в html дерево, скажем, на 300 эл-тов, 300 раз там будет одна и та же картинка вставлена... Сомнительно это всё, хотя можно поизвращаться и сделать картинки фоном ячеек таблицы, и картинка будет просто зависеть от одной строчки в css'ке.
                        Посмотрю, поразбираюсь, спасибо.

                        Добавлено
                        ~~~~~
                        Мда... заменил я иконки на битмапы(*.bmp) и встретился с неприятной особенностью:
                        картинки у меня 32x32, для печати - самое оно, а вот для программы - крупновато, иконки сами подстраивались под размер ImageList'a, тоесть уменьшались, а вот bmp'шки не уменьшаются, а обрезаются!

                        Как бы выйти из такой ситуации... Можно конечно хранить в ресурсах 2 комплекта картинок - ico для программы и bmp для html... но я думаю можно и проще?
                        Гружу так:
                        ExpandedWrap disabled
                                      HIMAGELIST TreeImageList;
                                      TreeImageList = ImageList_Create(16, 16, ILC_COLOR32, 3, 0); //16x16 - требуемый размер, настоящий размер - 32x32
                                      for(int i=0; i<3; i++)
                                      {
                                          HBITMAP hBmp = LoadBitmap(App.hInst, MAKEINTRESOURCE((i+1)*10)+1); //Это я потом перепишу ;)
                                          ImageList_Add(TreeImageList, hBmp, NULL);
                                      }
                           
                                      TreeView_SetImageList(GetDlgItem(hWnd, IDC_FOLDERTREE), TreeImageList, TVSIL_NORMAL);
                        Сообщение отредактировано: Алексей_Л -
                          Вот нашёл такую ф-цию:
                          ExpandedWrap disabled
                            HBITMAP Application::ResizeBitmap(HBITMAP hSrcBmp, int cx, int cy)
                            {
                                if (!hSrcBmp || !cx || !cx)
                                    return NULL;
                                HBITMAP hBmpRet = ::CreateBitmap(cx, cy, 1, 32, NULL);
                                HDC hDC = ::CreateCompatibleDC(NULL);
                                HBITMAP hOldBmp = (HBITMAP)::SelectObject(hDC, hBmpRet);
                                HDC hSrcDC = ::CreateCompatibleDC(NULL);
                                HBITMAP hOldSrcBmp = (HBITMAP)::SelectObject(hSrcDC, hSrcBmp);
                                BITMAP bmpinfo;
                                ::memset(&bmpinfo, 0, sizeof(BITMAP));
                                ::GetObject(hSrcBmp, sizeof(BITMAP), &bmpinfo);
                                ::StretchBlt(hDC, 0, 0, cx, cy, hSrcDC, 0, 0, bmpinfo.bmWidth, bmpinfo.bmHeight, SRCCOPY);
                                ::SelectObject(hDC, hOldBmp);
                                ::SelectObject(hSrcDC, hOldSrcBmp);
                                ::DeleteDC(hDC);
                                ::DeleteDC(hSrcDC);
                                return hBmpRet;
                            }

                          Но качество уменьшенных ей битмапов хуже, чем качество автоматически уменьшенных ico'нок...

                          Может правда просто хранить 2 комплекта иконок... bmp для html, а ico для программы?
                            Цитата Алексей_Л @
                            Но качество уменьшенных ей битмапов хуже

                            ну, дык, сглаживание укажите (SetStretchBltMode)
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0425 ]   [ 16 queries used ]   [ Generated: 24.09.23, 13:32 GMT ]