- 締切済み
MFCアプリケーションでアイコンが正しく表示されない
Viisual C++ 6.0 を使ってMFCのSDIアプリケーションを作っているのですが アプリケーションを起動したときにメインウィンドウの左上に表示される はずの小さいアイコンが正しく表示されなくて困っています。 (添付画像に示したように白い四角形が表示されます) なお、アイコンはVisual C++のリソースエディタで作っており、 エクスプローラから実行ファイルを閲覧するとアイコンは正しく表示されます。 (添付画像を参照)なぜメインウィンドウだけ正しく表示されないのでしょう? どうすればメインウィンドウの左上に正しいアイコンが表示されるでしょうか? AppWizardで新しくSDIアプリケーションのプロジェクトを作り直せば、 正しく表示されるようなのですが、これまで作ったソースを丸ごと移動させる のは手間がかかりそうなのでできればそれはしたくないのです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- phoenix343
- ベストアンサー率15% (296/1946)
SDIということで CSingleDocTemplateクラスを作っていると思いますが そこにIDR_MAINFRAMEはありますか? ※いじった覚えが無いならあるはずですが。 ↓こんなの。 | pDocTemplate = new CSingleDocTemplate( | IDR_MAINFRAME, | RUNTIME_CLASS(C***Doc), | RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ | RUNTIME_CLASS(C***View)); SDIでドキュメントクラスからウィンドウを作成するとき、このIDからアイコンを読込みます。
- Wr5
- ベストアンサー率53% (2173/4061)
>なお、アイコンはVisual C++のリソースエディタで作っており、 >エクスプローラから実行ファイルを閲覧するとアイコンは正しく表示されます。 作成したアイコンのIDなどはどうなっていますか? IDR_MAINFRAMEという名前のアイコンをリソースから読み込み、 ウィンドウのアイコンとして設定しているコードが自動生成されているかと思いますが。 なお、エクスプローラなどで表示されるアイコンは、「ファイル中のアイコンリソースでIDが一番小さいモノ」のはずです。
補足
>IDR_MAINFRAMEという名前のアイコンをリソースから読み込み、 はい、IDR_MAINFRAMEになっています。
お礼
そこはいじったと思います。 今はこんなふうになっています。↓ // メイン ウインドウを作成するとき、このコードは新しいフレーム ウインドウ オブジェクトを作成し、 // それをアプリケーションのメイン ウインドウにセットします CMainFrame* pFrame = new CMainFrame; m_pMainWnd = pFrame; // フレームをリソースからロードして作成します pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL);