窗口句柄问题不清?   edit1.Text:=inttostr(getdc(self.Handle));
   edit2.Text:=inttostr(getdc(self.Handle));
   edit3.Text:=inttostr(getdc(self.Handle));
   
   突然发现三个Edit的显示内容竟多不一样?奇怪吗?
   
   难到只能先用变量保存起来这一种解决办法吗?(为了统一使用)
   
var
   hdcTemp:HDC;
Begin
   hdcTemp:=GetDC(Self.Handle);
   ...
End;

解决方案 »

  1.   

    不能GetDC的。
    你直接Integer(Self.Handle)就ok了!
      

  2.   

    楼主:DC和HANDLE不是同一个概念啊。
      

  3.   

    HDC和HANDLE其实都是变的HDC是你每次取的时候都在变(应该是客户区域不断刷新造成的)
    HANDLE是你每次创建对象的时候都是变的
    至于楼上几位说的不是一个东西……
    看看GetDC的说明吧The GetDC function retrieves a handle of a display device context (DC) for the client area of the specified window
      

  4.   

    GetDC assigns default attributes to the device context each time it is retrieved
      

  5.   

    我的目的是在获得了HDC之后,用作Win API函数的HDC句柄。1、下面正确?
    var
       HDCt:HDC;
    Begin
       HDCt:=GetDC(Self.Handle);
       
       SetBkMode(HDCt,TRANSPARANT);
       SetBkColor(HDCt,RGB(255,0,0));   Ellipse(HDCt,100,100,200,200);
    End;   
    2、下面则不对?
    var
       {HDCt:HDC;}
    Begin
       {HDCt:=GetDC(Self.Handle);}   SetBkMode(GetDC(Self.Handle),TRANSPARANT);
       SetBkColor(GetDC(Self.Handle),RGB(255,0,0));   Ellipse(GetDC(Self.Handle),100,100,200,200);
    End;