問題タブ [cwnd]

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.

0 投票する
2 に答える
2800 参照

mfc - 最大化されたウィンドウが全画面表示に戻る

を使用CWnd::ShowWindow(SW_SHOWMAXIMIZED)すると、期待どおりにアプリ ウィンドウが最大化されます。

ただし、アプリの復元ボタンをクリックする (またはタイトル バーをダブルクリックする) と、復元されたサイズは最大化されたウィンドウと同じサイズになり、ユーザーを混乱させます。

この代替コードを使用すると、同じ問題があります。

復元時にデフォルトの最大化されていないサイズを維持するにはどうすればよいですか。

0 投票する
1 に答える
731 参照

visual-c++ - GetFocus を特定のダイアログやアプリケーションに制限する

私はいくつかの編集コントロールを持つ CDialog ベースのダイアログ ボックスがある MS Visual C++ プロジェクトを持っています。ユーザーの現在のフォーカスを持つコントロールを強調表示したいと思います。これを実装するには、GetFocus() で現在フォーカスがあるウィンドウへのポインターを取得し、GetDlgCtrlID() でフォーカスされたコントロールの ID を取得します。

CWnd *pWnd=GetFocus();

idfocus=(pWnd->GetDlgCtrlID());

次に、これをメンバー関数 OnCtlColor で HBRUSH が設定されている現在のコントロールと比較します。

これは、PC で実行されている別のアプリケーションのウィンドウをクリックするまで問題なく動作します。Firefoxなど。その時点でアプリケーションがクラッシュします。

特定のダイアログ ボックスで、その特定のダイアログ ボックスのみにフォーカスがあるコントロールがある場合、それを見つける最良の方法は何ですか? または、同じアプリケーションのみに制限することもできます。

0 投票する
1 に答える
5071 参照

c++ - C++ エラー: 識別子 "CWnd" が定義されていません

私は C++ の初心者なので、ご容赦ください。

関数内に存在するこのコード行:

CWnd「未定義」として出てきます。グローバルスコープで定義する必要があることはわかっていますが、どうすればよいですか? このクラスを使用するには、どのヘッダーを含める必要がありますか? プロジェクトは MFC です。

VS 2010 を使用しています。

0 投票する
2 に答える
1399 参照

c++ - CStatic と CWnd およびメッセージ ルーティングについて

MFC でメッセージ ルーティングがどのように機能するかを理解しようとしていますが、それに関していくつか質問があります。CWnd を拡張するコントロールを想像してください。私の最初の質問は、そのコントロール内のすべてのメッセージが親コントロールに渡されるかどうかです。

SS_NOTIFY スタイルを設定したときに特定のメッセージのみを渡す CStatic では、それが起こらないことを私は知っています。それが CStatic に固有のものであるか、すべてのコントロールで発生するかを理解しようとしています。具体的には、レイアウトを定義することのみを目的として、いくつかの子コントロールを持つコントロールを作成しようとしています。子コントロールのすべてのメッセージが、この中間コントロールの親によって処理されるようにしたかったのです。たとえば、このレイアウト コントロールに子ボタンがある場合、ボタンがクリックされると、メッセージが親に送信されて処理されます。

ただし、すべてのメッセージを手動で処理するつもりはありません。では、CStatic ではなく CWnd から制御を拡張すると、メッセージは渡されますか? FORWARD_NOTIFICATIONS() は MFC で使用できますか? そうでない場合は、中間クラスを拡張して、必要に応じてメッセージを処理したいと思います。あなたが知っている他の解決策はありますか?

0 投票する
3 に答える
12120 参照

c++ - MFCはCWndメンバーにスクロールバーを追加します


CWndクラス名mywindowのメンバーがいて、
それにスクロールバーを追加したいと思います。
どうすればいいですか?

私はすでにやろうとしています:

水平スクロールバーと垂直スクロールバーの両方が表示されます
が、ボタンを押したり、スクロールバーを移動したりできません。
私は最初のコマンドの後でも試します:

そしてそれは何も変わりません。

誰かがこのメンバーにスクロールバーを追加する簡単な例を教えてもらえますか?

どうもありがとう、
タル

