Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Друзья, как мне скопировать копию рабочего стола в буфер?   Найти похожие ветки 

 
raymond ©   (2004-02-24 16:24) [0]

Друзья, как мне скопировать копию рабочего стола в буфер до появления своей формы? Я делаю, что-то вроде открытки девушке на 8 марта. Будет играть приятная музыка (например, Gregorian "Moments Of Peace"), а на "рабочем столе" будет текст поздравления плюс какие-нибудь симпатичные эффекты. Кстати, пожелания насчет эффектов принимаются.
Братья по разуму! Давайте подарим нашим дамам помимо цветов и открыток еще и продукты нашей, не побоюсь этого слова, интелектуальной деятельности


 
Skier ©   (2004-02-24 16:32) [1]


>  Друзья, как мне скопировать копию рабочего стола в буфер?
>

press PrintScreen when ready...


 
raymond ©   (2004-02-24 16:35) [2]

Skier ©   (24.02.04 16:32) [1]
Друг, ты меня не понял!


 
Skier ©   (2004-02-24 16:37) [3]

BitBlt(...)


 
Игорь Шевченко ©   (2004-02-24 16:54) [4]

Примерно так:
const
 DisplayDCName : WideString = "DISPLAY";
var
{ Эти переменные требуются для BitBlt }
 hdcWin : HDC;           // DC окна
 hdcScreen : HDC;        // DC полного экрана
 hdcScreenCompat : HDC ; // memory DC полного экрана
 hbmpCompat : HBITMAP;   // Содержимое экрана
 bmp : BITMAP;           // Структура для битмапа, куда помещается содержимое
                         // экрана
 fBlt : Boolean;         // TRUE if BitBlt occurred

procedure CaptureScreen (WindowHandle : HWND);
begin
     // Create a normal DC and a memory DC for the entire
     // screen. The normal DC provides a snapshot of the
     // screen contents. The memory DC keeps a copy of this
     // snapshot in the associated bitmap.
     hdcScreen := CreateDCW(PWideChar(DisplayDCName), nil, nil, nil);
     hdcScreenCompat := CreateCompatibleDC(hdcScreen);
     // Retrieve the metrics for the bitmap associated with the
     // regular device context.
     bmp.bmBitsPixel := Byte(GetDeviceCaps(hdcScreen, BITSPIXEL));
     bmp.bmPlanes := Byte(GetDeviceCaps(hdcScreen, PLANES));
     bmp.bmWidth := GetDeviceCaps(hdcScreen, HORZRES);
     bmp.bmHeight := GetDeviceCaps(hdcScreen, VERTRES);
     // The width must be byte-aligned.
     bmp.bmWidthBytes := ((bmp.bmWidth + 15) and (not 15)) div 8;
     // Create a bitmap for the compatible DC.
     hbmpCompat := CreateBitmap(bmp.bmWidth, bmp.bmHeight,
       bmp.bmPlanes, bmp.bmBitsPixel, nil);
     // Select the bitmap for the compatible DC.
     SelectObject(hdcScreenCompat, hbmpCompat);
     // Initialize the flags.
     fBlt := false;
 // Copy the contents of the current screen
 // into the compatible DC.
 BitBlt(hdcScreenCompat, 0, 0, bmp.bmWidth,
        bmp.bmHeight, hdcScreen, 0, 0, SRCCOPY);
 // Copy the compatible DC to the client area.
 hdcWin := GetDC(WindowHandle);
 BitBlt(hdcWin, 0, 0, bmp.bmWidth, bmp.bmHeight,
        hdcScreenCompat, 0, 0, SRCCOPY);
 ReleaseDC(WindowHandle, hdcWin);
 fBlt := true;
end;
 


Извиняюсь, кусок выдран из APIшной демки.


 
raymond ©   (2004-02-25 08:38) [5]

>Skier и Игорь Шевченко
Огромное человеческое СПАСИБО!
Как скопировать рабочий стол до появления формы? Выполнить битблиттинг до комманды CreateForm?


 
Zacho ©   (2004-02-25 08:41) [6]


>  Выполнить битблиттинг до комманды CreateForm?

