メインコンテンツへスキップ

最小化復帰後の動作

コメント

8件のコメント

  • shinpei

    ISHIJIMAさま

    ありがとうございます。

    画面がチラつくことなく、最小化前の画面状態を維持して復帰すればいいだけなんですけどねぇ・・・。

    よくわからん動きで困ります。よく似た別のシステムで、xpa3.2では問題なかったんです!

    xpa4.6からおかしいのかも?xpa3.3は試してない・・・。

    まずは、単純なプログラムにて検証を行ってみます。

  • shinpei

    ISHIJIMAさま

    ありがとうございます。

    単純なプログラムでも発生しました。

     

    ボタン3つのオンラインタスク

    それぞれのボタンから、並行実行のサブプログラムのオンラインタスクを複数起動し、

    Magic内で最小化し、Magic自体最小化した後、タスクバークリックでチラつき現象が発生しました。

    サポートに問い合わせしてみます。

     

  • shinpei

    ISHIJIMAさま

    ご検証いただきありがとうございます。

    サポートに問い合わせしたところ、現象を確認し調査する旨連絡がありました。

    進展ありましたら、また投稿させていただきたいと思います。

  • shinpei

    ISHIJIMAさま

    気にしていただきありがとうございます。

    難航しているようです。

    まだ明確な回答がいただけておりません。

     

     

  • shinpei

    サポートから回答がありました。

    画面のチラつきに関しては、次回バージョンで修正を行いたいが、まだ修正可能かがわからないそうです。

    最小化前にアクティブだったウィンドウを最小化復帰後にそのままアクティブにする件に関しては

    サポートからサンプルプログラムをいただき解消できました。

     

  • shinpei

    ISHIJIMAさま
    テクニカル情報に公開されるのでしょうか?
    復帰後アクティブにする件に関して、プログラムをそのまま書いてみます。

    コンポーネント
    System
    System.Drawing
    System.Windows.Forms

    メインプログラム
    変数定義
     ◆変数1 MainWindow  型:数値:N18C
     ◆変数2 MainControl  型:.NET
     ◆変数3 ProgControl  型:.NET

    タスク前
      アクション 式:SharedValSet('WindowState',0) 条件:ISNULL(SharedValGet('WindowState'))

    ①イベント コンテキストがフォーカス取得(G) スコープ:サブツリー
      項目更新 ◆変数3 値:DotNet.System.Windows.Forms.Control.FromHandle(WinHWND(0))
      アクション 式:SharedValSet('ContextName',CtxGetName()) 条件:DNCast(◆変数3.FindForm().WindowState,DotNet.System.Int32)<>1

    ②イベント ウィンドウサイズ変更 スコープ:サブツリー
      ③をコール ウェイト:No 条件:SharedValGet('WindowState')=1
      項目更新 ◆変数1 値:DotNet.System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
      項目更新 ◆変数2 値:DotNet.System.Windows.Forms.Control.FromHandle(◆変数1)
      アクション 式:SharedValSet('WindowState',DNCast(◆変数2.FindForm().WindowState,DotNet.System.Int32))

    ③イベント UE_Focus←ユーザイベント スコープ:サブツリー
      SetContextFocus(SharedValGet('ContextName'))
      SetContextFocus(SharedValGet('ContextName'))

      ↑なぜか2回コールしないと動かない


    ISHIJIMAさまのおっしゃる通り状態を覚えておいて、

    最小化から復帰したときに再フォーカスするといった感じでしょうか。

    .NETを使い慣れてないので、少し苦労しました。

     

    Magicの画面サイズを通常から最大化した時の処理がまだダメそうでした…。最小化しているプログラムにフォーカスがいっちゃいますね。

     

  • Tanda

    OSや他の要因が絡んでいそうな問題ですと、安直に公開できない要素が潜むこともあると思いますよ。掲載されるかどうかはマジック社の判断ですので、あまりせかすのはやめましょう(笑

  • Tanda

    そうですね、なるべく早くにいろいろな情報を流していただけると助かりますね。

サインインしてコメントを残してください。