如何在对话框上画图

sssyyyooo 2001-11-19 05:42:43

我在对话框上画图,图象在.bmp文件里
我在构造函数里
m_Bitmap.LoadBitmap(IDB_BITMAP1);

OnPaint函数里

void CMapnewDlg::OnPaint()
{

CPaintDC dc(this); // device context for painting
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBitmap=memDC.SelectObject(&m_Bitmap);
BITMAP bm;
m_Bitmap.GetObject(sizeof(BITMAP),&bm);
dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBitmap);
}


这样可以在对话框里画图

但是现在我只有一个.bmp文件,不允许手工导入建立该图象的ID号(只能编程,采取何种方法可以在对话框上画图,是否可以编程得到ID号

...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallfool 2001-11-19
  • 打赏
  • 举报
回复
LoadImage(MAKEINTRESOURCE(nID),RT_BITMAP)好像2可以
Ellin 2001-11-19
  • 打赏
  • 举报
回复
对DIB类建立函数
infernalphoenix 2001-11-19
  • 打赏
  • 举报
回复
我补充一点,在获得句柄或者指针后,最好在堆中为该图象分配空间;
CBitmap* bmp=New CBitmap;
否则,很可能在编译或运行过程,出现异常。
mzm100 2001-11-19
  • 打赏
  • 举报
回复
采用下面的LoadPictureFile函数,把JPEG、GIF、Bitmap文件读到CBitmap对象,然后就可以象Bitmap文件一样进行显示了(Bitblt或StretchBlt)
Enjou it!
void LoadPictureFile(LPCTSTR szFile, CBitmap* pBitmap)
{
// open file
HANDLE hFile = CreateFile(szFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
_ASSERTE(INVALID_HANDLE_VALUE != hFile);

// get file size
DWORD dwFileSize = GetFileSize(hFile, NULL);
_ASSERTE(-1 != dwFileSize);

LPVOID pvData = NULL;
// alloc memory based on file size
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
_ASSERTE(NULL != hGlobal);

pvData = GlobalLock(hGlobal);
_ASSERTE(NULL != pvData);

DWORD dwBytesRead = 0;
// read file and store in global memory
BOOL bRead = ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
_ASSERTE(FALSE != bRead);
GlobalUnlock(hGlobal);
CloseHandle(hFile);

LPSTREAM pstm = NULL;
// create IStream* from global memory
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
_ASSERTE(SUCCEEDED(hr) && pstm);

// Create IPicture from image file
LPPICTURE gpPicture;

hr = ::OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);
_ASSERTE(SUCCEEDED(hr) && gpPicture);
pstm->Release();

OLE_HANDLE m_picHandle;
gpPicture->get_Handle(&m_picHandle);
pBitmap->DeleteObject();
pBitmap->Attach((HGDIOBJ) m_picHandle);

}
DeadWolf 2001-11-19
  • 打赏
  • 举报
回复
m_Bitmap.LoadBitmap("FileName.bmp");
sssyyyooo 2001-11-19
  • 打赏
  • 举报
回复
没人会吗?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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