Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.139.103.57] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Поиск по форуму юзал, МСДН читал
есть такой код (в OnOk) 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)); на последней строчке вылетает крит ошибка |
Сообщ.
#2
,
|
|
|
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); } З.Ы. Ошибка наверное оттого, что ты неудачно загрузил битмап, поэтому я пазделил эти операции. |
Сообщ.
#3
,
|
|
|
так вся проблема в том, что LoadBitmap загружает только из ресурсов
|
Сообщ.
#4
,
|
|
|
Цитата 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. Добавлено Тоесть так покатит: m_bmp.LoadBitmap(_T("c:\\1.bmp")); |
Сообщ.
#5
,
|
|
|
Swindler
The LoadBitmap function loads the specified bitmap resource from a module's executable file. я же написал, мне не из ресурсов, а с диска 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 |
Сообщ.
#6
,
|
|
|
m_stat.Create("",SS_BITMAP,MyRect,&MyDlg,110); Ты уверен что создаеться нормальный статик. Просто положи на форму статик и задай ему тип Битмап. Если с ним всё будет нормально, то проблемма в этом. |
Сообщ.
#7
,
|
|
|
Swindler
что значит "положить на форму"? ID на всяк случай я убрал (мб пересекался с чем-то), толку=0 НА ПРАКТИКЕ этим кто-нибудь занимался? :cry: |
Сообщ.
#8
,
|
|
|
Цитата Radagast @ НА ПРАКТИКЕ этим кто-нибудь занимался? :cry: У меня всё работает Цитата Radagast @ что значит "положить на форму"? ID на всяк случай я убрал (мб пересекался с чем-то), толку=0 Смотри, у тебя на форме есть объект - статик (ID_MY_STATIC). Ты ему ставишь тип - битмап. Далее, объявляешь переменнкую типа CStatic m_stat(как член класса). В конструкторе (в OnCreate, OnInitDialog пишешь): m_stat.Attach(GetDlgItem(ID_MY_STATIC)); Ну а дальше: m_bmp.LoadBitmap(....); if (m_bmp.m_hBitmap) { m_stat.SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)m_bmp.m_hBitmap); } |
Сообщ.
#9
,
|
|
|
ой... я про "положить на форму" подумал в переносном смысле, т.е. проигнорить
сейчас попробую |
Сообщ.
#10
,
|
|
|
Цитата Radagast, 26.12.2006, 11:34:36, 1391355 pic.Create("",SS_BITMAP,MyRect,&MyDlg,110); что возвращает? MyDlg уже создан, то есть Create был? лучше сразу так делать pic.Create("",SS_BITMAP|WS_VISIBLE|WS_CHILD,MyRect,&MyDlg,110); и делать это лучше в OnInitDialog c парентом this,то есть pic.Create("",SS_BITMAP|WS_VISIBLE|WS_CHILD,MyRect,this,110); |
Сообщ.
#11
,
|
|
|
Swindler
а Вам не трудно выложить проект плиз? и что такое m_bmp.m_hBitmap? и в св-вах CStatic'a я галочки bitmap не вижу Visual C++ 6.0 Добавлено ElcnU в OnInitDialog 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 |
Сообщ.
#12
,
|
|
|
Цитата Radagast @ а Вам не трудно выложить проект плиз? Я выложил кусок, который отвечает за загрузку. Больше ничего не надо. Цитата Radagast @ - это хендлm_bmp.m_hBitmap Цитата Radagast @ и в св-вах CStatic'a я галочки bitmap не вижу Type |
Сообщ.
#13
,
|
|
|
ты пытаешься создать статик , а диалог у тя еще не создан , соответственно и контрол не создасться и на SetBitmap вылетет
при этом ты наверное еще пытаешься сделать MyDlg.DoModal(). |
Сообщ.
#14
,
|
|
|
Цитата 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. |
Сообщ.
#15
,
|
|
|
Цитата Radagast, 26.12.2006, 13:30:29, 1391610 нет, а что это такое? у тя как диалог отображается? Цитата Radagast, 26.12.2006, 13:30:29, 1391610 извините, но Вам не трудно уточнить, что находится между скобок в m_bmp.LoadBitmap(....); ? ресурс 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 ?! статик лучше создавать в классе диалога |