VC保存文件的问题
void CMainFrame::OnFileSaveAs()
{
// TODO: Add your command handler code here
该怎么写
}
工程是以个单文档窗口,我需要用自己的程序void SaveBmp()保存窗口中显示的图片
void CWeiDraw1View::SaveBmp()
{
//--------------test------------------------------
BITMAPINFO bi;//信息头
void *pBits=NULL;
// CRect rect;//客户区窗口
// GetClientRect(&rect);//默认拷贝区域为客户区大小,可以自行修改rect大小
int nWidth=m_nMaxX;
int nHeight=m_nMaxY;
//填充信息头
ZeroMemory(&bi,sizeof(bi));
bi.bmiHeader.biSize=sizeof(bi.bmiHeader);
bi.bmiHeader.biHeight=nHeight;
bi.bmiHeader.biWidth=nWidth;
bi.bmiHeader.biPlanes=1;
bi.bmiHeader.biBitCount=24;
bi.bmiHeader.biCompression=BI_RGB;
bi.bmiHeader.biSizeImage=3*nWidth*nHeight;
//拷贝客户区至内存DC
// HDC hActiveDC=::GetDC(this->m_hWnd);
HDC hActiveDC=m_pMemDC->GetSafeHdc();
HDC hActiveWndCompatibleDC=CreateCompatibleDC(hActiveDC);
// HBITMAP hActiveWndCompactibleBitmap=CreateCompatibleBitmap(hActiveDC,rect.right,rect.bottom);
HBITMAP hActiveWndCompactibleBitmap=CreateCompatibleBitmap(hActiveDC,m_nMaxX,m_nMaxY);
SelectObject(hActiveWndCompatibleDC,hActiveWndCompactibleBitmap);
// BitBlt(hActiveWndCompatibleDC,0,0,rect.right,rect.bottom,hActiveDC,0,0,SRCCOPY);
BitBlt(hActiveWndCompatibleDC,0,0,m_nMaxX,m_nMaxY,hActiveDC,0,0,SRCCOPY);
//保存内存DC
HDC hBmpFileDC=CreateCompatibleDC(hActiveWndCompatibleDC);
HBITMAP hBmpFileBitmap=CreateDIBSection(hActiveWndCompatibleDC,&bi,DIB_RGB_COLORS,&pBits,NULL,0);
SelectObject(hBmpFileDC,hBmpFileBitmap);
BitBlt(hBmpFileDC,0,0,nWidth,nHeight,hActiveWndCompatibleDC,0,0,SRCCOPY);
CString tempFileName=_T("f://test.bmp");//目标文件名
HANDLE hFile=CreateFile(tempFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile!=INVALID_HANDLE_VALUE)
{
DWORD dwRet=0;
//填充文件头
BITMAPFILEHEADER bmfHeader;
ZeroMemory(&bmfHeader,sizeof(bmfHeader));
bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits;
bmfHeader.bfType='MB';
WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL);
WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL);
WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL);
CloseHandle(hFile);
}
//------------------------
}
现在我在ID_FILE_SAVE_AS的事件该怎么写才能得到用户指定的路径及文件名然后调用SaveBmp保存