0 投票する
1 に答える
2976 参照

delphi - DelphiでCWndオブジェクトのウィンドウハンドルを取得するにはどうすればよいですか?

ウィンドウへのハンドルを返すEpicEditorがあります(以下のplugin_1のJavaコードを参照)。

実際、このハンドルはCWnd *ポインターです。ネイティブplugin_2への直接転送は機能しません。代わりに、呼び出しでMFCをサポートするdllを使用する必要があります

MFCなしで​​Delphiでこのコードを書き直すにはどうすればよいですか?ポインタからCWndオブジェクトへのウィンドウハンドルの抽出を意味します。

0 投票する
2 に答える
1210 参照

visual-c++ - IAccessible インターフェイスのオーバーライドされた関数が cwnd 駆動クラスで機能しない

CWndボタンという名前の派生クラスがあり、CWndアクセシビリティ関数を使用したいので、クラスでこの関数をオーバーライドします。

プログラムを実行し、これらの関数の実装でブレークポイントを設定すると、プログラムはこれらの関数に入らず、代わりに親関数を使用します。

get_accName の実装:

このクラスのコンストラクターを呼び出しますEnableActiveAccessibility()が、まだ機能しません。

0 投票する
1 に答える
2556 参照

c# - PostMessage() からの MFC Windows メッセージを処理する C# イベントを作成する方法

WINSOCK を使用するマネージ C++ DLL があります。受信すると、PostMessage() を介してカスタム メッセージを CWnd * に送信します。これは、アンマネージ C++ から呼び出された場合に正常に機能します。ターゲット CWnd * は、次のコードを使用した構築後に C++ クラスに登録されます。

メッセージを CWnd に投稿するコードは次のとおりです *

現在、C# Windows フォーム アプリケーションからこの CUdpRetrySocket クラスを使用しています。質問:

  1. C# Forms クラスから CWnd * を取得して C++ CUdpRetrySocket クラスに登録する方法

    ここで答え#1を見つけました

  1. C# ウィンドウでイベントを作成して、このカスタム MFC スタイル メッセージをキャプチャするにはどうすればよいですか?

  2. ウィンドウが最小化されている場合でも、パケットを処理するには C# アプリが必要です。C# フォーム ウィンドウは、最小化されている場合でもこれらのメッセージを受け取りますか?

  3. これを行うより良い方法はありますか?

0 投票する
1 に答える
276 参照

mfc - 親の CDialog ではなく、親の CWnd に CBitmapButton をアタッチできますか?

CWnd から派生した親ウィンドウに多数のボタンが接続されているプロジェクト (元々は Win95 用に作成されたものです!) を継承しました。ボタン自体は CWnd から派生したユーザー定義クラスにあるため、「実際の」ボタンではなく、膨大な数のコード行によって定義された小さなウィンドウであり、私が汗を流してきた大量の表示の問題があります。解決策が見えないまま、数週間。

先日、CBitmapButton が優れた代替手段のように見えると結論付けました。シンプルに見えますが、異なるボタンの状態に対して 4 つのビットマップを定義します。ハンドラーを起動するために必要なのは BN_CLICKED だけです。

これをしばらくいじり、ボタンといくつかのビットマップを設定した後、CBitmapButton を表示することができました。見栄えは良くありませんでしたが、修正できます...問題は、BN_CLICKEDメッセージをキャプチャするメッセージマップを設定しようとしたことですが、親ウィンドウはCDialogではなくCWndから派生しているため、構文エラーが発生しますメッセージ マップの設定。この件に関する MSDN を数回読んでみると、CBitmapButton を CDialog 派生クラスにしか接続できないようです。これは私にはかなり奇妙に思えます-私はボタンが欲しいだけで、単純な「クリックされました」を、それが接続されている親に送信できるはずですが、どうやら起こる運命にはありません。

それで、CBitmapButton を CWnd 派生の親に正常にアタッチした人はいますか。もしそうなら、これらのもので動作するメッセージマップをどのようにセットアップしますか? あるいは、CBitmapButton と CButton は親として CDialog を必要とするように見えるため、CWnd 親で動作するボタン クラスを設定するには、どのような方法を使用しますか?