Get window snapshoot

7 отговора 0 прегледа
#1

Get window snapshoot

Искам да попитам дали някой някога се е зблъсквал със следния проблем:
Трябва да се вземе моментна снимка на даден прозорец (що го наречем WinA). Проблема е че когато се копира DC-то на прозореца и ако върху него има друг прозорец (ще го наречем WinB) то тогава се копира и частта от прозорец WinB която попада върху прозореца WinA.

Знаете ли как може да се реши проблема използвайки C# или MFC или просто Win32 API функциите.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #2

Re: Get window snapshoot

използвайки C# или MFC или просто Win32 API функциите
не може

Отговор
в отговор на KpyM #3

Re: Get window snapshoot

може - ако вземе указател към прозореца и го набичи най-отгоре - след това го връща обратно.естествено следеният човек ще забележи странно поведение, но все пак...

Отговор
в отговор на бpaщaли koнпpyч #4

Re: Get window snapshoot

Ам не, не става с topmost window. Представи си, че програмата има няколко view-та (MDI application) и искам когато натисна Ctrl + Tab да ми показва диалог подобен на Vista Alt + Tab.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #5

Re: Get window snapshoot

Стандартно се прави с WM_PRINT с mem dc във wParam, обаче някои custom контроли не си правят труда да го уважават и не винаги работи.

cheers,
</wqw>


[линк]
Отговор
в отговор на wqw #6

Re: Get window snapshoot

И аз стигнах до извода, че се прави с printing CDC, но не мога да създам такова CDC понеже нема стандартна функция за това, а и както казваш WM_PAINT може да не се обработва от някои контроли.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #7

Re: Get window snapshoot

я да видим какво ще каже [линк]
и другото е, че TopMost Определено не ти върши работа. то е аналог на SysModal в мфц/апи.

Отговор
в отговор на бpaщaли koнпpyч #8

Re: Get window snapshoot

Туй дето го казва Google е добре ама тези функции ти връщат валидно printer DC само ако имаш принтер. Аз нямам и не искам да имам. Интересно е че кода дето сам драснал работи много добре (без да се получава сливане на прозорци) на Vista с активна Vista тема. Обаче ако сменя Vista темата с друга (промерно Windows Classic) и ефекта на сливането на прозорци пак се появява.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор