需要具有打印屏幕功能的winapi功能

时间:2012-08-31 18:22:05

标签: c winapi colors screenshot printscreen

我想创建一个小实用程序'ColorPic',下面是它的图片。

事实上,我可以获得光标所在的像素的RGB。

但我想创建一个窗口,将“打印”部分屏幕(靠近光标)放入此窗口。

最重要的是我需要一个放大和缩小的选项,这意味着我可以通过4x4,8x8,16x16或32x32矩形来表示像素......

我知道有一个SetPixel函数,但这不是我想要的。

是否有一个非常有效的功能,像“PrintScreen”(并且可以指定一个矩形作为参数)?非常有效,我的意思是当一个移动鼠标时,该功能可以非常快速地刷新窗口,并且不会使用太多的系统资源。

enter image description hereŠ

1 个答案:

答案 0 :(得分:6)

我发现了这个:

    HBITMAP MakePrintScreen()
    {
          HWND hWindow = GetDesktopWindow();
          HDC hdcScreen = GetDC(hWindow);
          RECT rect;
          HBITMAP hbmC;

          GetClientRect(hWindow,&rect);

          if((hbmC = CreateCompatibleBitmap(hdcScreen,rect.right,rect.bottom)) != NULL)
          {
                HDC hdcC;
                if((hdcC = CreateCompatibleDC(hdcScreen)) != NULL)
                {
                      HBITMAP hbmOld = (HBITMAP)SelectObject(hdcC,hbmC);

                      BitBlt(hdcC,0,0,rect.right,rect.bottom,hdcScreen,0,0,SRCCOPY);

                      SelectObject(hdcC,hbmOld);
                      DeleteDC(hdcC);
                }
          }

          ReleaseDC(hWindow,hdcScreen);

          return hbmC;
    }

自:

http://forum.4programmers.net/C_i_C++/149036-WINAPI_Print_screen_przyslonietego_okna