FAQ
ArcMapにVisual Basic 6のモーダレスフォームを表示する方法

ナレッジ番号:5477 | 登録日:2023/07/27 | 更新日:2024/12/02

【概要】

ArcMap 9.x内でVisual Basic 6のモーダレスフォームを作成し、表示する方法を示します。
このドキュメントの目的はVisual Basic 6で限定的に使用するために作られたIModelessFrameインタフェースと、
IWindowPositionインタフェースを使用する方法を示すことにあります。可能であれば、
より柔軟に動作するDockableWindowを作成し、使用するのが最も良い方法です。
IModelessFrameはVisual Basicのモーダレスダイアログのハンドリングの代替案として最適です。


【手順】

  1. VB6で新規ActiveX DLLプロジェクトを開始します。

  2. VBプロジェクトに以下の参照を追加します。

    a.ESRI Framework
    b.ESRI System UI
    c.ESRI System

  3. クラスモジュールの名前を"clsModelessDialogCmd"にします。

  4. ESRI Interface Implementerアドインを使用してICommandを実装します。

    ※モーダレスフレームを作成し、表示するためにICommandを実装します。IModelessFrameインタフェースを実装する必要はありません。

  5. 必要なプロパティやメソッドのコードを追加します。

    ' モジュールレベル変数
    Private m_pMF As IModelessFrame

    Private Property Get ICommand_Name() As String  ICommand_Name = "Modeless Frame Sample" End Property Private Property Get ICommand_Category() As String  ICommand_Category = "Modeless Frame Samples" End Property

    Private Property Get ICommand_Caption() As String  ICommand_Caption = "Modeless Frame Sample" End Property Private Property Get ICommand_Enabled() As Boolean  ICommand_Enabled = True End Property Private Property Get ICommand_Checked() As Boolean  ICommand_Checked = False End Property Private Sub ICommand_OnClick()  Dim frmMF As New frmCustomModeless  Dim pWP As IWindowPosition  ' フレームを作成します。  Set m_pMF = New esriFramework.ModelessFrame  ' フォームにフレームの参照を設定します。  ' これによりコマンドボタンを使用してフレームを隠すことができます。  Set frmMF.ModelessFrame = m_pMF  ' モーダレスフレームにフォームの参照を与えます。  Call m_pMF.Create(frmMF)  ' ウィンドウの性質を設定します。  Set pWP = m_pMF  ' pWP.State = esriWSFloating  m_pMF.Caption = frmCustomModeless.Caption  m_pMF.Visible = True End Sub

    ※IModelessFrame::Createを呼び出すコードはArcGIS Desktopのbuild506以降で動作します。このメソッドはhWndの代わりにVisual Basicフォームオブジェクトを受け入れます。

  6. フォームを追加し、名前を"frmCustomModeless"にします。

  7. 必要なコントロールを追加します。少なくとも1つのコマンドボタンを追加します。キャプションは"&OK"とし、名前を"cmdOK"にします。

    Image

    このフォームにはそれほど多くのコードを必要としません。必要なコードを以下に示します。

    Option Explicit
    
    ' モジュールレベル変数
    Private m_pMF As IModelessFrame
    Private m_pWP As IWindowPosition
    
    Private Sub cmdOK_Click()
     m_pMF.Visible = False
     Unload Me
    End Sub
    
    Friend Property Set ModelessFrame(pModelessFrame As IModelessFrame)
     ' モーダレスフレームを取得し、IWindowPositionにQIします。
     Set m_pMF = pModelessFrame
     Set m_pWP = m_pMF
    End Property
    
    Private Sub Form_Terminate()
     ' メモリリークを避けるためにモジュールレベル変数を解放します。
     Set m_pWP = Nothing
     Set m_pMF = Nothing
    End Sub
    
  8. DLLをコンパイルします。

  9. ArcMapを起動します。

  10. コマンドを追加します。

    a.[ツール] > [カスタマイズ]を選択します。
    b.[ファイルから追加]をクリックします。
    c.DLLを参照して選択します。
    d.[OK]をクリックすると'CustomModelessForm'が追加されたことが表示されます。
    e.[コマンド]タブをクリックします。
    f.'Modeless Frame Samples'カテゴリをクリックします。
    g.右側のリストから'Modeless Frame Sample'をドラッグします。

    ※ModelessFrameは作成時にArcMapの後ろに隠れる場合があります。

    ※IWindowPosition::Stateを使用してこのフレームをドッカブルにすることはできません。その場合はドッカブルウィンドウを作成します。

メタデータ

種類

製品