1

MFC を使用して開発された既存のアプリケーションを変更する必要があります。このアプリケーションは、Document\View アーキテクチャで SDI テンプレートを使用します。アプリケーションの実行時に表示されているウィンドウにアイコンを配置する必要があります。現在、表示するアイコンはありません (一部の MFC アプリケーションではデフォルトで MFC ロゴが表示されます)。誰かが私を助けることができますか?私はたくさんグーグルで検索しましたが、成功しませんでした。また、resource.h ファイル内のすべてのリソースに IDR_MAINFRAME (同じ名前) を使用する理由も知りたいです。その値が128に固定されていることを確認しました.これには特定の理由がありますか? 以前に出会ったことがある場合は、MFC に関するいくつかの良いリンクまたは本を親切に提案してください。

4

3 に答える 3

1

デフォルトが何であるかを確認するためだけに、新しい MFC アプリを作成することをお勧めします。.RC ​​ファイルに、次のような行があることがわかります。

IDR_MAINFRAME   ICON       "res\\app.ico"

そこにない場合は、追加できます。MFC ファイル winfrm.cpp を見ると、MFC がアイコンをロードしようとしていることがわかります。CFrameWnd::GetIconWndClass()

HICON hIcon = ::LoadIconW(hInst, ATL_MAKEINTRESOURCEW(nIDResource));

リソースはタイプと ID によって識別されるため、異なるタイプの複数のリソースに同じ ID を使用できます。これは、開発者がアイテムごとに異なる ID を指定する必要なく、MFC フレーム コードがツールバー、メニュー、アイコンなどをロードする必要がある場合に非常に便利です。

私が見た MFC に関する最高の MFC 本は、Mike Blaszczak による「Professional MFC」です。新しい「MFC Feature Pack」の追加はありませんが、古い機能は十分にカバーされています。また、MFC ソース コードを検索するために、 Agent Ransackなどのソース検索ツールをダウンロードすることをお勧めします。

于 2012-08-23T08:50:04.220 に答える
1
  1. はい、値は 128 でなければなりません。これは MFC SDI/MDI 用に予約されています。
  2. IDR_は、「複数のリソース タイプ (主にメニュー、アクセラレータ、およびリボンに使用される) 用」を意味します。通常、これらのリソースは MFC 固有です。
  3. アイコンはデフォルトで表示されます。メイン ウィンドウを呼び出さないように注意してください。SetIcon

アイコンの詳細

Vista 以降では、アイコンに PNG 画像が含まれている場合があります。これらのアイコンは、XP 以前で問題を引き起こす可能性があると思います。Visual Studio を使用してアイコンを作成し、アイコンが元に戻るかどうかを確認してください。Visual Studio 2008 以降を実行していると仮定しています。この新しい PNG 機能を取得するために、Windows SDK を更新することもお勧めします (これらの新しいアイコンを処理するためにrc.exeが更新されました)。

于 2012-08-26T11:02:44.413 に答える