delphi中HWND类型与HDC类型有什么区别?谢谢

解决方案 »

  1.   

    应该没区别,就是个 type  Hdc=Longword;
                                           别名而已
      

  2.   

    照我的理解应该是HWND包含HDC,HDC是指画板的handle,HWND是窗口的handle
      

  3.   

    接楼上,而句柄都是LongWord,
    本质是一样的。
      

  4.   

    HWND 窗口句柄
    HDC  设备句柄
      

  5.   

    HWND:一般用来指窗口句柄,比如Form,edit...
    HDC:一般用来指设备句柄,比如显示器...
      

  6.   

    HWND 窗口句柄
    HDC  设备句柄
      

  7.   

    同意:chinaandys(风流含笑&&鞭策自已,给别人一个爱的微笑) 
    都是句柄,只是为了便于区别用途罢了。
      

  8.   

    同意:chinaandys(风流含笑&&鞭策自已,给别人一个爱的微笑) 
    都是句柄,只是为了便于区别用途罢了。
      

  9.   

    严重不同意:chinaandys(风流含笑&&鞭策自已,给别人一个爱的微笑) 
    都是句柄,只是为了便于区别用途罢了。我认为可以在Delphi里理解为一个LongWord or Cardinal,
    在C++语言里是一个指针,至于什么指针,差别可大了,很可能是对象的导出指针比如:(本应用C++写,这里用Delphi吧)TwHandle = class
      constructor Create;
      destructor Destroy;
      BOOL CloseHandle;  // for CloseHande;
    end;TwHDC = class(TwHandle)
      functoin CreateDC(...): TwHDC; // for CreateDC 
    end;TwHWND = class(TwHandle)
      function CreateWindowEx(...): TwHWND;
      functoin SetWindowLong(...): LongInt;
    end;//上面的方法省略了实现,应为不知道Windows的代码。
    //下面为各对象的导出接口,就和我们看到的API一样BOOL CloseHandle(h: THandle); //不是对象方法
    begin
      TwHandle(h).CloseHandle;
      FreeAndNil(TwHandle(h));
      Result:= TwHandle(h) = nil;
    end;functoin CreateDC(...): TwHDC;
    var
      h: TwHDC; 
    begin
      h:= TwHDC.Create;
      h.CreateDC(...);
      if success then Result:= HDC(h)
                 else Result:= 0;
    end;
    function CreateWindowEx(...): TwHWND;  
    var
      h: TwHWND;
    begin
      h:= TwHWND.Create;
      h.CreateWindowEx(...);
      if success then Result:= HWND(Self)
                 else Result:= 0;
    end;functoin SetWindowLong(hWnd: HWND; ...): LongInt; //比对象法法中多一个HWND型的参数 ;
    begin
      Result:= TwHWND(hWnd).SetWindowLong(...);
    end;以上代码就是将对象形式转化为普通函数调用形式的方法,
    不过Windows近年来都不用了,而用更高级的方式借口,比如DirectX Shell ...
      

  10.   

    严重不同意:chinaandys(风流含笑&&鞭策自已,给别人一个爱的微笑) 
    都是句柄,只是为了便于区别用途罢了。我认为可以在Delphi里理解为一个LongWord or Cardinal,
    在C++语言里是一个指针,至于什么指针,差别可大了,很可能是对象的导出指针比如:(本应用C++写,这里用Delphi吧)TwHandle = class
      constructor Create;
      destructor Destroy;
      BOOL CloseHandle;  // for CloseHande;
    end;TwHDC = class(TwHandle)
      functoin CreateDC(...): TwHDC; // for CreateDC 
    end;TwHWND = class(TwHandle)
      function CreateWindowEx(...): TwHWND;
      functoin SetWindowLong(...): LongInt;
    end;//上面的方法省略了实现,应为不知道Windows的代码。
    //下面为各对象的导出接口,就和我们看到的API一样BOOL CloseHandle(h: THandle); //不是对象方法
    begin
      TwHandle(h).CloseHandle;
      FreeAndNil(TwHandle(h));
      Result:= TwHandle(h) = nil;
    end;functoin CreateDC(...): TwHDC;
    var
      h: TwHDC; 
    begin
      h:= TwHDC.Create;
      h.CreateDC(...);
      if success then Result:= HDC(h)
                 else Result:= 0;
    end;
    function CreateWindowEx(...): TwHWND;  
    var
      h: TwHWND;
    begin
      h:= TwHWND.Create;
      h.CreateWindowEx(...);
      if success then Result:= HWND(h)
                 else Result:= 0;
    end;functoin SetWindowLong(hWnd: HWND; ...): LongInt; //比对象法法中多一个HWND型的参数 ;
    begin
      Result:= TwHWND(hWnd).SetWindowLong(...);
    end;以上代码就是将对象形式转化为普通函数调用形式的方法,
    不过Windows近年来都不用了,而用更高级的方式——接口,比如DirectX Shell ...
      

  11.   

    我一直沒有用過delphi調用過api函數﹐有誰可以介紹几本好書
      

  12.   

    类型上都是Cardinal而已,没区别http://lysoft.7u7.net