| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1698 人关注过本帖
标题:[求助]关于VC中位图删除的问题!!
只看楼主 加入收藏
rocketpeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:3 
[求助]关于VC中位图删除的问题!!

我用VC6.0编写了一个人事管理系统,其中编辑员工信息时可以显示员工图像,读取,存储和显示图像我已经完成了,但是我不知道删除员工位图图像的代码是什么,请各位帮帮忙!!

void CEmpEditDlg::OnDelphotoButton()
{
// TODO: Add your control notification handler code here


}

图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 位图 员工 图像 删除 
2006-03-28 11:09
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
收藏
得分:0 

把加载位图的代码发上来看看


未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-03-29 14:06
rocketpeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-28
收藏
得分:0 
谢谢楼上的答复,这是我的加载和显示位图的代码。

以下是加载位图的代码:
void CEmpEditDlg::OnSetphotoButton()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,"BMP",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal() != IDOK)
return;

CString pathname = dlg.GetPathName();

char *m_pBuffer; //从BMP文件中读取的数据存放在此变量中

//@@@@@@@@@@ 读取BMP文件到m_pBuffer @@@@@@@@@@
CFile file; //定义文件对象
if( !file.Open(pathname, CFile::modeRead)) //以只读方式打开文件
{
MessageBox("无法打开BMP文件");
return;
}
DWORD m_filelen; //用于保存文件长度
m_filelen = file.GetLength(); //读取文件长度
m_pBuffer = new char[m_filelen + 1]; //根据文件长度分配数组空间
if(!m_pBuffer) //如果不空间不足则返回
{
MessageBox("无法分配足够的内存空间");
return;
}
if(file.ReadHuge(m_pBuffer, m_filelen) != m_filelen) //读取BMP文件到m_pBuffer中
{
MessageBox("读取BMP文件时出现错误");
return;
}

//@@@@@@@@@@ 将BMP文件数据从m_pBuffer中转换到m_hBitMap位图句柄中
LPSTR hDIB;
LPVOID lpDIBBits;
BITMAPFILEHEADER bmfHeader; //用于保存BMP文件头信息,包括类型、大小、位移量等
DWORD bmfHeaderLen; //保存文件头的长度

bmfHeaderLen = sizeof(bmfHeader); //读取文件头的长度
//将m_pBuffer中文件头复制到bmfHeader中
strncpy((LPSTR)&bmfHeader, (LPSTR)m_pBuffer, bmfHeaderLen);
if (bmfHeader.bfType != (*(WORD*)"BM")) //如果文件类型不对,则返回
{
MessageBox("BMP文件格式不准确");
return;
}
hDIB = m_pBuffer + bmfHeaderLen; //将指针移至文件头后面
//读取BMP文件的图像数据,包括坐标及颜色格式等信息到BITMAPINFOHEADER对象
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB;
//读取BMP文件的图像数据,包括坐标及颜色格式等信息到BITMAPINFO对象
BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
//根据bfOffBits属性将指针移至文件头后
lpDIBBits = (m_pBuffer) + ((BITMAPFILEHEADER *)m_pBuffer)->bfOffBits;
CClientDC dc(this); //生成一个与当前窗口相关的CClientDC,用于管理输出设置
//生成DIBitmap数据
m_hBitmap = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);

//激活OnPaint()函数,显示图像
Invalidate();
//@@@@@@@@@@@ 将图像数据保存到数据库中 @@@@@@@@@@@@@
//将当前员工记录读取到m_pRs对象中
CString cEmpId;
cEmpId.Format("%d", EmpId);
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM Employees WHERE Emp_id=" + cEmpId;
//执行SELETE语句
_RecordsetPtr m_pRs;
m_pRs = m_AdoConn.GetRecordSet(vSQL);

VARIANT varBLOB;
SAFEARRAY *psa; //定义数组
SAFEARRAYBOUND rgsabound[1];

rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_filelen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound); //创建数组
for (long i = 0; i < (long)m_filelen; i++) //将m_pBuffer中的图像数据写入数组psa
SafeArrayPutElement (psa, &i, m_pBuffer++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
//调用AppendChunk()函数将图像数据写入Photo字段
m_pRs->GetFields()->GetItem("Photo")->AppendChunk(varBLOB);
//更新数据库
m_pRs->Update();
//断开与数据库的连接
m_AdoConn.ExitConnect();


}



以下是显示位图的代码:
void CEmpEditDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
int x=692, y=35;
int iWidth=99, iHeight=100;

// TODO: Add your message handler code here
if(!m_hBitmap) //如果内存中没有BMP数据,则返回
return;
HBITMAP tmpBitmap; //用于保存输出到屏幕的BMP数据
CDC MemDC; //CDC对象,用于输出到屏幕
MemDC.CreateCompatibleDC(&dc);
tmpBitmap = (HBITMAP)MemDC.SelectObject(m_hBitmap);
dc.BitBlt(x,y,iWidth,iHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(tmpBitmap);

// Do not call CDialog::OnPaint() for painting messages
}

2006-03-30 16:36
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
显示操作:你把图象直接写入数据库,然后再从数据库中读取显示图象.
删除操作:把数据库中的图象数据删除.
这样数据库的图象数据没有了自然就不能显示了.

=×&D o I p R e E n C g T l X&×=
2006-03-30 17:05
快速回复:[求助]关于VC中位图删除的问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084493 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved