На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS

Дорогие друзья! Поздравляем вас с Новым 2025 годом!

Всем удачи, успеха и благополучия!

msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Загрузить bmp с диска в CStatic , подскажите плиз
    Поиск по форуму юзал, МСДН читал
    есть такой код (в OnOk)
    ExpandedWrap disabled
      CRect MyRect(5,5,100,100);
      CStatic pic;
      pic.Create("",SS_BITMAP,MyRect,&MyDlg,110);
      pic.SetBitmap((HBITMAP)::LoadImage(NULL, "1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE));

    на последней строчке вылетает крит ошибка :(
      ExpandedWrap disabled
        CBitmap m_bmp;
        CStatic m_stat;
        ////....
        m_bmp.LoadBitmap(....);
        if  (m_bmp.m_hBitmap)
        {
        m_stat.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)m_bmp.m_hBitmap);
        }

      З.Ы. Ошибка наверное оттого, что ты неудачно загрузил битмап, поэтому я пазделил эти операции.
        так вся проблема в том, что LoadBitmap загружает только из ресурсов
          Цитата

          HBITMAP LoadBitmap(
          HINSTANCE hInstance, // handle to application instance
          LPCTSTR lpBitmapName // name of bitmap resource
          );
          Parameters
          hInstance
          [in] Handle to the instance of the module whose executable file contains the bitmap to be loaded.
          lpBitmapName
          [in] Pointer to a null-terminated string that contains the name of the bitmap resource to be loaded. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. The MAKEINTRESOURCE macro can be used to create this value.


          Добавлено
          Тоесть так покатит:
          ExpandedWrap disabled
            m_bmp.LoadBitmap(_T("c:\\1.bmp"));
            Swindler
            The LoadBitmap function loads the specified bitmap resource from a module's executable file.
            я же написал, мне не из ресурсов, а с диска :)
            ExpandedWrap disabled
                  CPictureDlg MyDlg;
                  CRect MyRect(5,5,100,100);
                  CBitmap m_bmp;
                  CStatic m_stat;
                  HANDLE image=LoadImage(NULL, "1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
                  m_stat.Create("",SS_BITMAP,MyRect,&MyDlg,110);
                  m_stat.SetBitmap((HBITMAP)image); //вот на этой строчке вываливается крит ошибка (Abort/ignore/retry)
                  //CDialog::OnOK();

            если подробней: { ASSERT(::IsWindow(m_hWnd)); return (HBITMAP)::SendMessage(m_hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap); }
            причем вотчер показывает, что загрузка картинки прошла правильно, image имел ненулевой адрес

            Добавлено
            Swindler
            проверил, все та же ошибка, причем вотчер m_bmp:
            m_hObject 0x00000000
              ExpandedWrap disabled
                m_stat.Create("",SS_BITMAP,MyRect,&MyDlg,110);

              Ты уверен что создаеться нормальный статик. Просто положи на форму статик и задай ему тип Битмап. Если с ним всё будет нормально, то проблемма в этом.
                Swindler
                что значит "положить на форму"? ID на всяк случай я убрал (мб пересекался с чем-то), толку=0
                НА ПРАКТИКЕ этим кто-нибудь занимался? :cry:
                  Цитата Radagast @
                  НА ПРАКТИКЕ этим кто-нибудь занимался? :cry:

                  У меня всё работает :)
                  Цитата Radagast @
                  что значит "положить на форму"? ID на всяк случай я убрал (мб пересекался с чем-то), толку=0

                  Смотри, у тебя на форме есть объект - статик (ID_MY_STATIC). Ты ему ставишь тип - битмап. Далее, объявляешь переменнкую типа CStatic m_stat(как член класса). В конструкторе (в OnCreate, OnInitDialog пишешь):
                  ExpandedWrap disabled
                    m_stat.Attach(GetDlgItem(ID_MY_STATIC));

                  Ну а дальше:
                  ExpandedWrap disabled
                    m_bmp.LoadBitmap(....);
                    if  (m_bmp.m_hBitmap)
                    {
                    m_stat.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)m_bmp.m_hBitmap);
                    }
                    ой... я про "положить на форму" подумал в переносном смысле, т.е. проигнорить :)
                    сейчас попробую
                      Цитата Radagast, 26.12.2006, 11:34:36, 1391355
                      pic.Create("",SS_BITMAP,MyRect,&MyDlg,110);

                      что возвращает?
                      MyDlg уже создан, то есть Create был?
                      лучше сразу так делать
                      ExpandedWrap disabled
                        pic.Create("",SS_BITMAP|WS_VISIBLE|WS_CHILD,MyRect,&MyDlg,110);

                      и делать это лучше в OnInitDialog c парентом this,то есть
                      ExpandedWrap disabled
                        pic.Create("",SS_BITMAP|WS_VISIBLE|WS_CHILD,MyRect,this,110);
                        Swindler
                        а Вам не трудно выложить проект плиз?
                        и что такое m_bmp.m_hBitmap?
                        и в св-вах CStatic'a я галочки bitmap не вижу
                        Visual C++ 6.0

                        Добавлено
                        ElcnU
                        в OnInitDialog
                        ExpandedWrap disabled
                          CPictureDlg MyDlg;
                          CRect MyRect(5,5,100,100);
                          m_stat.Create("",SS_BITMAP|WS_VISIBLE|WS_CHILD,MyRect,this,110);//вылетает, если подробней,то return pWnd->Create(_T("STATIC"), lpszText, dwStyle, rect, pParentWnd, nID);


                        Добавлено
                        ах да, m_stat прикреплен Class Wizard'ом, control естественно
                        я и подумать не мог, что CStatic появляется в списке member variables, только если поставить свой ID :D
                          Цитата Radagast @
                          а Вам не трудно выложить проект плиз?

                          Я выложил кусок, который отвечает за загрузку. Больше ничего не надо.
                          Цитата Radagast @
                          m_bmp.m_hBitmap
                          - это хендл
                          Цитата Radagast @
                          и в св-вах CStatic'a я галочки bitmap не вижу

                          Type
                            :D ты пытаешься создать статик , а диалог у тя еще не создан , соответственно и контрол не создасться и на SetBitmap вылетет :yes:
                            при этом ты наверное еще пытаешься сделать MyDlg.DoModal(). :whistle:
                            Сообщение отредактировано: ElcnU -
                              Цитата Swindler @
                              m_bmp.m_hBitmap
                              - это хендл

                              в MSDN ниче такого нету, Студия на него ругается
                              чем плох (HBITMAP)?
                              Цитата Swindler @
                              в св-вах CStatic'a я галочки bitmap не вижу
                              Type

                              ?! :)
                              Цитата ElcnU @
                              ты пытаешься создать статик , а диалог у тя еще не создан

                              Цитата ElcnU @
                              и делать это лучше в OnInitDialog c парентом this

                              ?!

                              Цитата ElcnU @
                              при этом ты наверное еще пытаешься сделать MyDlg.DoModal().

                              нет, а что это такое? :)
                              Цитата Swindler @
                              Я выложил кусок, который отвечает за загрузку

                              извините, но Вам не трудно уточнить, что находится между скобок в m_bmp.LoadBitmap(....); ?
                              с учетом
                              Цитата
                              CBitmap::LoadBitmap
                              BOOL LoadBitmap( LPCTSTR lpszResourceName );
                              Parameters

                              lpszResourceName

                              Points to a null-terminated string that contains the name of the bitmap resource.
                              Сообщение отредактировано: Radagast -
                                Цитата Radagast, 26.12.2006, 13:30:29, 1391610
                                нет, а что это такое?

                                у тя как диалог отображается?

                                Цитата Radagast, 26.12.2006, 13:30:29, 1391610
                                извините, но Вам не трудно уточнить, что находится между скобок в m_bmp.LoadBitmap(....); ?

                                ресурс
                                ExpandedWrap disabled
                                  m_bmp.LoadBitmap(MAKEINTRESOURCE(ID_BITMAP));

                                Цитата Radagast, 26.12.2006, 13:30:29, 1391610
                                ?!


                                Цитата Radagast, 26.12.2006, 13:30:29, 1391610
                                Цитата (ElcnU @ 26.12.06, 17:48)
                                и делать это лучше в OnInitDialog c парентом this

                                ?!

                                статик лучше создавать в классе диалога :yes:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


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