問題タブ [modeless]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - フォーカスを失ったときにモードレスダイアログを破棄するにはどうすればよいですか?
モードレスダイアログを作成し、このダイアログの上にグリッドを配置しました(グリッドはダイアログ上で完全に重なっています)。これは、ユーザーがF2をクリックすると表示されます。次に、ユーザーがダイアログの外側でマウスの左ボタンをクリックすると、このダイアログを破棄します。誰かがダイアログを破棄する方法を提案できますか?(外側をクリックするとツールチップが破壊されるのと同じように)
java - モードレス JDialog がコンテンツを表示しない
(Java SE 6) プログラムが時間のかかる作業を行っている間、「しばらくお待ちください」というメッセージを表示するポップアップ ダイアログを作成しようとしています。これを行うために、モードレス JDialog を使用することを選択しました。これにより、JDialog が表示されている間もプログラムが実行され続け、機能します (モーダル ダイアローグを使用すると、ユーザーがダイアログを閉じるまでプログラムは停止します)。 .
問題は、この方法でモードレス ダイアログを使用すると、タイトル付きの JDialog が表示されますが、内容が表示されないことです (何らかの理由で描画されないと思います)。repaint などを呼び出してみましたが、何も機能していないようです。
さて、インターウェブ上の多くの人々によると、これは Swing の本物のバグであり、私が見つけた唯一の答えは、この方法で物事を行わず、ユーザーに待機するように通知する別の方法を見つけることです。ここにいる誰かが以前にこの問題を抱えていて、回避策を見つけたことがあるかどうか興味があります.
ありがとう!
wpf - WPF モードレス ダイアログでテキスト ボックスが編集不能になる
WinForms ウィンドウから起動した WPF フォームは、モードレス ダイアログとして起動すると、すべてのテキスト ボックスが編集不可として表示されます。モーダルウィンドウだとうまくいきます。スペースを入力したり、テキストを貼り付けたりすることはできます。しかし、通常のタイピングは機能しません。SP1で3.5を使用しています。これを解決する方法を知っている人はいますか?
wpf - 新しい STA スレッドで非モーダル ウィンドウが閉じないようにする方法
非モデル ウィンドウ (WPF) をいくつか開きたいのですが、これが発生する必要がある時点で、非 STA スレッドを使用しています。だから私は新しいスレッドを開始し、そこでそれらを開きます。しかし、開くとすぐに再び閉じます。(ちなみに、これらのウィンドウの動作はメインウィンドウから独立している必要があります。したがって、所有者プロパティは設定されていません)
ここで何が間違っていますか?
android - タッチしたときにGoogleマップが表示するような、Androidにモードレスダイアログはありますか?
ユーザーとやり取りできるウィジェットが必要ですが、画面のどこかがタッチされたときにGoogleマップが行うように、アクティビティをブロックしません。体はそれを実装する方法を知っていましたか? トースト、アラート、ダイアログをテーマにしたアクティビティでさえ、私はすでに知っていますが、それらはすべて私の要求を満たしていないようです。どうもありがとう。
c++ - モードレス ダイアログとアクセラレータ
CTRL+S
ユーザーがモードレス ダイアログ内を押したときに、何らかのアクションを実行したいと考えています。アクセラレータはこれに最適ですが、スレッドのメッセージ ループ (プラグインと考えてください) を制御できないため、TranslateAccelerator
.
メイン アプリケーションは への呼び出しの間に多くの処理を行うため、ネストされたメッセージ ループはオプションではありませんPeekMessage
。
- アクセラレータを処理するために既存のメッセージ ループを「強制」する方法はありますか?
- アクセラレーター以外にキャッチする方法はあります
CTRL+S
か?
またはWH_GETMESSAGE
から戻る前に呼び出されるWindow フック on を使用することを考えました。しかし、 を正常に呼び出した後に何が起こるかはわかりません。処理したことをアプリケーションに知らせることはできません。
アプリで への呼び出しを実装する必要がありますが、デバッガーで一目でわかるわけではありません。GetMessage
PeekMessage
TranslateAcellerator
WH_MSGFILTER
CallMsgFilter
私の最後のアイデアは、私が避けようとしているコントロールをサブクラス化することでした。これには、keypress イベントを親ウィンドウに通知するメカニズムが必要になりますが、これは優れた設計ではないと思います。また、コントロールをさらに追加すると、すべてのコントロールをサブクラス化する必要があります。
ヒントをありがとう。
wpf - モードレス子 WPF ウィンドウからネイティブ MFC MDI アプリケーションへ
MFC MDI アプリケーションがあり、それに新しいダイアログを追加しようとしています。このダイアログをWPF(基本的にダイアログではなくウィンドウ)にしたい。このウィンドウはモードレスで、現在の MDI ビューの子である必要があります。
MFC アプリケーションに CMyView があり、その OnCreate で WPF ウィンドウを作成しようとするとします。そのために、CMyWindowWrapper (/CLR でコンパイル) というラッパー クラスを作成しました。
ウィンドウ ラッパー クラスには、実際に WPF ウィンドウを作成する Create 関数があります。
MyWindow は、次のように ShowModeless という関数を追加した WPF ウィンドウです。
現在、アプリケーションは次のように動作します。CMyView が作成されるたびに、モードレス MyWindow が正常に作成され、フォーカスが CMyView にある場合でも常に CMyView の上に表示されます。ただし、CMyView を閉じたり最小化したりすると、MyWindow は追従しません。アプリケーション全体が閉じられる/最小化される場合にのみ、閉じられる/最小化されます。
必要に応じて、問題を示すサンプル アプリケーションを添付できます。
お知らせ下さい。
どうもありがとう。
dialog - 自作のモードレス ダイアログを表示するとタスク バーが表示されるのはなぜですか? .. 時折?
興味深い(しかしイライラする)問題があります。フルスクリーンを使用するアプリケーションがあります (これは、サードパーティのフルスクリーン POS アプリケーションをシミュレートするためのものです)。
私のアプリケーションは、全画面アプリケーションの上に一連のモードレス ダイアログ ボックスを表示します。1つを表示して非表示にし、次を表示して非表示にします。3回目の表示の後、約1秒後にWindowsタスクバーが表示されます。理由がわかりません。
OnNcActivate ハンドラー (スキン ウィンドウを描画するために使用) で何かを行っているかどうかを確認するために、コードをすぐに削除しましたが、問題がタイミングに関連しているように見えるため、そうではないと思います。私は Spy++ を実行し、m WindowProc にメッセージをダンプしようとしましたが、手がかりとなる奇妙なものはまだ見当たりません。
ログに ID 0x36e のメッセージがいくつかありますが、それが何なのかわかりません。さまざまなメッセージ ID リストを確認しましたが、見つかりません。WM_USER は 0x400 まで開始されないため、それらは私自身のメッセージ ID であってはなりません。
タスクバーを自動的に非表示にすることでこの問題を回避できることはわかっていますが、問題を回避するためにタスクバーを自動非表示に設定するよう顧客に依頼することはできません。
モードレス ダイアログ ボックスに関連してタスク バーが表示される理由はありますか?
編集:私は自分で描いたGUIコードを完全に取り除きましたが、まだ同じ問題があります。私は間違っている可能性がありますが、最初に ShowWindow( SW_HIDE) を呼び出すと、Windows は "別のウィンドウ" をアクティブにしようとするようです (MSDN に記載されているように)。この場合、POS アプリケーションではなくタスクバーをアクティブにしていると思います。一方、2 番目のウィンドウで ShowWindow( SW_HIDE ) を呼び出す前に 2 番目のウィンドウを開くと、それ自体が動作しているように見えます。
乾杯スパーキー
windows - サードパーティのフルスクリーン アプリの上にモードレス ダイアログが表示されると、タスクバーが表示されるのはなぜですか?
以下の場所に VS2010 プロジェクトをアップロードしました。フルスクリーン アプリケーションを実行したら、このテスト アプリを実行する必要があります。実行するとすぐに、フルスクリーン アプリケーションをクリックして戻るまでに 2 秒かかります。ダイアログ ボックスの所有者としてフル スクリーン アプリケーション (フォーカスを持つ最後のウィンドウである必要があります) を使用して、2 つのモードレス ダイアログ ボックスを作成します。1 つのダイアログが表示されて非表示になり、2 番目のダイアログが表示されて非表示になり、最初のダイアログが再び表示されるというサイクルが繰り返されます。私が見つけたのは、最初のダイアログ ボックスが 2 回目に表示されると、タスクバーがポップアップすることです。私はここで何が起こっているのかを理解しようと 4 日間苦しい日々を過ごしてきました。
DestroyWindow を呼び出してダイアログを非表示にすると、Windows がフォーカスを「どこかに」、私の場合はタスクバーに置くことを示唆するヘルプを受け取りました。以前、この質問をしたとき、ウィンドウの所有者としてフルスクリーン アプリケーションを使用していませんでした。フォーカスを所有者ウィンドウに戻す必要があると思いましたか? また、ダイアログで DestroyWindow を呼び出す前に、全画面アプリケーションで SetFocus() と SetForegroundWindow() を呼び出してみましたが、タスクバーが毎回表示されるようで、まったく必要ありません。
助けてください!