問題タブ [wtl]
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.
visual-studio-2010 - WTL 8.1 および Visual Studio 2010 Premium
VS 2010 (Premium) に奇妙な問題があります。
- 再インストールしただけ
- WTL ライブラリ ファイルを追加
- WTL ウィザードをインストールしました
- WTLウィザードを介して「ダイアログ」プロジェクトを作成しました
- スケルトンを正常にコンパイルして実行する
- ダイアログにボタンを追加しました
- コンパイルが失敗し、未定義のシンボル (ボタン IDC_xxx) について不平を言うようになりました
- プリコンパイル済みヘッダーをオフにしました
- クリーンなソリューション、再コンパイルして正常に実行
- ボタンの「onClick」ハンドラーを追加しました(ボタンをダブルクリックするだけで、コードは追加されません)
- コンパイルが
CUpdateUI
定義されていないと不平を言って失敗する - クリーンアップ、ソリューションの再分析などを行っても問題は解決しません
を手動で挿入すると#include
(たとえばatlframe.h
for CUpdateUI
)、動作させることができますが、これは VS2010 を使用する目的を無効にします!
私を本当に悩ませているのは、コードに 1 行も触れていないことです。すべてが VS を介して行われているため、一貫性を保つ必要がありました。
それは私のせいですか?WTL 障害?VSフォルト?これを修正する方法について何か提案はありますか?
atl - Microsoft ヘッダーを変更せずにこれを解決する方法はありませんか?
この古い VC++ 6.0 プログラムを VC++ 2010 でコンパイルしようとしています。この ATL/WTL が原因で多くの問題が発生しています。ダウンロードして最新の WTL にリンクしました (私の知る限り) wtl71.
atlmisc.h でコンパイル エラーが発生します。
atlmisc.h(1159): エラー C2440: 'return': 'const char *' から 'TCHAR *' に変換できません
ネットを検索したところ、在庫の MS atlmisc.h ファイルを変更する必要があるという回答が返ってきました。
ここで何か不足していますか?これをコンパイルするにはどうすればよいですか?
c++ - C++ MFC - MFC DLL と WTL exe 間でデータを共有していますか?
複雑なデータ構造を操作するための GUI インターフェイスを提供する MFC プロジェクトがあります (これを ComplicatedClass と呼びましょう)。このクラスを頻繁に使用する必要がある WTL プロジェクトがあります。このクラスのインスタンスを 1 つだけ管理できるようにしたいのですが、各プロジェクトに独自の ComplicatedClass のコピーを持たせたくありません。
これらのプロジェクトでこのクラスの 1 つのインスタンスを共有したい場合、安全で信頼できる方法でこれを行うにはどうすればよいでしょうか? 私にとって唯一の代替手段は、基本的にクラスの 2 つのコピー (1 つは MFC プロジェクトによって管理され、もう 1 つは WTL 側によって管理される) を持つことです。
c++ - ユーザーがキャンセルしたときに CDialogImpl ダイアログを非表示にする
派生クラスをダイアログ ベースの WTL/ATL アプリとして使用してCDialogImpl
、ユーザーが右上の "X" ボタンをクリックした (またはEscまたはAlt+を押したF4) ときにメイン ウィンドウを非表示にしたいと考えています。
現在、「X」はダイアログを閉じ、アプリケーションを終了します。
この動作を変更して、ダイアログ ボックスを閉じるのではなく非表示にするだけにしたい。これは可能ですか?
c++ - WTL vista/7ネイティブルックアンドフィールのCreateSimpleReBar
WTLでCreateSimpleReBarを使用する場合、メインメニューバーはマウスホバーでこの青色になり、ネイティブのvista/7の丸くて透明な形状ではありません。また、何らかの理由で、メニューバーは通常のネイティブメニューよりも高いように見えます。
CreateSimpleReBarはメニュー自体を描画しますか、それとも何かが足りませんか?
c++ - ATL/WTL ダイアログにカスタム コントロールを登録する方法は?
からカスタム コントロールを派生させATL::CWindowImpl<CMyCustomControl>
、宣言しDECLARE_WND_CLASS(_T("CMyCustomControl"))
ました。
クラス名が のカスタム コントロールを持つダイアログ リソースも作成しましたCMyCustomControl
。
ダイアログに表示できるように、コントロールを適切に登録するにはどうすればよいですか?
visual-studio-2008 - ATLリンクの警告
Visual Studio 2008 SP1でATLヘッダーを使用して新しいWin32プロジェクト(Windowsアプリケーション)を作成すると、を含めるだけで次の<atlbase.h>
警告が表示されます。
<atlapp.h>
WTLからも含めると、次の追加の警告が表示されます。
これらの警告を解決する適切な方法は何ですか?
編集:
VisualStudio2008を2008ライブラリでVisualC++ 2010コンパイラを使用するように切り替えたため、これらが発生していることがわかりました。古いコンパイラに戻す以外にこれを修正する方法を誰かが知っている場合は、投稿してください。:)
c++ - C++ WTL8.1 メッセージ ループを使用して新しいスレッドでウィンドウを作成する方法は?
私はこれが多くの方法で尋ねられたのを見ましたが、実際に機能するコードスニップを見たことはありません.
新しいウィンドウとメッセージ ループを使用して新しいスレッドを作成するという素朴な試みを試みました。ウィンドウを開いてそのメッセージを処理する必要がある関数があり、既存のメッセージ ループがない (および他のウィンドウがない) または通常の mfc メッセージ ループまたは WTL メッセージ ループを使用してアプリケーションから呼び出すことができる環境で実行する必要があります。AddMessageLoop とモジュールについていくつか見ましたか? しかし、それは主なアプリケーション用だったようです。いずれにしても、WTL モジュールがある場合とない場合があります。基本的なメッセージ ループを備えたスタンドアロン ウィンドウが必要です。ウィンドウがまだ開いていない状態で WTL クラスを渡すと、ループと同じスレッドでウィンドウが開きます。クラスオブジェクトも新しいスレッドで作成する必要がありますか?
c++ - テンプレート化された WTL クラス オブジェクト C++ のアドレスを取得する方法
私はいくつかの C++ コードを継承しましたが、困惑しました。
クラスをそのように宣言します。
そのようなインスタンス
このコンパイル エラーを取得します
CIE は CIENavigator として宣言されていますが、&CIE のタイプは IWebBrowser2 であると見なされます **
次のようにキャストを強制すると:
コンパイルされますが、ポインターは実際には間違ったポインターです。
クラス名はそれ自体の宣言に表示されますが、その意味がわかりません。私はクラス テンプレートを使用していません。
正しい CIENavigator オブジェクト (CIE) アドレスを取得するにはどうすればよいですか?
c++ - *すべて*がATL/WTLのテンプレート基本クラスを使用するのはなぜですか?
ATL/WTLコードのテンプレートの目的を理解するのに多くの問題があります。
WTLを見ると、次のようなコードが表示されます。
CEditT
テンプレート基本クラスで定義されるのはなぜですか?
言い換えれば、どのシナリオCEditT<T>
でインスタンス化されないT
のですか? CWindow