添加函数:
// 显示位图 bool CPictureDlg::LoadPicture(void) { CDC *dc; dc=GetDC(); //得到对话框的设备环境 CDC dcMemory; dcMemory.CreateCompatibleDC(dc); //得到与对话框设备环境相兼容的内存DC CBitmap *bitmap = new CBitmap(); HBITMAP hbitmap; //装载图片 hbitmap=(HBITMAP)::LoadImage(NULL, "F://风景.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); if(hbitmap) //成功 { bitmap-> Attach(hbitmap); } else { //出错。。返回 AfxMessageBox( "打开图像文件出错 "); //释放内存中的设备环境 ReleaseDC(dc); ReleaseDC(&dcMemory); delete bitmap; return false; } //取得图像的大小 long bmWidth,bmHeight; //图像的宽度,和高度 BITMAP bm; bitmap-> GetBitmap(&bm); bmWidth=bm.bmWidth; bmHeight=bm.bmHeight; dcMemory.SelectObject(bitmap); dc-> BitBlt(0,0,bmWidth,bmHeight,&dcMemory,0,0,SRCCOPY);//把内存中的图像复制到对话框DC中去 Invalidate(false); return true; }
在OnPaint()中调用该函数:[注意不要在OnInitDialog()中调用]
// 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CPictureDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); LoadPicture(); } else { LoadPicture();//调用绘图函数 CDialogEx::OnPaint(); } }