問題タブ [c++builder-2007]
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.
c++ - SwapMouseButton(TRUE);を使用する ウィンドウの右クリックドラッグを許可するには
右クリックドラッグオプションを使用してウィンドウを移動できるようにする必要があります。私はこれを、私が本当に好きではないいくつかの卑劣なコードを介して行いましたが、それは機能します。
現在、WM_NCRBUTTONDOWNメッセージをトラップし、移動モードにあることを示すブール値を設定して、WM_NCRBUTTONUPを受信したときにこの変数をリセットしています。移動モードでは、WMNCMouseMoveをチェックし、フォームを自分で移動しています。これはマウスの速い動きに追いつくのが遅いので、GetCursorPosを使用して同じことを行うようにタイマーも設定しました。
私は最近SwapMouseButton関数を発見しました、そしてこれはまさに私が望むことをします。しかしありますが!条件付きで、ユーザーがウィンドウのCAPTION領域を右クリックした場合にのみ交換する必要があります。
そのため、WM_NCRBUTTONDOWNを受け取ったときにマウスボタンを入れ替えて、WM_NCRBUTTONUPでリセットします。ただし、WM_NCRBUTTONUPがリセットしない限り、これは後続のクリックで機能します。これは、クリックイベントがすでに発生しているため、スワップが遅れているためだと思います。そのため、マウスのスワップを引き起こした右クリックとドラッグではなく、後続の右クリックヒットでは機能します。
誰もがこれを回避する方法を見ることができますか?ボタンを閉じる、最小化する、最大化するために左クリック機能が必要であることを念頭に置いてください。移動するには右クリックします。
助けてください!!!!!
ありがとう、ジョー
c++builder - BorlandBuilder2007の子VCLコントロールとWindowProcメソッド
Builderでサポートされているよりも多くのイベント(つまり、マウスの中央でのダブルクリックなど)を判別するために、コントロールのWindowProc関数をオーバーライドすることができました。
問題は、子コンポーネントWindowProcをオーバーライドすると、親がまだイベントを取得することです。
私の場合、ボタンが親になっているパネルがあります。ボタンはパネルの一部を覆い隠しますが、ボタンをクリックすると、親(パネル)もイベントを取得します(ボタンもイベントを取得することはテストされていませんが、誰かが最初にこれに対する解決策を持っているかどうかを確認したいと考えていました)。
親がイベントを受信するのをプログラムで停止する方法、またはイベントが親ではなく子のためであるかどうかを判断する方法はありますか。
私が抱える問題は、ユーザーがボタンを押すと、パネルイベントとボタンイベントがトリガーされることです。
アドバイスをいただければ幸いです。
ジョー
コード例:PanelとButtonは、m_kOldComponentWndMethodとComponentWndProcメソッドが存在するConfigComponentクラスから派生していることに注意してください。
パネルをオーバーライドする
ボタンのオーバーライド
Component Wnd Procメソッド(ここでは、パネル用に1回、ボタン用に1回)
ありがとう、ジョー
menu - メインメニュー項目をポップアップメニューとして再利用する
メインメニューのあるフォームのアプリケーションがあります。次に、サブメニューの1つ(MEdit)の項目の正確なコピーを含むポップアップメニュー(MPopup)を表示したいと思います。
冗長なアイテムを管理せずにポップアップメニューにデータを入力するにはどうすればよいですか?問題のメニューはすべて静的であり、動的な入力はありません。
システム情報:RAD Studio 2007(C ++ Builder)
c++ - SetWindowsHookEx を使用する C++ は、奇妙な vcl コードが追加された場合にのみ機能します。BCB2009で
SetWindowsHookEx を使用すると奇妙な状況が発生します
フォームとメモを含む bcb 2009 プロジェクトがあります。
create では、DLL をロードし、関数ハンドラを両側にアタッチします。
アイデアは、キーボードが打たれるとメモ ボックスにメッセージが表示され、マウス イベントが発生すると別のテキストがメモ ボックスに表示されるというものです。
奇妙なことに、デバッグ情報からコードを消去すると、コードが機能しなくなります。これは、フックが 1 回トリガーされ、それが終了したことを意味します。デバッグでは、いくつかの VCL TStringList を使用してキー ストローク データをディスクに記録しました。そのコードで遊んで、追加することで最終的にそれを検出しました
[コード]
フック機能 (キーボード、マウス) のすべてに対して、コードは再び機能します。
これを行う必要があるコードの何が問題になっていますか?
dllを作るのは15年ぶりです。そのため、dll の作成や関数のエクスポートにおいて、本当に基本的なことができます。
どんな提案も大歓迎です。
よろしく
JVDN
新しい追加情報:
[解決]私のターゲットはwin XP組み込みです。私のアプリケーションは、ウィンドウによってエクスプローラーを閉じるエラーを作成します。また、フックはXPではグローバルではなく、ローカルでのみ機能します。しかし、それは私の開発プラットフォームで作業しており、メモ帳でグローバルなタイピングとマウス操作を行うと、アプリケーションにメッセージが表示されます。[解決策] WH_KEYBOARD を WH_KEYBOARD_LL に変更し、マウスを WH_MOUSE から WH_MOUSE_LL に変更すると、Windows XP Embedded でのキーとマウスの受信が解決されます。
dll とアプリケーションの両方に、ランタイム ライブラリまたはパッケージがありません。
DLL コード
[コード]
で、申し込みはこちら。
[コード cpp]
そしてフォームヘッダー
[コード]
c++builder - パスワードフィールドのTcxMaskEdit
TcxMaskEdit
パスワードフィールドとしてEditTextを宣言しました。これを書き込むと、文字は次のように表示され*****
ますが、時々文字を表示したいのですが、その方法が見つかりません。
c++ - プログラムを終了するさまざまな方法をどのように区別すればよいですか?
C++Builder 2007 を使用して、Windows 用のプログラムをコーディングしています。
私のプログラムが閉じられると、閉じられた方法に応じて異なる動作をするはずです:
- ユーザーがアプリケーションのウィンドウの「X」をクリックしました: アプリケーションのユーザー ログインに戻ります。
- プログラムは TaskManager 経由で終了します: その場でプログラムを終了します。プログラムが Windows のシャットダウンをブロックしてはならないため、これは特に重要です。
TForm::OnClose()
いずれかの OR を取得するのは簡単です。or を実装しOnCloseQuery()
てイベントを処理します。ただし、どちらもイベントの原因を示していません。close イベントの実際の原因を知る別の方法はありますか?
c++ - TStringList C++ ビルダー アクセス違反
TStringList
特定のアイテムが存在する場合にのみ、特定のアイテムにアクセスしようとしています。
これによりアクセス違反が発生するのはなぜですか? また、どうすれば解決できますか?