問題タブ [cdialog]
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.
dll - JNI を使用して Java から CDialog を開く
DLL 内に記述された CDialog を開く必要があるアプリケーションがあります。問題は、DoModal() が DLL 内で呼び出されると、プログラムがクラッシュし、"Debug Assertion Failed!" が表示されることです。CDialogを開く方法を知っている人はいますか? ありがとうございました!
mfc - WS_POPUP ダイアログを含むカスタム ツールチップ
あらゆる種類のコントロールを配置できるカスタム ツールチップを作成したいと考えています。私は CDialog から派生し、WS_POPUP | WS_BORDER
スタイルを使用しました。CS_DROPSHADOW
また、OnInitDialog にスタイルを追加して、ツールヒントの影を取得します。
次に、ツールチップを表示/非表示にするイベントを自分で管理WM_MOUSEHOVER
します。WM_MOUSELEAVE
SetWindowPos
と を使用してツールチップを表示しSWP_NOACTIVATE
、親が非アクティブになり、新しいダイアログがアクティブになるのを防ぎます。とにかく、CDialog::Create
メソッドを使用してダイアログを作成すると...メインウィンドウが非アクティブになります...これは非常に悪い効果をもたらします。
したがって、新しいダイアログが表示されたときにメインウィンドウ(またはダイアログの親ウィンドウ)が非アクティブになることなく、WS_POPUPスタイルでCDialogを作成するにはどうすればよいですか?
助けてくれてありがとう!
編集済み:ダイアログの作成に WS_VISIBLE スタイルを使用していません...これはリソースです:
ツールチップを表示するコードは次のようなものです。
初めて(つまり、作成が呼び出されたとき)メインウィンドウはフォーカスを失います...残りのウィンドウでは、この醜い効果は発生していません...だから、作成が原因であると確信しています。
c++ - 境界線とフォーカスの点線が見えるように CButton にフォーカスを設定する方法は?
簡単なダイアログ ベースのアプリケーションを作成し、既定の CDialog に、Visual Studio エディターを使用して (ドラッグ アンド ドロップで) 3 つのボタンを追加しました。
デフォルトの [OK] ボタンと [キャンセル] ボタンもそこにあります。
ボタン 3 をクリックしたときにボタン 1 にフォーカスを設定したい。
多くのボタンのプロパティでプロパティ Flat を true に設定しました。
私はこれをコーディングしました:
しかし、button1 のボーダーは描画されません。キャレット (フォーカスを示す点線) は、ボタン 3 をクリックする前にいつでも TAB を押した場合にのみ描画されます。
ボタンをクリックした後の見た目とまったく同じようにボタンを表示したい。プログラムでボタン内に点線を表示すると、プラスになります。
私が欲しいもの:
私が得るもの:
mfc - 2 つのボタンがマップされているときに CDialog が閉じない
Visual Studio 2005、C++、Windows XP。
次のような関数を呼び出す単一のボタンを持つ CDialog があります。
[X] をクリックすると、ダイアログ ボックスが閉じます。
上記のコードを次のように変更します。
ダイアログ ウィンドウが閉じなくなりました。X がクリックされるたびに、Baz() が呼び出されます。2 番目の ON_BN_CLICKED() ハンドラは、何らかの理由で通常のダイアログを閉じる動作を置き換えています。
2 つ以上のボタンが機能に割り当てられているダイアログ ボックスを閉じるにはどうすればよいですか?
windows - Windows用のコマンドラインダイアログツール
cdialog(またはwhiptail)に似たダイアログツールが必要ですが、Windowsで動作します。
私はMinGWを持っており、ソースから何かをコンパイルすることは問題ありませんが、私が知っている唯一のものであるcdialogとwhiptailの両方に、UNIX固有のコードが含まれているため、Windowsではコンパイルされません。
使用できる代替手段はありますか?プラットフォーム固有のコードを自分で理解して置き換える必要はありません。
.net - .NET + COM でキーボード ルーティングの動作が変更されました
私は非常に奇妙な問題を抱えているので、適切なタイトルを付けることはほとんどできません。
要するに、CDialog から派生したダイアログを使用して、MSVC++/MFC で記述された COM オブジェクトがあります。そのダイアログには、プレーンな CWnd から派生したウィンドウである 3 つの子「ユーザー コントロール」があります。
この COM オブジェクトをさまざまな場所から使用すると、すべてが期待どおりに機能します。しかし、C# アプリケーション (.exe ファイル) から使用すると、キーボードの動作が異なります。つまり、壊れていると言えます。
そして、異なるということは、次のことを意味します。
- 「ユーザーコントロール」のいずれかにフォーカスがあるときに押された各キーは、WM_KEYDOWNメッセージを飲み込もうとしても、どこかから「エラービープ」を生成します
- WM_CHAR / OnCharは「ユーザーコントロール」によって受信されませんが、Spy ++は投稿されていると言います
- OnKeyDown と OnChar の最初に MessageBox を配置すると、突然 OnChar が呼び出され、OnKeyDown の最初にある MessageBox が表示される前に呼び出されます
- OnKeyDown からメッセージを投稿することで OnChar が呼び出されないことを克服できますが、ビープ音を止める方法がわかりません
これは、非 .NET アプリケーションから使用されている COM オブジェクト ダイアログと比較して、すべて変更された動作です。
私は完全に満足していない回避策を見つけたので、誰かがこの問題に光を当てることができれば、私はとても幸せです! :-)
回避策は次のようになります。次のように、「ユーザーコントロール」を作成する代わりに:
私はそれを次のように変更します:
次に、キーボード、マウス、およびフォーカス メッセージをブロックして、基になる編集コントロールが混乱しないようにする必要があります。いくつかの重要なメッセージをブロックするのを逃し、ユーザーが自分で見つける前に予期しない動作を見つけるのではないかと心配しています...
要するに、「何か」(周囲の .NET 環境に関連するもの) は、私の「CWnd コントロール」がキーボード処理を行うことができないと考え、私を台無しにします。「編集」から派生することで、この「何か」を変更することができます。周囲のプロセスが、たとえば VB6 アプリケーションである場合、これはすべて発生しません。
誰か?
mfc - 画面の隅に CDialog を作成します
CDialog を作成する MFC アプリケーションがあります。この CDialog が画面の中央に表示されるのではなく、画面の端に表示されるようにしたいので、ほとんど表示されないか、最小化されているのが良いでしょう。
これどうやってするの?
mfc - 実行時にモードレスダイアログをモーダルに変換する
2つの異なる方法(エディションモードとプログラミングモード)で使用できるダイアログ(CDialog派生クラス)があります。
ダイアログがプログラミングモードで使用するために開いている場合、メインビュー(ツールバーの一種)を変更するために使用されるのはモードレスダイアログです。エディションモードで開いている場合、ユーザーはダイアログ自体の構成を変更できます。この場合は、モーダルダイアログです。
現在、これらは2つの異なるダイアログであり、違いはほとんどありません。ダイアログが必要なだけで、ユーザーがダイアログのボタンを押すだけでプログラミングモードとエディションモードを切り替えることができます。
したがって、実行時にモードレスダイアログをモーダルダイアログに変換する必要があります。その逆も同様です。それを達成する方法はありますか?
ありがとう。
mfc - CDialog がメイン フレームの子孫ではない
メイン フレームの子孫ではないダイアログ (CDialog) を作成する方法はありますか?
作成時に親ウィンドウを指定しないと、親ウィンドウがメイン アプリケーション ウィンドウになります。NULL パラメータを指定して SetOwner と SetParent を使用しようとしましたが、うまくいきませんでした。
メインウィンドウの子ではないダイアログ、または最終的にメインウィンドウの子である他のウィンドウを作成する方法はありますか??