控件的handle 和 用getdc(handle) 获得的名柄有什么区别。为什么有的地方用 handle,有的地方用 getdc(handle) 获得的名柄.
????????????????????????

解决方案 »

  1.   

    Handle 是指控件的Handle, GetDc(Handle) 得到的是控件Canvas.Handle
      

  2.   

    前一个是控件的窗口句柄,用于消息循环
    后一个是控件的DC设备描述结构句柄,一般用来绘图和响应paint消息的
      

  3.   

    为什么我执行下面的程序得到的控件Canvas.Handle不是一个确定值。
    你每按一个按钮,得到一个新的Canvas.Handle ?????????????procedure TForm1.Button1Click(Sender: TObject);
    var
      hdc1:hdc;
    begin
      hdc1:=getdc(form1.handle);
      label1.caption:=inttostr(hdc1);
    end;
      

  4.   

    很正常,你应该在每次进入/重绘时重新得到一次dc,如果你想自己保留dc,应该改变窗口类的属性,好象是CS_SAVEBIT吧,看看win32的书吧
      

  5.   

    为什么handle 是固定的,而Canvas.Handle是不固定的。
      

  6.   

    handle要用来标记窗口实例,接受来自windows分发的消息,从概念上来讲,handle就应该固定。Canvas.Handle是不固定的。我不太明白,风焱兄你能讲详细些吗,这大概要深入到窗口在接收wm_paint消息时作了什么也不太对,风焱兄,如果在按钮button.click里写得到canvas.handle,也并没有你所说的重绘啊。那只有进入了:)
      

  7.   

    getdc每次生成一个新的CDC(VC里类名是这个,不知道得delphi是什么),用完后还要释放,否则会内存泄露,我在delphi中直接用Canvas绘图