問題タブ [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.
mfc - 私の MFC アプリケーションでは、新しい子ウィンドウを作成します。新しい場所にドラッグすると、ドラッグ中にアウトラインが描画されないため、視覚的なフィードバックが発生します
これは、MDI アーキテクチャを使用する大規模な MFC アプリケーションの一部です。Microsoft Visual Studio 2019 を使用して記述されています。
ユーザーがテキスト ファイルの解析について決定できるように、テキスト ファイルの最初の数行を表示するウィンドウを作成したいと考えています。新しいウィンドウは Document/View アーキテクチャ全体に適合しないため、デスクトップ ウィンドウを親にしました。ウィンドウが正常に作成され、画面の左上に正常に配置され、テキスト ファイルの最初の数行が表示されます。ただし、新しい場所にドラッグすると、ドラッグ中にアウトラインが描画されず、最終的には意図した場所に配置されるため、ユーザーに視覚的なフィードバックはありません。
ウィンドウを作成するコードは次のとおりです。
WS_ スタイルと CS_ スタイルのさまざまな組み合わせを試してみましたが、成功しませんでした。ドラッグ操作中にウィンドウの非クライアント部分が更新されていないように思えます。
ここで基本的なものが欠けていると思います。明確化をいただければ幸いです。
mfc - ネストされたタブ構造で同じダイアログを 2 回表示する
タイプのネストされたタブ構造CMFCTabCtrl
(例: CMFCTabCtrl
Tab in parent CMFCTabCtrl
) で、親タブと子タブ内に親タブを表示するにはどうすればよいCMFCTabCtrl
ですか?
ParentTab1 ParentTab2 ParentTab3 <--親CMFCTabCtrl
タブ
ChildTab1 ChildTab2 ParentTab2 <-- ParentTab3 /"子"CMFCTabCtrl
タブ
私の最初のアプローチは、基本的に、 ParentTab2内に表示されるダイアログの「2」個の親があることを完全に無視することでしたが、あらゆる種類のグラフィカルな問題が発生しました。この 2 人の親の必要性をどのように克服できますか? 子の内部にもParentTab2CMFCTabCtrl
を表示し、クリック イベントなどを担当する両方のビューを維持するために、ある種のソフト コピーを作成できますか?
c++ - HWND から MFC メッセージを読み取る最も簡単な方法は?
メッセージをサーバーに送信し、メッセージを受信する関数で api ライブラリを使用しようとしています。関数の引数の 1 つが HWND であり、ライブラリ ドキュメントには、メッセージが HWND によって受信されることが示されています。受信したメッセージを読むために、いくつかの MFC ドキュメントを調べ、メッセージを処理する関数を持つ CDialog を継承するクラスを作成し、メッセージ マップを操作しようとしました。
しかし、これらの作業は、動作するダイアログ ウィンドウを作成するのではなく、コンソールに表示したり、コードの他の部分で使用したりできるようにメッセージ自体が必要な場合、少し面倒に思えました。では、MFC を気にせずに HWND からメッセージを単純に「抽出」する方法はありますか? そうでない場合、最も簡単な方法は何ですか?
API ドキュメントの詳細
クラスWrapper
はdllライブラリファイルをメンバー関数にラップします。関数を使用しようとしていますBOOL Wrapper::Func1(HWND hWnd, DWORD msg, const char* inputStr)
クラスはMyDlg
継承し、そのクラス メンバーとしてCDialog
持ちます。Wrapper m_wrp
LRESULT MyDlg::HandleEvent(WPARAM w, LPARAM l)
受信したデータを出力して返すメンバー関数ですTRUE
MyDlg
のメンバー関数が定義されている cpp ファイルの途中にこのコードがあります。inputStr
によってサーバーに送信されたものは何でもWrapper::Func1
、同じメッセージCA_01
が受信されるようです。CA_01
別のヘッダー ファイルで定義された const DWORD です。いくつかの検索の後、これはメッセージを継続的にチェックし、MSG
withが受信された場合は.:msg = CA_01
を呼び出す部分であると思います。HandleEvent
作成するボタンがあり、MyDlg
押すと入力テキストが読み込まれ、void MyDlg::OnSend()
呼び出され、m_wrp.Func1(...)
呼び出されます。
このサンプル コードを API ドキュメントからテストしたところ、問題なく動作しました。編集可能なテキスト ボックスとボタンを含むウィンドウが表示されます。テキストを入力してボタンを押すと、数秒後に受信したメッセージが表示されます。
ただし、Wrapper
インスタンスを作成し、while ループ内でFunc1
PeekMessage を使用してメッセージを呼び出して受信しようとすると、何も起こりません。
これは、ON_MESSAGE(...) と PeekMessage(...) の違いによるものですか?