MFCでSDIのアプリケーションを作成しています。
開発環境はVisualC++7.0/Windows2000です。
exeファイルのアイコンを変更したくて新たにアイコンを追加したのに、表示されるアイコンが
以前のままで変更されません。exeファイルのアイコンを変更するにはどうすればいいのでしょ
うか?
自分なりに調べて、追加したアイコンのリソースIDを一番小さい番号に変更したりしてみたので
すが、うまくいきません。
初心者なので単純なことを見落としているのかもしれませんが、アドバイスのほどよろしくお願
いいたします。
IDR_MAINFRAMEのアイコンを変更すれば変わります。
違うアイコンを設定したいときは
ダイアログベースの場合
コンストラクタの”AfxGetApp()->LoadIcon(IDR_MAINFRAME);”を変更
ウィンドウベースの場合は......わかりません(汗)
VC++6.0の場合です。
ひろぴーさん、レスありがとうございます。
ウィンドウベースの場合はLoadIcon(IDR_MAINFRAME);が検索できませんでした。
LoadIcon()を使うとすれば、どこで使えばいいのでしょうか?
SDIなら、CxxApp::InitInstance()内の
メインフレームが作られた後で、
m_pMainFrame->SetCusror(LoadCursor(アイコンID), TRUE);
などとすれば良いでしょう。
ただ、変更前のアイコンが不要ならば
リソースエディタでIDR_MAINFRAMEアイコンを書き換えた方が
良いと思いますけど。
CMainFrameで
SetIcon(新しいアイコンのハンドル,ICON_SMALL);
SetIcon(新しいアイコンのハンドル,ICON_BIG);
としたら、ウィンドウのアイコンもタスクバータブのアイコンも
あっさり変わりました。
ちなみにアイコンハンドルは
AfxGetApp()->LoadIcon(アイコンリソースのID);
で得られます。
dairygoodsさん、レスありがとうございます。
MainFrameクラスのメンバ関数にSetCusror関数がないみたいなのですが、他の関数なのではな
いでしょうか?
リソースエディタでIDR_MAINFRAMEアイコンを換えれば良いということなんですが、
IDR_MAINFRAMEアイコンのリソースファイルIDR_MAINFRAME.iconを削除してしまってリビルド
してしまったのでexeファイルのアイコンがリソースにはないアイコン表示になってしまってそ
れを元に戻そうとしているのですが、それがうまくいかないのです。(最初に説明するべきでし
た、すいません)
>m_pMainFrame->SetCusror(LoadCursor(アイコンID), TRUE);
すみません。間違いです。m(__)m
アイコンと思いつつなぜかCursorと入力してました…
m_pMainWnd->SetIcon(LoadIcon(アイコンID), TRUE);
> exeファイルのアイコンがリソースにはないアイコン表示になってしまって
> それを元に戻そうとしているのですが、それがうまくいかないのです。
リソースビューのIDR_MAINFRAMEを削除(Delキーを押す)し、
新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。
nさん、レスありがとうございます。
>SetIcon(新しいアイコンのハンドル,ICON_SMALL);
>SetIcon(新しいアイコンのハンドル,ICON_BIG);
やってみましたが、うまくいきません。
SetIcon()はどこで実行すればいいのでしょうか?
dairygoodsさん
>リソースビューのIDR_MAINFRAMEを削除(Delキーを押す)し、
>新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。
やってみましたが、変更しませんでした。
リソースIDの番号を小さい値にする必要とかはないのでしょうか?
お手数をお掛けしてすいませんが、宜しくお願いします。
>SetIcon()はどこで
AfxGetApp()->m_pMainWnd->SetIcon(LoadIcon(アイコンID), TRUE);
と書いて通るとこならどこでも、のはずです。
>>新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。
>やってみましたが、変更しませんでした
スペリング間違えたとかないですか?IDI_MAINFRAMEにしたとか。
AfxGetApp()->m_pMainWnd->SetIcon(LoadIcon(IDR_MAINFRAME),TRUE);
を追加してリビルドをすると
error C2660: 'LoadIconW' : 関数に 1 個のパラメータを指定できません。
というエラーがでてしまったのですが。
すいませんこうでした。
AfxGetApp()->m_pMainWnd->SetIcon(
AfxGetApp()->LoadIcon(アイコンID), TRUE);
LoadIcon()の引数は1つだけみたいなので、LoadIcon(アイコンID);にしてリビルドしたところ
エラーは解消されましたが、EXEファイルのアイコン表示はうまく変更しませんでした。
AfxGetApp()の戻り値をどこかに代入するのでしょうか?
「どこでも」と書いたのはは多分ウソです;;
CWinApp派生クラスのInitInstance()の最後あたりではどうですか?