Fórum Handle e HDC. O que é afinalesse contexto de dispositivo? #243110

14/07/2004

0

Olá pessoal, alguém poderia me explicar o que é o HDC pego pelas apis GetDC e GetWindowDC.
O que é afinal esse contexto de dispositivo e qual sua diferença para o Handle da janela?


Persist

Persist

Responder

Posts

14/07/2004

Marcelo Saviski

vc usao HDC p/ desenhar
o Handle identifica uma janela, controle
o DC é a parte desenhavel

vc pode usar o DC no canvas:

MeuCanvas := Tcanvas.create;
Meucanvas.handle := DC;

e usar o canvas p/ desenhar no DC, que vc pega com o GetDC, passando o Handle como parametro


Responder

Gostei + 0

14/07/2004

Persist

Obrigado pela resposta, mas ví também que HDC é utilizado para periféricos como modems, impressoras, monitores etc . . .
Então penso que o Windows interpreta o HDC diferentemente para cada dispositivo.


Responder

Gostei + 0

14/07/2004

Beppe

Pelo que sei, modem naum...HDC(Handle for Device Context), é um ´pano´ onde pode desenhar. Modens não se encaixam neste contexto.

O Handle da janela cuida das mensagens enviadas a janela, tem uma proc que faz isso(WndProc). Ela processa as msgs de pintura(WM_NCPAINT, WM_PAINT) e chama as procs de desenho com o seu DC.


Responder

Gostei + 0

15/07/2004

Persist

Mas então pq o GetDC e GetWindowDC de Socket.Handle retorna sempre?
Socket é um TCustomWinSocket e não tem nada a ver com desenho.


Responder

Gostei + 0

15/07/2004

Beppe

SocletHandle é o handle que representa o objeto socket. No Windows, cada objeto é representado por um handle diferente(canvas, janela, socket, thread, mutex, pipe, internet, etc...). Resumindo: não tem nada a ver sockets com DCs.


Responder

Gostei + 0

15/07/2004

Persist

Então, mas é isso que queria saber.
Pq o GetDC de Socket.Handle retorna sempre?


Responder

Gostei + 0

15/07/2004

Beppe

Pq o GetDC de Socket.Handle retorna sempre?

Puisé, eu não entendi o q pediu, nem agora...
Qual GetDC? :oops:


Responder

Gostei + 0

16/07/2004

Persist

var h:HDC;
begin
h := 0;
h := GetDC(Socket.Handle);
h := 0;
h := GetWindowDC(Socket.Handle);
end;

O Socket é o parâmetro Socket no evento onAccept de TServerSocket.
Nos dois casos a variável h retorna sempre > 0.
É isso que queria saber; pq a variável h é > 0 ?


Responder

Gostei + 0

16/07/2004

Beppe

Soket.Handle deve coincidir com um handle de uma janela. Os handles, não precisam ser exclusivos. Se vc usar o retorno de GetDC, não terá o resultado esperado, ou espera algo?


Responder

Gostei + 0

16/07/2004

Persist

Obrigado pela resposta. É claro que HDC p/ Sockets não tem nada a ver, só queria entender a real diferença entre Handle e HDC.
Já entendí.
Novamente, obrigado !!!
:D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar