//抓取指定矩形
void CMainWnd::CaptureRect(HDC hdcScreen,LPRECT prc,BOOL bFullScreen)
{
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,prc->right - prc->left,
prc->bottom - prc->top);
SelectObject(hdc,hbmp);
BitBlt(hdc,0,0,prc->right - prc->left,prc->bottom - prc->top,
hdcScreen,prc->left,prc->top,SRCCOPY);
char name[_MAX_FNAME];
char tmp[8];
ltoa(m_nNewCount+1,tmp,10);
lstrcpy(name,"新图片");
lstrcat(name,tmp);
if(m_wndChildView.AddImage(hbmp,name) != -1)
{
m_nNewCount++;
UpdateUI();
}
DeleteDC(hdc);
if(!bFullScreen || m_setings.bAutoShowWnd || !m_bIconMode)
{
ShowWindow(m_hWnd,SW_SHOW);
BringWindowToTop(m_hWnd);
}
}
/////////////////////////////////////////////////////////////////////////////////////
//抓全屏
void CMainWnd::OnCapScreen()
{
HWND hWnd = GetWindow(m_hWnd,GW_HWNDNEXT);
ShowWindow(m_hWnd,SW_HIDE);
BringWindowToTop(hWnd);
EnableWindow(hWnd,TRUE);
Sleep(100);
HDC hDeskDC = GetDC(NULL);
RECT rc;
rc.left = 0;
rc.top = 0;
rc.right = rc.left + GetSystemMetrics(SM_CXSCREEN);
rc.bottom = rc.top + GetSystemMetrics(SM_CYSCREEN);
CaptureRect(hDeskDC,&rc,TRUE);
}
======================================================
BringWindowToTop
函数功能:该函数将指定的窗口设置到Z序的顶部。如果窗口为顶层窗口,则该窗口被激活;如果窗口为子窗口,则相应的顶级父窗口被激活。
函数原型:B00L BringWindowToTop(HWND,hWnd);
参数:
hWnd: 设置到Z序的顶部的窗口句柄。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
备注:使用BringWindowToTop函数显示出被其他窗口部分或全部遮盖的窗口。
调用这个函数类似于调用SetWindowPos函数来改变窗口在Z序中的位置,但是BringWindowToTop函数并不能使一个窗口成为顶层窗口。
如果应用程序不在前台中而想设置在前台中,可以调用SetForegroundWindow函数。
速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib。
=====================================
GetDC
函数功能:该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。
GetDCEx函数是GetDC的一个扩展,它能使应用程序更多地控制在客户区域内如何或是否发生剪切。
函数原型:HDC GetDC(HWND hWnd);
参数:
hWnd:设备上下文环境被检索的窗口的句柄,如果该值为NULL,GetDC则检索整个屏幕的设备上下文环境。
Windows 98,WindowsNT 5.0或以后版本:如果该参数为Null,GetDC检索首要显示器的设备上下文环境,要得到其他显示器的设备上下文环境,可使用EnumDisplayMonitors和CreateDc函数。
返回值:如果成功,返回指定窗口客户区的设备上下文环境;如果失败,返回值为Null。
Windows NT:若想获得更多错误信息,可调用GetLastError函数。
注释:GetDC函数根据指定的等级类型检索指定窗口普通的、典型的或特有的设备上下文环境。
对于普通设备上下文环境,GetDC在每次检索的时候部分分配给它缺省特性,对于典型和特有的设备上下文环境,GetDC不改变先前设置的特性。
在使用普通设备上下文环境绘图之后,必须调用ReleaseDc函数释放该设备上下文环境,典型和特有设备上下文环境不需要释放,设备上下文环境的个数仅受有效内存的限制。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。
评论