オプションコマンドでダイアログを閉じる時にDRA-CADが一瞬非表示になって再び表示されてしまう [文書番号 : DRA00988]

概要
.NET対応オプションコマンドで、オプションコマンドで[OK]ボタンや[キャンセル]ボタンでダイアログを閉じると、DRA-CADが一瞬非表示になって再度表示されてしまう現象について説明いたします。
現象
以下の動画のように、オプションコマンドで[OK]ボタンや[キャンセル]ボタンでダイアログを閉じると、DRA-CADが一瞬非表示になったあとに再度表示されてしまいます。
※以下の動画では[キャンセル]ボタンを押した後に現象が起きます。
回避方法
以下の手順でオプションコマンドの終了時の処理を見直すようにしてください。
  1. 【BComDlg.vb [デザイン]】
    1. [OK]ボタンのプロパティを開き、DialogResultの値を「None」から「Cancel」に変更します。
    2. [キャンセル]ボタンのプロパティを開き、DialogResultの値を「Cancel」になっているか確認します。
    3. ※DialogResultの値が「Cancel」以外では本現象が出る可能性があります。
  2. 【UserCmd.vb】
    1. WindowsAPIの「SendMessage」関数を宣言します。
    2. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer
    3. 定数「BM_CLICK」を宣言します。
    4. Public Const BM_CLICK As Integer = &HF5
    5. DraDialog関数のUnhookMouse関数の後に、Hideメソッドを追加します。
    6. m_BComDlg.Hide() 'ダイアログの消去
  3. 【BComDlg.vb [コード]】
    1. Private Sub OK_Click() の中のMe.Hide()をコメントアウトします。
    2. 'Hide() '// UserCmd.vbで非表示にするように変更
    3. Private Sub Cancel_Click() の中のMe.Hide()をコメントアウトします。
    4. 'Hide() '// UserCmd.vbで非表示にするように変更
    5. Private Sub m_clsMouseHook_MouseDownの中の「Call Me.OK_Click(sender, e)」を置き換えます。
    6. Call Me.OK_Click(sender, e)

      SendMessage(Me.OK.Handle.ToInt64(), BM_CLICK, 0, 0)
      に変更します。
    7. Private Sub m_clsMouseHook_MouseDownの中の「Call Me.Cancel_Click(sender, e)」を置き換えます。
    8. Call Me.Cancel_Click(sender, e)

      SendMessage(Me.Cancel.Handle.ToInt64(), BM_CLICK, 0, 0)
      に変更します。
補足
オプションコマンド終了時にDRA-CADが一瞬非表示になって再び表示されてしまう現象は起きない場合もございます。



文書情報

製品カテゴリ: DRA-CAD 最終更新日: 2017-06-06
バージョン: DRA−CAD[オプションプログラム],
文書番号: DRA00988
分類: オプションコマンド


kozoStation オンライン販売 ソフトウェアのご購入は、オンライン販売からご購入ができます。オンライン販売では、10%OFFでご購入ができます。