Handle e HDC. O que é afinalesse contexto de dispositivo?
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?
O que é afinal esse contexto de dispositivo e qual sua diferença para o Handle da janela?
Persist
Curtidas 0
Respostas
Marcelo Saviski
14/07/2004
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
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
GOSTEI 0
Persist
14/07/2004
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.
Então penso que o Windows interpreta o HDC diferentemente para cada dispositivo.
GOSTEI 0
Beppe
14/07/2004
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.
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.
GOSTEI 0
Persist
14/07/2004
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.
Socket é um TCustomWinSocket e não tem nada a ver com desenho.
GOSTEI 0
Beppe
14/07/2004
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.
GOSTEI 0
Persist
14/07/2004
Então, mas é isso que queria saber.
Pq o GetDC de Socket.Handle retorna sempre?
Pq o GetDC de Socket.Handle retorna sempre?
GOSTEI 0
Beppe
14/07/2004
Pq o GetDC de Socket.Handle retorna sempre?
Puisé, eu não entendi o q pediu, nem agora...
Qual GetDC? :oops:
GOSTEI 0
Persist
14/07/2004
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 ?
GOSTEI 0
Beppe
14/07/2004
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?
GOSTEI 0
Persist
14/07/2004
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
Já entendí.
Novamente, obrigado !!!
:D
GOSTEI 0