好奇怪,Picture控件控制语句顺序不一样结果不一样

我做了一个对话框,其中会浏览本地计算机的bmp格式位图,然后可以选择其中一张并得到他的地址,然后加载这张位图,在一个Picture控件中显示出来,一下是我的代码: void CPicScan::OnBtnScan() { // TODO: Add your control notification handler code here char filter[]="BMP文件(*.bmp)|*.bmp|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter, NULL); if(IDOK==dlg.DoModal()) { CString str; str=dlg.GetPathName(); HBITMAP hBit=(HBITMAP)::LoadImage(NULL, LPCTSTR(str),IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); m_ctrPicShow.SetBitmap(hBit); //这个语句 CBitmap bitmap; bitmap.Attach(hBit); CClientDC dc(GetParent()); CDC dcComp; dcComp.CreateCompatibleDC(&dc); dcComp.SelectObject(&bitmap); dc.BitBlt(50, 50, 400, 400, &dcComp, 0, 0, SRCCOPY); m_picPath=str; UpdateData(FALSE); DeleteObject(hBit); } } 现在奇怪的是,当我把语句m_ctrPicShow.SetBitmap(hBit);放在现在这个位置时,Picture控件能够正常显示(m_ctrPicShow是和Picture控件关联的控制型变量),但当我把他放到最后UpdateData之前时,就不能正常显示位图了,请高手告诉我为什么,谢谢了,答案好的话,一定重重得加分!!
母婴用户439150266    2007-09-04 23:00    

满意回答

在调用m_ctrPicShow.SetBitmap(hBit);之前加一句bitmap.Detach(); 用完后最后用Detach将位图数据和变量怪挤串剥离,除非愚团你不想再使用这它吉个位图数据了。

匿名用户   2007-09-05 11:46
宝宝知道提示您:回答为网友贡献,仅供参考。