問題タブ [c++builder]
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++ - Borland C++ Builder での Windows サブクラス化
CWnd.SubclassWindow メソッドを使用する MFC で記述された C++ コードの一部を、Borland C++ Builder コードに変換しようとしています。サブクラス化 (TForm オブジェクトを使用したサブクラス化) の方法を知っている人はいますか?私たちは完全に立ち往生しています。どんなポインタでも大歓迎です!ティア!
仕様:
TForm から継承する Borland C++ で記述された既存の基本クラスがあります。これは、TForm から継承するすべてのフォームに特定のルック アンド フィールを与えるために使用されます (たとえば、WM_NCPAINT と WM_NCHITTEST を重く処理します)。
ここで、このコードを使用して、他の言語 (正確には MSVC++/MFC と C#) で記述されたフォームに同じルック アンド フィールを提供したいと考えています。
すべてのコードを書き直す代わりに、Windows のサブクラス化を使用することは素晴らしいアイデアだと考えました。次に、すべての既存のテスト済みコードを DLL に詰め込み、それを hWnd で呼び出すだけで、そのウィンドウは自動的に新しいルック アンド フィールを取得します。
なぜこれが不可能なのかは、私にはわかりません。私自身、Borland C++ でコードを書いているわけではありません。Borland C++ 開発者に私が何を望んでいるのかを示すために、MFC でスタブをわずか数分で作成しました。彼らは MFC の CWnd::SubclassWindow メソッドを模倣しようとして何日も費やしましたが、成功しませんでした。
私が理解していることから、問題は、「new TForm()」を実行すると、新しいウィンドウが停止する前に自動的に作成されることです。そのため、WindowProc を置き換えると機能しますが、不要な TForm ウィンドウが画面上に浮かんで使用できなくなります!!!!
c++ - C++ Builder ランタイム エラー - 無効または非表示のウィンドウにフォーカスできません
メインフォームにはTPageControlがあり、そのすべてのタブには、Alt + Sの組み合わせでアクティブになる対応する保存ボタンがあります。
もちろん、現在開いているタブに応じて、対応する [保存] ボタンのハンドラーを呼び出す必要があります。しかし、Alt+S で保存しようとすると、「無効または非表示のウィンドウにフォーカスできません」というランタイム エラーが発生します。
そして、現在のタブの前にアクティブだったタブの [保存] ボタンのハンドラーが呼び出されることに気付きましたが、その理由はわかりません。
パネルに [保存] ボタンを配置しようとしましたが (いくつかの同様の問題ではうまくいきました)、それでも同じことが起こります。
乾杯。
c++ - IDE からではなくコマンド ラインからコンパイルすると、あいまいなエラーが発生するのはなぜですか?
Borland C++ Builder 5.5 でかなり大きなプロジェクトをコンパイルしようとしています。プロジェクトは IDE でコンパイルされますが、遅すぎます。ただし、コマンド ラインでコンパイルすると、IDE には存在しなかったあいまいなエラーが発生します。
エラー E2015 Project.h 536: 'TTreeNode' と 'Comctrls::TTreeNode' の間にあいまいさがあります
私のコマンドライン引数は次のとおりです。
d:\PROGRA~1\Borland\CBUILD~1\bin..\BIN\bcc32 -Od -Vx -Ve -X- -r- -a8 -5 -b- -d -k -vi -c -tW - tWM -w-par -I[インクルード ファイルの非常に大きなリスト] -nQ:\output [コンパイルするファイルの非常に大きなリスト]
このコマンドは、make.exe によって生成されます。
shell - C++ ビルダーでコマンド ライン "explorer /n, /select,(filename)" を実行するにはどうすればよいですか?
私は shellexecute を試しました、私は createprocess を試しましたが、これで何もできないようです。
コマンド ラインを手動で (コンソール ウィンドウの実際のコマンド プロンプトで) 実行することはできますが、これまで試したことはありませんが、C++ ビルダー アプリ内から実行することはできません。
明らかに (ファイル名) は単なるプレースホルダーです。次のような有効なファイル名が付けられます。
エクスプローラー /n, /select,c:\123.doc
c++ - C++ ビルダー [C++ エラー] sysmac.h(58): E2040 宣言が正しく終了しませんでした
VCL を使用しない C++ Builder DLL プロジェクトを作成したいと考えています。しかし、sysmac でこのエラーが発生します。このエラーの考えられる原因を知っている人はいますか?