問題タブ [mfc]

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 投票する
7 に答える
54813 参照

winapi - MFC でサイズ変更可能な CDialog を作成するには?

古い CFormView タイプのデザインではなく、ダイアログ ベースのアプリケーションを作成する必要があります。ただし、CDialog は固定サイズのダイアログを生成します。サイズ変更可能なダイアログを使用して、ダイアログ ベースのアプリケーションを作成するにはどうすればよいですか?

0 投票する
5 に答える
5841 参照

c++ - C ++ / MFC/GDIで非常に大きなビットマップを作成する方法

CDC派生クラスを使用してビットマップに書き込むことにより、C ++ MFCアプリケーションで大きな(たとえば20,000 x 20,000)ピクセルのビットマップを作成できるようにしたいと思います。MSDNのドキュメントで説明されているようにメモリDCを使用しようとしましたが、これらは現在のディスプレイドライバと互換性のあるサイズに制限されているようです。

私は現在、ビットマップ印刷ドライバーを使用して作業を行っていますが、GDI情報をスプールするため、非常に低速で、非常に大量の中間ストレージを使用します。

私が描いているモデルはレンダリングに何百万ものGDI呼び出しを必要とするため、私が探しているソリューションにはメタファイルやスプーリングは含まれていません。

複数のメモリDCを介して分割統治法を使用することもできますが、それはかなり面倒でエレガントでない手法のようです。

何かご意見は?

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

c++ - ツールバーから Internet Explorer の現在のページのアドレスを取得する

COM を使用して Internet Explorer 用の MFC でツールバー (鉄筋のツール バンド) を作成することに頭を悩ませています。

現在表示されているページのアドレス (つまり、私の場合はhttps://stackoverflow.com/questions/ask :-) ) をツールバーから取得することは可能ですか?

もしそうなら、私は何を調べるべきですか?

ありがとう!

0 投票する
5 に答える
11970 参照

c++ - Win32/MFC クライアント四角形からウィンドウ四角形を取得

クライアントrectを受け入れ、それをウィンドウrectに変換する関数がどこかにあることを私は知っています。見つけられない/思い出せない!

誰がそれが何であるか知っていますか?

次のようになります。

0 投票する
8 に答える
15642 参照

c++ - Visual Studio 2008 Express MFC のサポート

多くの人が知っているように、Visual Studio 2008 の Express バージョンには、多くの Windows プログラムをコンパイルするために必要な MFC およびその他のいくつかのパッケージのサポートが含まれていません。

だから、ここに私の問題があります:

私は Visual Studio 2005 のフル バージョンを持っています。これを使用して、友人が取り組んでいたプロジェクトをコンパイルし、友人のためにテストして、バグなどを追跡し続けました。最近、彼はそのプロジェクトを私が持っていない VS 2008 にアップグレードしました。それで、簡単にコンパイルできることを期待して高速バージョンをダウンロードしましたが、運が悪く、左右のヘッダーが欠落していると不平を言います。

私はすでに VS 2005 のフル バージョンを持っているので、彼のプロジェクトがコンパイルする必要がある問題のファイルの少なくともいくつかの (おそらく古い) バージョンを持っているはずです。

VS 2008 が 2005 のディレクトリでインクルード ファイルとコンパイル対象のライブラリ ファイルも参照するように説得する方法はありますか?

さらに、これは悪い考えですか?VS 2008 を自分で使用することは決してないので、外出して VS 2008 を完全に購入したくはありません。(現時点では 2005 で問題なく動作しますが、とにかく GCC を好む傾向があります。)

ありがとう

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

c++ - 例外をスローすると、MFCアプリがハングするのはなぜですか?

MFCダイアログ内から例外をスローすると、コードにcatchブロックがある場合でも、アプリがハングします。マウスまたはキーボードへの応答を拒否し、シャットダウンする唯一の方法はタスクマネージャーを使用することです。

この質問を投稿する理由

残念ながら、モーダルダイアログで例外的なエラーが発生するたびにハングする人気のシュリンクラップアプリケーションがあります。整数のエラーコードから例外に大幅に移行したとき、スローされた例外の基本クラスとしてstd::exceptionを選択する責任がありました。私たちのテストでこの問題が明らかになったのは、変換に膨大な量の作業が行われるまではなく、それまでに変更するには遅すぎました。うまくいけば、この質問/回答が誰かが同じ間違いをするのを防ぐでしょう。

0 投票する
7 に答える
4362 参照

c++ - Windows C++ ダイアログ リサイズ クラス

画面のサイズが変更されたときに、必要に応じて個々の項目を拡大および縮小する、非常に優れたダイアログ サイズ変更クラスを探しています。Stephan Keil には、基本的に設定された比率ですべてのサイズを変更する優れたもの (DlgResizeHelper) がありますが、私はもっとスマートなものを探しています。

例えば:

  • アイコンのサイズを変更しないでください

  • 1 行のテキスト ボックスは縦に引き伸ばされるべきではありません

  • ボタンはおそらく同じサイズのままにする必要があります

基本的に、私はすべてのコントロールを見て、静的テキストフィールドがその隣/下のコントロールに関連していることを理解し、2つを一緒に固定し、大きなコントロールを「スマート」な方法でサイズ変更して見えるようにするものを探しています良い。

そのようなフレームワークはありますか?私は1つに取り組んできましたが、既製のものがおそらくより良いでしょう.

フォローアップ: 提案された解決策を検討しています。それらの多くでは、ダイアログの各コントロールにアンカーを入れる必要があります。推測が間違っている場合に手動で固定する機能を備えた、アンカーがどうあるべきかを理解するスマートなものを探しています。それは可能であるように思われます-ほとんどの人は、編集フィールドの隣にある静的テキストフィールドを一緒に固定する必要があることに同意します. 私はほとんどここで小さな AI を探していると思います :)

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

