当前位置:编程学习 > VC++ >>

我在vc++mfc中menu菜单中想打开一个文件,代码怎么写啊!急求

void CMainFrame::OnFileOpen() // 打开文件 { // TODO: Add your command 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) { //这块儿填写打开文件后对文件相应的操作,就是打开一个文件按照他原来的格式打开 }
追问:可以详细一点吗?俺是菜鸟
答案:我看你是打开的bmp文件,给你个bmp的读取格式
#define WIDTH_BYTES(bits)	(((bits) + 31) / 32 * 4)
BOOL OpenBMPFile(LPCSTR lpFileName, BITMAPINFO *pBmpInfo, BYTE *pImageBuffer)
{
	BOOL bRVal = TRUE;
	DWORD dwBytesRead = 0;
	DWORD dwSize = 0;
	BITMAPFILEHEADER bfh;

	HANDLE hFile = ::CreateFile(lpFileName,
								GENERIC_READ,
								FILE_SHARE_READ,
								NULL,
								OPEN_EXISTING,
								FILE_ATTRIBUTE_NORMAL,
								NULL
								);
	if (hFile == INVALID_HANDLE_VALUE) {
		bRVal = FALSE;
	}
	else{
		dwSize = sizeof(BITMAPFILEHEADER);
		::ReadFile(hFile, &bfh, dwSize, &dwBytesRead, NULL );
		if (bfh.bfType != ((WORD)'M' << 8 | 'B')) {
			bRVal = FALSE;
		}
		else{
			dwSize = sizeof(BITMAPINFOHEADER);
			::ReadFile(hFile, pBmpInfo, dwSize, &dwBytesRead, NULL);
			if (pBmpInfo->bmiHeader.biBitCount <= 8) {
				dwSize = bfh.bfOffBits - sizeof(BITMAPFILEHEADER) - sizeof(BITMAPINFOHEADER);
				ReadFile(hFile,
					(char *)pBmpInfo + sizeof(BITMAPINFOHEADER),
					dwSize,
					&dwBytesRead,
					NULL
					);
			}
			
			dwSize = WIDTH_BYTES(pBmpInfo->bmiHeader.biWidth * pBmpInfo->bmiHeader.biBitCount) *
				pBmpInfo->bmiHeader.biHeight;
			
			ReadFile(hFile, pImageBuffer, dwSize, &dwBytesRead, NULL);
			
			
		}
		
		CloseHandle(hFile);
	}
	
	return bRVal;
}

一般文件的读取方式,给你个C语言的吧
         FILE *fp;
	fp = fopen(dlg.GetPathName().Replace("\\","\\\\"),"rb");
	fseek(fp, 0L,SEEK_END);
	long len = ftell(fp);
	fseek(fp, 0L, SEEK_SET);
	fread(StdImg, sizeof(BYTE), len, fp);
	fclose(fp);
其他:可以试试序列化操作,定义Serialize(CArchive& ar),在此函数中类似于这样定义:
if(ar.IsStoring())
    ar<<......;\\写入
else
   ar>>.......;\\读出 

上一个:用vc++编写工资统计程序代码应该先怎么做?
下一个:以前运行的程序,现在没法运行了,总是出错,opencv vc++6.0

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,