Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать скриншот окна? 
:(
    Опции темы
Userman
Дата 11.12.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 21.8.2008

Репутация: нет
Всего: нет



Как сделать скриншот окна?
PM MAIL   Вверх
voov
Дата 11.12.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: 8
Всего: 8



Нажать "Print Screen" ;).

А если серьезно, поищи по форуму. Вопрос не редкий.
PM MAIL   Вверх
Alca
Дата 11.12.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Снимок экрана или делаем Screenshot
Минус кода в том что размер размер BMP получается минимум 1.5 МВ Но если вы его сожмете (заархивируете) то получиться примерно 40-50 КВ
Код

    int width = GetSystemMetrics(SM_CXSCREEN); 
    int height = GetSystemMetrics(SM_CYSCREEN); 
    HDC dc = ::GetDC(NULL); 
    HDC hMemDC;            
    HBITMAP hBmpOld;          
    HBITMAP hBmp;            
    hMemDC = CreateCompatibleDC(dc);                
    hBmp = CreateCompatibleBitmap(dc, width, height);              
    hBmpOld = (HBITMAP)SelectObject(hMemDC, hBmp);              
    BitBlt(hMemDC, 0, 0, width, height, dc, 0, 0, SRCCOPY);              
    SelectObject(hMemDC, hBmpOld);              
    DeleteObject(hBmpOld); 

  PICTDESC pd;
    pd.cbSizeofstruct = sizeof(PICTDESC);
    pd.picType = PICTYPE_BITMAP;
    pd.bmp.hbitmap = hBmp;
    pd.bmp.hpal = NULL;
    BOOL    result = TRUE;

    // create the IPicture object
    LPPICTURE pPicture;
    HRESULT hRes =  OleCreatePictureIndirect(&pd,
                                            IID_IPicture,
                                            false,
                                            reinterpret_cast<void**>(&pPicture)
                                            );
    if (SUCCEEDED(hRes))
    {
        // create an IStream object
        LPSTREAM pStream;
        hRes = CreateStreamOnHGlobal(NULL, true, &pStream);
        if (SUCCEEDED(hRes))
        {
            // write the picture to the stream
            LONG bytes_streamed;
            hRes = pPicture->SaveAsFile(pStream, true, &bytes_streamed);
            if (SUCCEEDED(hRes))
            {
                // write the stream to the file
                HANDLE hFile =  CreateFile("out.bmp",
                                            GENERIC_WRITE, FILE_SHARE_READ, NULL,
                                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL
                                            );
                if (hFile)
                {
                    HGLOBAL hMem = NULL;
                    GetHGlobalFromStream(pStream, &hMem);
                    LPVOID lpData = GlobalLock(hMem);

                    DWORD bytes_written;
                    result = WriteFile(hFile,
                                        lpData, bytes_streamed,
                                        &bytes_written, NULL
                                        );
                    result &= (bytes_written == static_cast<DWORD>(bytes_streamed));

                    GlobalUnlock(hMem);
                    CloseHandle(hFile);
                }
            }
            pStream->Release();
        }
        pPicture->Release();
    }



--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.