c++ - CScrollView とウィンドウ サイズ

(MFC の質問) CScrollView で現在表示されているクライアント領域を特定する最善の方法は何ですか? 表示部分のサイズだけが必要なので、ここでは GetClientRect() は機能しません。

0 投票する
5 に答える
2142 参照

mfc - MS VC++ 6 クラス ウィザード

OK、私が開発しているアプリケーションは、DOS の C からさまざまな種類の C++ を経て、過去 16 年間ほぼ継続的に開発されてきましたが、現在は主に MFC と StingRay GUI およびその他のさまざまな SDK を備えた C++ に基づいています。

私はリリース ビルドに VS 2005 を使用していますが、GUI ビルドの多くにはまだ MSVC 6 を使用しています。これは、この環境では ClassWizard がその後の弱い同等のツールよりもはるかに高速であるためです。ClassWizard を使用して、独自のユーザー定義型のコードを自動的に生成していることに注意してください (カスタム DDXを参照)。多くのメンバー変数とメソッドを一度に追加するのが好きです。Visual Studio の新しいバージョンのように一度に 1 つずつ作成することは、大きな後退です。同時に、複数の IDE で作業するのも面倒です。

私の質問は 2 つの部分に分かれています。

  1. ClassWizard を VS 2005 または VS 2008 で動作させる方法はありますか?

  2. 私のような古い C++ ハックに同様のレベルの生産性を提供する代替または代替 IDE の低下はありますか?

0 投票する
6 に答える
1991 参照

visual-studio-2008 - 奇妙なMFC/VC ++リンカーエラー(std :: listすでに定義されています)

プロジェクトに次の行を追加した場合にのみ発生する、非常に奇妙なエラーメッセージが表示されます。

std :: listである必要はなく、std::vectorまたは私が想定する他のSTLコンテナである可能性があることに注意してください。

エラーメッセージは次のとおりです。

エラー1エラーLNK2005: "public:__thiscall std :: list

:: list>(void) "(?? 0?$ list @ VCRect @@ V?$ allocator @ VCRect @@@ std @@@ std @@ QAE @ XZ)SomeLowLevelLibrary.libですでに定義されています

エラーメッセージで参照されている低レベルのライブラリは、私が構築しているプロジェクトについて何も知りません。コアの低レベルの機能しかなく、高レベルのMFCGUIを処理しません。

コード行を次のように変更すると、リンカーエラーが消える可能性があります。

しかし、私はそれのためにそれをハックしたくありません。

また、スタックとヒープのどちらに変数を作成しても、同じエラーが発生します。

誰かがこれについて何か考えを持っていますか?VistaEnterpriseでMicrosoftVisualStudio2008SP1を使用しています。

編集:上記のリンカーエラーはstd :: list <>コンストラクターの場合です。また、デストラクタ、_Nextnode、およびclear関数のエラーも発生します。

編集:プロジェクト内の他のファイルでは、std :: vectorはリンクしません。他のファイルでは、std::listである可能性があります。一部のコンテナが機能する理由と機能しない理由がわかりません。MFCリンケージは、両方のライブラリ間で静的です。低レベルのライブラリには、std::listから継承する1つのクラスがあります。

編集:低レベルライブラリにはCRectから継承するクラスはありませんが、STLを利用します。