Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Mfc

12K
10 августа 2005 года
Shurins
1 / / 10.08.2005
У меня такой вопрос. Мне надо скопировать картинку экрана в переменрую класса CBitmap и далее вывести у себя в приложении. Должно выглядеть примерно так:

hDc = GetDC(hWndScr);
hMemDc = CreateCompatibleDC(hDc);
hBmpNew = CreateCompatibleBitmap(hDc, 500, 500);
hBmpOld = SelectObject(hMemDc, hBmpNew);
BitBlt(hMemDc, 0, 0, 500, 500, hDc, 0, 0, SRCCOPY);


немогу понять что за переменная hWndScr?
вроде как функция GetCD()должна быть с NULL параметром


я написал:

CBitmap b ;
CDC *pDC = GetDC();
b.CreateCompatibleBitmap(pDC, 500, 500);
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject( &b ) ;

...
...

CPaintDC dc(this);
dc.BitBlt( iPosX, iPosY, 1024, 768,&memDC,0,0,SRCCOPY ) ;

Не работает.
12K
10 августа 2005 года
Automat
7 / / 10.08.2005
hDc = GetDC(hWndScr);

Всё правильно работать и не будет! Переменная hWndScr - дескриптор окна, которого ты хочешь получить контекст.
Для того, чтобы это зарабртало, надо получить дескриптор рабочего стола (тоже самое окно) посредством функций FindWindow. В параметрах им передаётся либо имя класса окна, либо имя окна. Получить рабочий стол можно только по именни класса окна.
Либо проше функцией GetDesktopWindow().
Пример:

HWND hwnd;
hwnd=::GetDesktopWindow();
HDC hdc=::GetWindowDC(hwnd);
/* Просто для примера */
::TextOut(hdc,100,100,"Hello world",11);

Ну а далее думаю будет всё понятно. Если ты используешь классы на базе CDC, то имея HDC окна элементарно привязать его к классу.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог