大家好,本来一直做VC++的开发,现在要把以前写的一个dll转到delphi里。因为我做视频播放,有个参数是HWND型的,指定播放的句柄。怎么在delphi里将一个图形控件(或其他控件,只要能播放影片就行)的句柄传递给这个参数?

解决方案 »

  1.   

    在C++中Handle,是一个指针
    在Delphi中Handle,被理解为一个整数了,于是一切差别就从这里开始
    先看一个函数吧! CreateWindow
    在C++的申明为:
    HWND CreateWindow(
        LPCTSTR lpClassName, // pointer to registered class name
        LPCTSTR lpWindowName,       // pointer to window name
        DWORD dwStyle, // window style
        int x,      // horizontal position of window
        int y,       // vertical position of window
        int nWidth,       // window width
        int nHeight,       // window height
        HWND hWndParent, // handle to parent or owner window
        HMENU hMenu,   // handle to menu or child-window identifier
        HANDLE hInstance,     // handle to application instance
        LPVOID lpParam        // pointer to window-creation data
    );
    让我们来看看有几个指针(7个,返回值,前两个参数,后四个参数)
    让我们再来看看在Delphi中的申明:
    function CreateWindow(
        lpClassName: PChar;    // pointer to registered class name
        lpWindowName: PChar;   // pointer to window name
        dwStyle:Integer;     // window style
        x: Integer;       // horizontal position of window
        y: Integer;       // vertical position of window
        nWidth: Integer;  // window width
        nHeight: Integer;  // window height
        hWndParent: Integer;  // handle to parent or owner window
        hMenu: Integer;  // handle to menu or child-window identifier
        hInstance: Integer;  // handle to application instance
        lpParam: Pointer   // pointer to window-creation data
     ): Integer;
    有几个指针呢?(有三个,前两个和最后一个参数)
    如果在调用此函数时,夸张一点,将所有指针(以C++)全用NULL代替的话,在Delphi中,函数调用应是这样的:
    hWnd:= CreateWindow( ’’,’’, ws_Child, 0,0,100,100,0,0,0,nil); //此函数只是例子
    可见如果NULL指的是Handle的话,在Delphi中,它等价与0
      

  2.   

    在C++中Handle,是一个指针
    在Delphi中Handle,被理解为一个整数了,于是一切差别就从这里开始------------------ 其實還是一個 DWORD (地址)吧。。