メソッドとイベントに対する ActiveX の参照引数

注:

ActiveX コントロールは、DotNet フレームワークとそのコントロールを考慮して、最新バージョンの Microsoft Windows オペレーティング システムで非推奨となりました。

MAXScript では引き続き ActiveX コントロールがサポートされますが、これらは MAXScript にアクセス可能なシステムにインストールおよび登録する必要があります。

ActiveX コントロールの代わりに、MAXScript では、3ds Max 9 以降において DotNet コントロールがサポートされます。

次の例は、使用する ActiveX コントロールがシステムにインストールされている場合に有効です。

3ds Max 5.1 以降、ActiveX によってメソッドとイベントに対する参照引数がサポートされています。

例:

    rollout winsockTester "Winsock Tester" (
    activeXControl axWinsock "{248DD896-BB45-11CF-9ABC-0080C7E7B78D}" align:#left
    edittext txt text:"mail.iwaynet.net" offset:[-12, 0] fieldwidth:90
    edittext txt2 "Port:" text:"110" offset:[8, -2]
    button btn "Connect" width:90 height:16 offset:[0, 2]
    button btn2 "Disconnect" width:90 height:16 offset:[0, -2] enabled:false
    -- some data has arrived..
    on axWinsock DataArrival bytes do
    (
      format "% bytes received.\n" bytes
      local wsckData = "" -- initialize to a string
      p = axWinsock.getdata &wsckdata -- by-reference argument
      format "Data: %\n" wsckData
    )
    -- connected to remote host
    on axWinsock Connect do
    (
      format "Connected.\n"
      btn2.enabled = true
      btn.enabled = false
    )
    -- connect!
    on btn pressed do
    (
      axWinsock.connect txt.text txt2.text
      format "Connecting ...\n"
    )
    -- disconnect
    on btn2 pressed do
    (
      axWinsock.close()
      format "Connection closed.\n"
      btn2.enabled = false
      btn.enabled = true
    )
    )
    createdialog winsockTester 100 115

showMethods および showEvents では、参照引数の前には「&」が付けられます。

    showmethods winsockTester.axWinsock
    .Connect RemoteHost:undefined RemotePort:undefined
    .Listen()
    .Accept requestID:integer
    .SendData data:undefined
    .GetData &data:undefined type:undefined maxLen:undefined
    .PeekData &data:undefined type:undefined maxLen:undefined
    .Close()
    .Bind LocalPort:undefined LocalIP:undefined

GetData と PeekData の「data」引数の値タイプは「unknown」なので、ActiveX コントロールが処理方法を認知している値タイプを渡す必要があります。この場合メソッドは、データが保存できるバッファを必要としており、文字列値の処理方法を認知しています。変数 wsckData を NULL 文字列に初期化したのはこのためです。