Ты сам себе ответил :) Кто тебе мешает написать какой-либо код до CreateForm ?


 
raymond ©   (2004-02-25 08:48) [7]

Zacho ©   (25.02.04 08:41) [6]

Ок! Не знаешь, сколько fps можно достичь перерисовывая экран 1024х768 средствами GUI? Под DirectX не программил, не хочется заморачиваться, т.к. времени осталось мало, а успеть нужно!


 
Zacho ©   (2004-02-25 08:50) [8]

Не знаю.


 
raymond ©   (2004-02-25 09:16) [9]

Из эффектов предлагаю скроллинг праздничного поздравления на рабочем столе, на фоне приятной музики.

Какие еще будут предложения?


 
Skier ©   (2004-02-25 09:56) [10]

>raymond ©   (25.02.04 09:16) [9]
Лучше купи девушке хорошие духи и не парься...


 
raymond ©   (2004-02-25 09:59) [11]

> Skier ©   (25.02.04 09:56) [10]

Подарки, цветы, поцелуйчики и так будут. Но хочется еще и так самовыразиться! Тем более, от меня уже ждут подобного шага, я не могу не оправдать надежды своих друзей и знакомых.


 
Skier ©   (2004-02-25 10:01) [12]

>raymond ©   (25.02.04 09:59) [11]

> Но хочется еще и так самовыразиться!

Стихи напиши...


 
raymond ©   (2004-02-25 15:56) [13]

> Skier ©   (25.02.04 10:01) [12]

Стихи в виде поздравления будут...
Ты бы мне бы советик бы дал бы какой эффектик прибамбасить бы!


 
Иван Николаевич Понырев   (2004-02-25 16:20) [14]

плохие лучше не писать совсем


 
Алхимик ©   (2004-02-25 17:46) [15]

Мессагу выводи - типа поздравление от Билли Гейтса и
открывай лоток CD с загодя заложеной денежкой :)


 
DVM ©   (2004-02-25 17:50) [16]


> Ок! Не знаешь, сколько fps можно достичь перерисовывая экран
> 1024х768 средствами GUI?

Мало 5-15 от проца зависит. Загрузка проца будет 100%.


 
raymond ©   (2004-02-26 11:26) [17]

> DVM ©   (25.02.04 17:50) [16]

Понятно... Буду перерисовывать часть экрана...
Как определить производительность процессора? Перед выполнением "основного цикла" прогнать какой-нить свой тестик? А потом использовать большие значения таймера для быстрых процов. Я правильно мыслю?


 
raymond ©   (2004-02-27 09:41) [18]

> Игорь Шевченко ©   (24.02.04 16:54) [4]

Данный кусок кода:
// Copy the compatible DC to the client area.
hdcWin := GetDC(WindowHandle);
BitBlt(hdcWin, 0, 0, bmp.bmWidth, bmp.bmHeight,
       hdcScreenCompat, 0, 0, SRCCOPY);
ReleaseDC(WindowHandle, hdcWin);


нужно и в методе OnPaint окна указывать? Или я что-то не догоняю?


 
raymond_   (2004-02-27 16:22) [19]

Уже скоро Восьмое марта! :)


 
raymond ©   (2004-03-04 10:12) [20]

> Игорь Шевченко ©   (24.02.04 16:54) [4]

Проводил тут эксперименты над HDC и BITMAP... У меня такой вопрос, как мне вывести картинку из TBitmap"a в BITMAP? Задача усложняется тем, что нужно использовать один цвет в качестве прозрачного.
Я понимаю, что можно все сделать, а есть ли универсальный, простой метод?



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.036 c
7-1072953385
DelphiN!
2004-01-01 13:36
2004.03.28
Скрыть процесс от TaskMenagera в NT-ях


1-1078943860
TSa
2004-03-10 21:37
2004.03.28
ActionMainMenuBar


4-1073753680
WithOut Any ...
2004-01-10 19:54
2004.03.28
Заблокировать клавишу "Windows"


8-1069253810
Agent[007]
2003-11-19 17:56
2004.03.28
glBegin(GL_QUADS)...glEnd;


1-1078931058
opoloxai
2004-03-10 18:04
2004.03.28
Directory Size





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский