在学一个位图显示程序时,发现了图像显示能不能重绘的问题,当时看了msdn,也在网上看了不少回复。总感觉不是很理解。后来仔细试了一下,有点心得,特写出来,以鼓励自己。顺便也为那些和我一样刚开始学习vc的人提供些许帮助。
程序很简单,如下:在文档类中定义变量
下面是我在Doc类下面的变量:::
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
RGBQUAD* quad;
BYTE* lpBuf;
BITMAPINFO*pbi;
int flag;
int numQuad;
在Doc类下面添加了命令处理函数打开文件:
void CMySeeView::OnFileOpen()
{
// TODO: Add your command handler code here
LPCTSTR lpszFilter= "BMPFiles(*.bmp)|*.bmp ";
CFileDialog dlg1(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,lpszFilter,NULL);
CString filename;
CFile file;
if(dlg1.DoModal()==IDOK)
{
filename=dlg1.GetPathName();
if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone,NULL)==1)
{
file.Read(&bf,sizeof(bf));
}