简单截图代码win32 MFC
来源:互联网 发布:淘宝自动回复优美语句 编辑:程序博客网 时间:2024/04/30 03:33
void CPicDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
HDC hDC = ::GetWindowDC( GetDesktopWindow()->GetSafeHwnd() );
if( hDC )
{
HDC hOldDC = CreateCompatibleDC( hDC );
HDC hMemDC = CreateCompatibleDC( hDC );
TCHAR fileName[MAX_PATH] = {0};
OPENFILENAME ofn ;//
ZeroMemory(&ofn, sizeof(ofn));
ofn.lpstrFilter = TEXT("位图(*.bmp)\0*.bmp;\0");
ofn.lpstrDefExt = TEXT("bmp");
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = m_hWnd ;
ofn.hInstance = NULL;
ofn.nFilterIndex = 1;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
//ofn.lpstrInitialDir = ;
ofn.lpstrTitle = TEXT("保存交汇地图信息");
ofn.Flags = OFN_HIDEREADONLY ;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
//保存文件接口
RECT rtDestRect = {0};
::GetClientRect( GetDesktopWindow()->GetSafeHwnd(), &rtDestRect );
HBITMAP hOldBM = CreateCompatibleBitmap( hDC, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top );
SelectObject( hOldDC, hOldBM );
BitBlt( hOldDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, hDC, 0, 0, SRCCOPY );
// int height = rtDestRect.bottom - rtDestRect.top;
// int weight = rtDestRect.right - rtDestRect.left;
Sleep( 200 );
HBITMAP hMemBM = CreateCompatibleBitmap( hOldDC,rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top ) ;
SelectObject( hMemDC , hMemBM );
StretchBlt( hMemDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, hOldDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, SRCCOPY );
LOOP:
if (!GetSaveFileName(&ofn))
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return;
}
UINT num = 0, size = 0;
Gdiplus::ImageCodecInfo* pImageCodeInfo = NULL;
Gdiplus::GetImageEncodersSize( &num, &size );
if ( 0 == size )
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return ;
}
pImageCodeInfo = ( Gdiplus::ImageCodecInfo* )new BYTE[size];
if ( NULL == pImageCodeInfo )
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return ;
}
GetImageEncoders( num, size, pImageCodeInfo );
size = 0;
char m_szImgFile[MAX_PATH] = {0}; //用于保存返回的文件路径
for ( size = 0; size < num; ++size )
{
if ( 0 == wcscmp( pImageCodeInfo[size].MimeType, L"image/bmp" ))
{
WCHAR wcsFileName[256] = L"";
MultiByteToWideChar( CP_ACP, 0, fileName, -1, wcsFileName, 256 );
Gdiplus::Bitmap bitmap( hMemBM, NULL );
//保存为BMP文件
bitmap.Save( wcsFileName, &pImageCodeInfo->Clsid );
WideCharToMultiByte( CP_ACP, 0, wcsFileName, -1, m_szImgFile, 260, NULL, NULL );
delete pImageCodeInfo;
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
//AfxMessageBox( "截图成功!" , MB_OK);
return;
}
}
DeleteDC( hOldDC );
DeleteObject( hOldBM );
OnOK();
}
{
// TODO: 在此添加控件通知处理程序代码
HDC hDC = ::GetWindowDC( GetDesktopWindow()->GetSafeHwnd() );
if( hDC )
{
HDC hOldDC = CreateCompatibleDC( hDC );
HDC hMemDC = CreateCompatibleDC( hDC );
TCHAR fileName[MAX_PATH] = {0};
OPENFILENAME ofn ;//
ZeroMemory(&ofn, sizeof(ofn));
ofn.lpstrFilter = TEXT("位图(*.bmp)\0*.bmp;\0");
ofn.lpstrDefExt = TEXT("bmp");
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = m_hWnd ;
ofn.hInstance = NULL;
ofn.nFilterIndex = 1;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
//ofn.lpstrInitialDir = ;
ofn.lpstrTitle = TEXT("保存交汇地图信息");
ofn.Flags = OFN_HIDEREADONLY ;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
//保存文件接口
RECT rtDestRect = {0};
::GetClientRect( GetDesktopWindow()->GetSafeHwnd(), &rtDestRect );
HBITMAP hOldBM = CreateCompatibleBitmap( hDC, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top );
SelectObject( hOldDC, hOldBM );
BitBlt( hOldDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, hDC, 0, 0, SRCCOPY );
// int height = rtDestRect.bottom - rtDestRect.top;
// int weight = rtDestRect.right - rtDestRect.left;
Sleep( 200 );
HBITMAP hMemBM = CreateCompatibleBitmap( hOldDC,rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top ) ;
SelectObject( hMemDC , hMemBM );
StretchBlt( hMemDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, hOldDC, 0, 0, rtDestRect.right - rtDestRect.left, rtDestRect.bottom - rtDestRect.top, SRCCOPY );
LOOP:
if (!GetSaveFileName(&ofn))
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return;
}
UINT num = 0, size = 0;
Gdiplus::ImageCodecInfo* pImageCodeInfo = NULL;
Gdiplus::GetImageEncodersSize( &num, &size );
if ( 0 == size )
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return ;
}
pImageCodeInfo = ( Gdiplus::ImageCodecInfo* )new BYTE[size];
if ( NULL == pImageCodeInfo )
{
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
return ;
}
GetImageEncoders( num, size, pImageCodeInfo );
size = 0;
char m_szImgFile[MAX_PATH] = {0}; //用于保存返回的文件路径
for ( size = 0; size < num; ++size )
{
if ( 0 == wcscmp( pImageCodeInfo[size].MimeType, L"image/bmp" ))
{
WCHAR wcsFileName[256] = L"";
MultiByteToWideChar( CP_ACP, 0, fileName, -1, wcsFileName, 256 );
Gdiplus::Bitmap bitmap( hMemBM, NULL );
//保存为BMP文件
bitmap.Save( wcsFileName, &pImageCodeInfo->Clsid );
WideCharToMultiByte( CP_ACP, 0, wcsFileName, -1, m_szImgFile, 260, NULL, NULL );
delete pImageCodeInfo;
DeleteDC( hMemDC );
DeleteObject( hMemBM );
::ReleaseDC( GetDesktopWindow()->GetSafeHwnd(), hDC );
//AfxMessageBox( "截图成功!" , MB_OK);
return;
}
}
DeleteDC( hOldDC );
DeleteObject( hOldBM );
OnOK();
}
}
keybd_event(VK_SNAPSHOT, 0, 0, 0);
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);
Sleep(200);
HBITMAP hMemBM;
if (OpenClipboard())
{
hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);
if (NULL != hBitmap)
{
HBITMAP hOld = (HBITMAP)::SelectObject(hMemDC, hBitmap);
}
CloseClipboard();
}
这段代码是模拟系统截图
- 简单截图代码win32 MFC
- 一个简单的win32截图例子
- 【MFC】一个简单的截图工具源码
- win32程序中简单应用mfc
- MFC截图
- MFC截图
- MFC 截图
- win32开发(最简单的win32代码)
- 简单截图
- 一个简单的Win32程序(不用MFC)
- 一个简单的Win32工程改成MFC工程
- 20160225 C/C++,Win32,MFC文件操作简单总结
- MFC(一):win32创建一个最简单的窗口
- C、C++、MFC、Win32读取txt文本信息的代码
- 【win32】高仿QQ截图
- 屏幕截图个人封装API简单代码示例
- 初学java编程简单双色球产生器,附代码截图
- MFC 屏幕截图
- PHP面向对象之旅:类的属性
- vs2012 发布 mvc 注意事项
- ubuntu下卸载nginx方法
- 关于PASCAL 和 FAR
- SAP进销存难点分析及对策
- 简单截图代码win32 MFC
- 判断日期与当前日期之差是否超过90天
- Ibaitsnet源码解读(4)--DataMapper的Cache
- javscript实现元素拖动
- java 深克隆和浅克隆区别
- 8086 CPU 寄存器简介
- FreeBSD修改可执行文件路径和库文件路径
- 发布应用“猜手势(Guess Gesture)”,欢迎拍砖^_^
- MATLAB基础7-MATLAB绘图功能