exeファイルのアイコン変更 – プログラミング – Home

exeファイルのアイコン変更
 
通知
すべてクリア

[解決済] exeファイルのアイコン変更

固定ページ 1 / 2

ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

MFCでSDIのアプリケーションを作成しています。
開発環境はVisualC++7.0/Windows2000です。

exeファイルのアイコンを変更したくて新たにアイコンを追加したのに、表示されるアイコンが
以前のままで変更されません。exeファイルのアイコンを変更するにはどうすればいいのでしょ
うか?

自分なりに調べて、追加したアイコンのリソースIDを一番小さい番号に変更したりしてみたので
すが、うまくいきません。

初心者なので単純なことを見落としているのかもしれませんが、アドバイスのほどよろしくお願
いいたします。


引用未解決
トピックタグ
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

IDR_MAINFRAMEのアイコンを変更すれば変わります。

違うアイコンを設定したいときは
ダイアログベースの場合
コンストラクタの”AfxGetApp()->LoadIcon(IDR_MAINFRAME);”を変更

ウィンドウベースの場合は......わかりません(汗)

VC++6.0の場合です。


返信引用
ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

ひろぴーさん、レスありがとうございます。

ウィンドウベースの場合はLoadIcon(IDR_MAINFRAME);が検索できませんでした。

LoadIcon()を使うとすれば、どこで使えばいいのでしょうか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

SDIなら、CxxApp::InitInstance()内の
メインフレームが作られた後で、
m_pMainFrame->SetCusror(LoadCursor(アイコンID), TRUE);
などとすれば良いでしょう。

ただ、変更前のアイコンが不要ならば
リソースエディタでIDR_MAINFRAMEアイコンを書き換えた方が
良いと思いますけど。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

CMainFrameで

SetIcon(新しいアイコンのハンドル,ICON_SMALL);
SetIcon(新しいアイコンのハンドル,ICON_BIG);

としたら、ウィンドウのアイコンもタスクバータブのアイコンも
あっさり変わりました。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

ちなみにアイコンハンドルは

AfxGetApp()->LoadIcon(アイコンリソースのID);

で得られます。


返信引用
ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

dairygoodsさん、レスありがとうございます。

MainFrameクラスのメンバ関数にSetCusror関数がないみたいなのですが、他の関数なのではな
いでしょうか?

リソースエディタでIDR_MAINFRAMEアイコンを換えれば良いということなんですが、
IDR_MAINFRAMEアイコンのリソースファイルIDR_MAINFRAME.iconを削除してしまってリビルド
してしまったのでexeファイルのアイコンがリソースにはないアイコン表示になってしまってそ
れを元に戻そうとしているのですが、それがうまくいかないのです。(最初に説明するべきでし
た、すいません)


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

>m_pMainFrame->SetCusror(LoadCursor(アイコンID), TRUE);

すみません。間違いです。m(__)m
アイコンと思いつつなぜかCursorと入力してました…

m_pMainWnd->SetIcon(LoadIcon(アイコンID), TRUE);


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> exeファイルのアイコンがリソースにはないアイコン表示になってしまって
> それを元に戻そうとしているのですが、それがうまくいかないのです。

リソースビューのIDR_MAINFRAMEを削除(Delキーを押す)し、
新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。


返信引用
ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

nさん、レスありがとうございます。
>SetIcon(新しいアイコンのハンドル,ICON_SMALL);
>SetIcon(新しいアイコンのハンドル,ICON_BIG);

やってみましたが、うまくいきません。
SetIcon()はどこで実行すればいいのでしょうか?

dairygoodsさん
>リソースビューのIDR_MAINFRAMEを削除(Delキーを押す)し、
>新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。

やってみましたが、変更しませんでした。
リソースIDの番号を小さい値にする必要とかはないのでしょうか?

お手数をお掛けしてすいませんが、宜しくお願いします。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

>SetIcon()はどこで

AfxGetApp()->m_pMainWnd->SetIcon(LoadIcon(アイコンID), TRUE);
と書いて通るとこならどこでも、のはずです。

>>新しくアイコンを追加して名前をIDR_MAINFRAMEにすればよいです。
>やってみましたが、変更しませんでした

スペリング間違えたとかないですか?IDI_MAINFRAMEにしたとか。


返信引用
ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

AfxGetApp()->m_pMainWnd->SetIcon(LoadIcon(IDR_MAINFRAME),TRUE);
を追加してリビルドをすると

error C2660: 'LoadIconW' : 関数に 1 個のパラメータを指定できません。
というエラーがでてしまったのですが。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

すいませんこうでした。
AfxGetApp()->m_pMainWnd->SetIcon(
AfxGetApp()->LoadIcon(アイコンID), TRUE);


返信引用
ピクシ
 ピクシ
(@ピクシ)
ゲスト
結合: 22年前
投稿: 10
Topic starter  

LoadIcon()の引数は1つだけみたいなので、LoadIcon(アイコンID);にしてリビルドしたところ
エラーは解消されましたが、EXEファイルのアイコン表示はうまく変更しませんでした。

AfxGetApp()の戻り値をどこかに代入するのでしょうか?


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

「どこでも」と書いたのはは多分ウソです;;
CWinApp派生クラスのInitInstance()の最後あたりではどうですか?


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました