フォームを利用するパターン

  • 概要

    hm.NETとC#を使い、フォームを表示するような機能を制作してみましょう。

  • フォームを制作するパターン

    • C#側のソース

      フォームを利用する時のコツは、フォームのインスタンスを継続的でstaticな変数に入れて維持しておくことと、
      SetDetathMethodを利用して、秀丸が閉じた時に、フォームも閉じるようにすることです。
      HmTestClass05.dllとしてコンパイルのこと
      using System;
      using System.Windows.Forms;
      
      namespace HmTestClass05
      {
          class MyForm : Form
          {
              public MyForm()
              {
      
              }
          }
      
          public class Class5
          {
              public static Form form;
      
              public static IntPtr CreateForm()
              {
                  if (form == null || !form.Visible) {
                      form = new MyForm();
                  }
      
                  form.Show();
                  return (IntPtr)1;
              }
      
              public static IntPtr OnDetathMethod()
              {
                  if (form != null)
                  {
                      form.Close();
                      form = null;
                  }
      
                  return (IntPtr)1;
              }
      
          }
      }
      
    • 秀丸マクロ側のソース

      test01.macなどと適当に名前を付ける
      #HMNET = loaddll( hidemarudir + @"\hm.NET.dll" );
      
      #r = dllfuncw( #HMNET, "SetDetachMethod", currentmacrodirectory + @"\HmTestClass05.dll", "HmTestClass05.Class5", "OnDetathMethod" );
      #r = dllfuncw( #HMNET, "CallMethod", currentmacrodirectory + @"\HmTestClass05.dll", "HmTestClass05.Class5", "CreateForm" );
      

      マクロを実行するとフォームが表示されます。
      秀丸を閉じるとOnDetathMethodが実行されますので、フォームも閉じられます。