CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);
图片IDB_BITMAP1可以被加载到CStatic(IDC_STATIC111)上显示
EVC4下的代码:
CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);// 这里CStatic上不显示图片IDB_BITMAP1
pSat->SetBitmap(hBitmap);// 这里CStatic上显示图片!!!!!!
请问:有人能解释这个问题吗?我是无意中发现SetBitmap函数执行两次以上是可以的。
这样写有问题吗?不行的话,怎么写比较好?
7 个解决方案
#1
帮顶下。
MARK,我也学习下。
MARK,我也学习下。
#2
楼主:
CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);//这里CStatic上不显示图片IDB_BITMAP1
pSat->SetBitmap(hBitmap);//这里CStatic上显示图片!!!!!!
这些代码执行之后
这个pSat你delete了吧?然后pSat = NULL;
如果这样,你先注释掉delete,内存泄露先不管它。
然后用一样pSat->SetBitmap(hBitmap);
试试能不能够显示图片。
CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);//这里CStatic上不显示图片IDB_BITMAP1
pSat->SetBitmap(hBitmap);//这里CStatic上显示图片!!!!!!
这些代码执行之后
这个pSat你delete了吧?然后pSat = NULL;
如果这样,你先注释掉delete,内存泄露先不管它。
然后用一样pSat->SetBitmap(hBitmap);
试试能不能够显示图片。
#3
如果可以显示。
delete pSat放到析构函数中去。
delete pSat放到析构函数中去。
#4
to 楼上:
没有执行delete;上面是专门测试功能的,就没考虑内存泄露。
就在资源里加了一个Static,导入一个bmp图像,加了一个button;上述代码放在了对button的响应里。
VC的开发过程完全一样
没有执行delete;上面是专门测试功能的,就没考虑内存泄露。
就在资源里加了一个Static,导入一个bmp图像,加了一个button;上述代码放在了对button的响应里。
VC的开发过程完全一样
#5
呵呵,测试时最好一次只测试一个地方的东西,以前我也犯过这方面的错误,建议用官方的东西测试,如下:
Example
CStatic myStatic;
// Create a child bitmap static control.
myStatic.Create(_T("my static"),
WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),
pParentWnd);
// Set the bitmap of the static control to be the
// system check-mark bitmap.
myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)) );
Requirements
Windows CE versions: 1.0 and later
Header file: Declared in Afxwin.h
#6
由于我使用的时候,就是要把图片加载到现有的CStatic上,至少要完成上述的这些功能....
希望高人指点呀!SetBitmap除第一次无效为,以后每次赋值均有效(曾经做了一个图片循环进行测试)
搞不明白为什么呀?
希望高人指点呀!SetBitmap除第一次无效为,以后每次赋值均有效(曾经做了一个图片循环进行测试)
搞不明白为什么呀?
#7
不知道,帮顶
#1
帮顶下。
MARK,我也学习下。
MARK,我也学习下。
#2
楼主:
CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);//这里CStatic上不显示图片IDB_BITMAP1
pSat->SetBitmap(hBitmap);//这里CStatic上显示图片!!!!!!
这些代码执行之后
这个pSat你delete了吧?然后pSat = NULL;
如果这样,你先注释掉delete,内存泄露先不管它。
然后用一样pSat->SetBitmap(hBitmap);
试试能不能够显示图片。
CStatic* pSat = (CStatic*)GetDlgItem(IDC_STATIC111);
pSat->ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
HBITMAP hBitmap = ::LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
pSat->SetBitmap(hBitmap);//这里CStatic上不显示图片IDB_BITMAP1
pSat->SetBitmap(hBitmap);//这里CStatic上显示图片!!!!!!
这些代码执行之后
这个pSat你delete了吧?然后pSat = NULL;
如果这样,你先注释掉delete,内存泄露先不管它。
然后用一样pSat->SetBitmap(hBitmap);
试试能不能够显示图片。
#3
如果可以显示。
delete pSat放到析构函数中去。
delete pSat放到析构函数中去。
#4
to 楼上:
没有执行delete;上面是专门测试功能的,就没考虑内存泄露。
就在资源里加了一个Static,导入一个bmp图像,加了一个button;上述代码放在了对button的响应里。
VC的开发过程完全一样
没有执行delete;上面是专门测试功能的,就没考虑内存泄露。
就在资源里加了一个Static,导入一个bmp图像,加了一个button;上述代码放在了对button的响应里。
VC的开发过程完全一样
#5
呵呵,测试时最好一次只测试一个地方的东西,以前我也犯过这方面的错误,建议用官方的东西测试,如下:
Example
CStatic myStatic;
// Create a child bitmap static control.
myStatic.Create(_T("my static"),
WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),
pParentWnd);
// Set the bitmap of the static control to be the
// system check-mark bitmap.
myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)) );
Requirements
Windows CE versions: 1.0 and later
Header file: Declared in Afxwin.h
#6
由于我使用的时候,就是要把图片加载到现有的CStatic上,至少要完成上述的这些功能....
希望高人指点呀!SetBitmap除第一次无效为,以后每次赋值均有效(曾经做了一个图片循环进行测试)
搞不明白为什么呀?
希望高人指点呀!SetBitmap除第一次无效为,以后每次赋值均有效(曾经做了一个图片循环进行测试)
搞不明白为什么呀?
#7
不知道,帮顶