アイコンの変更

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
太郎坊

アイコンの変更

#1

投稿記事 by 太郎坊 » 12年前

Visual studio2010 C++でゲーム製作しています。
exeファイルのiconを変えようとしていますが出来ません。

1、縦横32ドットのアイコンファイル(拡張子『ico』)を作成し
  プロジェクトファイル(拡張子『sln』)があるフォルダに保存

2、MAINICON ICON "アイコンファイル名"を書いたResource.rcファイルを作成(メモ帳で制作しまいた)、
  プロジェクトファイルがあるフォルダに保存  

3、プロジェクト→既存項目の追加 で Resource.rcをプロジェクトに追加

この流れで進めました。
最後にビルドしてみたのですが、
ウインドウの左上のiconが変わっておりません。
どこか間違ってますか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: アイコンの変更

#2

投稿記事 by h2so5 » 12年前

exeファイルのアイコン自体は変わっていますか?

太郎坊

Re: アイコンの変更

#3

投稿記事 by 太郎坊 » 12年前

はい、release後のexeファイルのicon自体は変わっておりますが
そのあとビルドしても、そのexeファイルでゲームを実行出来る状態で実行しても、
ウインドウの左上はデフォルトのiconが表示されております。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: アイコンの変更

#4

投稿記事 by h2so5 » 12年前

DXライブラリを使っている場合は、SetWindowIconIDを使用することで変更できるはずです。
http://homepage2.nifty.com/natupaji/DxL ... html#R11N2

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: アイコンの変更

#5

投稿記事 by みけCAT » 12年前

通常のWindowsアプリケーションの場合は、

コード:

HICON hMainIcon=(HICON)LoadImage(GetModuleHandle(),"MAINICON",IMAGE_ICON,0,0,LR_DEFAULTSIZE | LR_SHARED);
でアイコンを読み込んで、
ウィンドウを作成する際のWNDCLASSEX構造体の変数名をwcexとしたとき

コード:

wcex.hIcon=wcex.hIconSm=hMainIcon;
としてウィンドウを作成するか、
ウィンドウ作成後にそのウィンドウハンドルをhWndとしたとき

コード:

SetClassLong(hWnd,GCL_HICON,(LONG)hMainIcon);
SetClassLong(hWnd,GCL_HICONSM,(LONG)hMainIcon);
として設定してください。

変数名は適宜読み替えてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

太郎坊

Re: アイコンの変更

#6

投稿記事 by 太郎坊 » 12年前

h2so5さん
ありがとうございます。
促して頂いたSetWindowIconIDを使用しようと思ったのですが

>ミニテクコーナーの一連の作業を行った場合、
>VisualC++ はプロジェクトの フォルダに勝手に『resource.h』というヘッダファイルを作成します。

どうやらresource.hが作成されないので以降の流れに進められません。
resource.hの中身はいろいろ書かれてるらしいので自作することも出来ませんし、
んー、どうすればいいでしょうか?

みけCATさん
DXライブラリを利用していますのでMain.cppがスッカラカンなんですよ。
そこにそれらのプログラム文をどう組み込めばいいのかちょっとわかりません。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: アイコンの変更

#7

投稿記事 by みけCAT » 12年前

resource.hをメモ帳などのテキストエディタで作成してください。
例えばresource.hを

コード:

#define MAINICON 1000
とし、Resource.rcを

コード:

#include "resource.h"

MAINICON ICON "アイコンファイル名"
としてください。resource.hとResource.rcは同じ階層においてください。

そして、DxLib_Init();を呼び出している関数が書かれているファイルの先頭に例えば

コード:

#include "resource.h"
みたいな感じの記述を入れてください。
(さっき作成したresource.hを取り込みます。resource.hへのパスは適宜修正してください)
そして、DxLib_Init();の直前にSetWindowIconID(MAINICON);としてください。(もっと前でもいいです)
オフトピック
太郎坊 さんが書きました:DXライブラリを利用していますのでMain.cppがスッカラカンなんですよ。
そこにそれらのプログラム文をどう組み込めばいいのかちょっとわかりません。
プログラムはどのようなファイル名のファイルに書いていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

太郎坊

Re: アイコンの変更

#8

投稿記事 by 太郎坊 » 12年前

みけCATさん
言う通りにしましたが、
error RC1004: unexpected end of file found とエラーが出てビルド出来ません。
マクロ定義で1000というのがよくわからないのですが、
その1000をどこで活かせてるのかもわかりません。

>プログラムはどのようなファイル名のファイルに書いていますか?[/offtopic][/quote]

すみません、すっからかんと書きましたが
プログラムを別のところにあるとかそういうのでは無く
DXライブラリを利用してる分、ウインドウ生成などの細かいプログラムが無く、
Iconの読み込み部分がわからない、と言いたかったのです。
main.cppにあるUpdateでゲームをまわしているのは違いありません。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: アイコンの変更

#9

投稿記事 by みけCAT » 12年前

ググったらRC1004はリソースコンパイラのエラーのようですね。
今書いてあるresource.hとResource.rc全体を貼っていただけますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

太郎坊

Re: アイコンの変更

#10

投稿記事 by 太郎坊 » 12年前

みけCATさん

resource.h

コード:

#define MAINICON 1000
Resource.rc

コード:

#include "resource.h"
MAINICON ICON "icon.ico"
です。
あとは、main.cppに
#include "resource.h"と
SetWindowIconID(MAINICON);を記載しました。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: アイコンの変更

#11

投稿記事 by みけCAT » 12年前

ごめんなさい、原因がわからないです。
プロジェクト全体をアップロードすることはできますか?
(現象を再現した小さいサンプルで構いません)
http://www.axfc.net/uploader/

resource.hとResource.rcは改行で終わっていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: アイコンの変更

#12

投稿記事 by Tatu » 12年前

私の場合は
resource.rcに
100 ICON "icon.ico"
と書いてプロジェクトにいれ、
DxLib_Initの前に
SetWindowIconID(100);
と書いています。

太郎坊

Re: アイコンの変更

#13

投稿記事 by 太郎坊 » 12年前

Tatuさんのレスを参考に
Resource.rc内の#include "resource.h"を削除したら出来ました!

みけCATさん、Tatuさん
どうもありがとうございました。

太郎坊

Re: アイコンの変更

#14

投稿記事 by 太郎坊 » 12年前

アイコン問題は解決したのですが
似たような別の問題がありますのでこちらで質問させて下さい。

ビルドした後、ウインドウの左上にアイコンがあり、
その右横に「文字」も表示されているじゃないですか?
この文字はどこのなにが反映されて決まるのでしょう?
プロジェクト名でも無いですよね?
この部分を表示しない(アイコンだけにする)、
もしくは任意な文字文に変えることは出来ますか?

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: アイコンの変更

#15

投稿記事 by Tatu » 12年前

ウィンドウの左上に表示される文字は
DXライブラリ置き場 リファレンスページ
http://homepage2.nifty.com/natupaji/DxL ... tml#R15N13
にあるSetMainWindowText関数で設定可能です。

太郎坊

Re: アイコンの変更

#16

投稿記事 by 太郎坊 » 12年前

Tatuさん
ありがとうございます。解決しました。

閉鎖

“C言語何でも質問掲示板” へ戻る