mfc中 picture control 如何接受一个BMP 谢谢各位GG

dcl000 2006-05-09 03:51:37
我在个DLG里 有3个控件。 tree list control picture control 。我想在tree遍历出一个指定盘符下的一个固定的文件夹。(比如就显示出D\\pic)。展开节点显示文件夹里的内容。用个list control把这些文件都显示出来。现在我想做的是怎么在list里 截获双击事件点图片文件,在picture里显示出来,我没弄明白。。希望高手帮帮我好吗。我在线等 425164371我的QQ.
...全文
1233 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dcl000 2006-05-11
  • 打赏
  • 举报
回复
能在QQ或MSDN上再请教你吗..我搞的很郁闷。..没实现..QQ174025260
Snow_Ice11111 2006-05-11
  • 打赏
  • 举报
回复
pStaic->GetDC()->StretchBlt......==>pStatic->GetDC()->StretchBlt......
--------------------------------------------------------
都说了:就算把图片显示出来,但用户一移动窗口或窗口被其他窗口挡住后,图片就没了,因为窗口一发生重绘,辛辛苦苦画的图就消失了。
dcl000 2006-05-11
  • 打赏
  • 举报
回复
//list 的双击事件

void CTreeViewDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
CRect lRect;
CDC dcMem;
BITMAP bm;
CBitmap hcbmp;
CWnd *pStatic = NULL;
pStatic = GetDlgItem(IDC_STATIC_PIC1);
//装载资源
HBITMAP hbmp=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),"c:\\bground.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
hcbmp.Attach(hbmp);
hcbmp.GetBitmap(&bm);

dcMem.CreateCompatibleDC(GetDC());
CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);
pStatic->GetClientRect(&lRect);
//显示位图
pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),
&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
dcMem.SelectObject(&poldBitmap);

*pResult = 0;

}
我在双击事件了写了这样的代码.是怎么不对呢.为什么还是不行.哪出错了??
Snow_Ice11111 2006-05-10
  • 打赏
  • 举报
回复
把文件夹中图片都加在工程资源中既不现实也不合理,而且你上面的方法就算把图片显示出来,但用户一移动窗口或窗口被其他窗口挡住后,图片就没了。
  可以从CStatic派生一个类,在类的WM_ERASEBKGND消息响应中画图。画图的大致代码可参考:
http://community.csdn.net/Expert/topic/4505/4505149.xml?temp=.7063867

dcl000 2006-05-10
  • 打赏
  • 举报
回复
void CTreeViewDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
CWnd* pic = GetDlgItem( IDC_STATIC_PIC1 );
DrewBMP(pic->GetDC());
}

BOOL CTreeViewDlg::DrewBMP(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);//加载位图

BITMAP bmp;
bitmap.GetBitmap(&bmp);

//创建DC,兼容DC
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);//和当前DC兼容
dcCompatible.SelectObject(&bitmap);//把位图选到兼容DC中,确定显示大小
CRect rect; //将兼容DC中的位图拷贝到目的DC中,目的DC的大小
GetClientRect(&rect);
//pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
return true;
//return CView::OnEraseBkgnd(pDC);
}
我还是没搞出来,我昨天思考了下。只能加在资源来.然后显示出来。还是没弄明白应该怎么显示.你给的代码我没跑起来.希望 再帮我看看...174025260 我的QQ.
Snow_Ice11111 2006-05-09
  • 打赏
  • 举报
回复
用CStatic控件就行了。
CStatic* pWnd = (CStatic*)GetDlgItem(IDC_STATIC);
pWnd->ModifyStyle(0, SS_BITMAP);
pWnd->SetBitmap((HBITMAP)::LoadImage(0,
"c:\\zzzzz.bmp", //只能显示.bmp文件
IMAGE_BITMAP,
0,0,LR_CREATEDIBSECTION |LR_DEFAULTSIZE |LR_LOADFROMFILE));
把上面代码放在双击事件响应函数中。
内容概要:本文档为一份聚焦电气工程、自动化与控制领域的科研辅助资源合集,重点围绕永磁同步电机(PMSM)控制、逆变器建模与仿真、微电网优化调度、参数辨识与预测控制等核心技术展开。核心内容为“增量式无差拍控制”与“基于电流预测误差的参数辨识”方法的Simulink仿真实现,属于高影响力期刊论文复现项目,旨在通过仿真手段提升系统动态响应精度与参数自适应能力。文档整合了大量典型研究案例,如LCL逆变器、扩展状态观测器(ESO)、模型预测控制(MPC)、滑模控制等,系统展示了现代控制理论在电机驱动、新能源系统与电力电子变换器的综合应用与仿真实现路径。; 适合人群:具备电力电子、自动控制理论与Simulink仿真基础,从事电气工程、自动化、新能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 复现高水平期刊论文的先进控制策略,掌握增量式无差拍与基于电流预测误差的参数辨识算法的设计原理与实现流程;② 学习并构建永磁同步电机、逆变器与微电网系统的Simulink仿真模型,提升建模与仿真能力;③ 深入理解现代控制算法(如MPC、滑模、自抗扰)在实际系统的集成应用,增强科研创新能力与论文复现水平。; 阅读建议:此资源以Simulink仿真实践为核心,建议读者结合具体案例逐步操作,重点关注控制算法模块的搭建、参数整定与仿真结果分析,并配合相关理论文献深化理解,形成“理论-仿真-优化”的闭环学习路径,从而有效支撑科研创新与学术成果转化。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