ページ 11

アイコンの変更

Posted: 2013年8月08日(木) 15:09
by 太郎坊
Visual studio2010 C++でゲーム製作しています。
exeファイルのiconを変えようとしていますが出来ません。

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

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

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

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

Re: アイコンの変更

Posted: 2013年8月08日(木) 15:13
by h2so5
exeファイルのアイコン自体は変わっていますか?

Re: アイコンの変更

Posted: 2013年8月08日(木) 15:25
by 太郎坊
はい、release後のexeファイルのicon自体は変わっておりますが
そのあとビルドしても、そのexeファイルでゲームを実行出来る状態で実行しても、
ウインドウの左上はデフォルトのiconが表示されております。

Re: アイコンの変更

Posted: 2013年8月08日(木) 15:33
by h2so5
DXライブラリを使っている場合は、SetWindowIconIDを使用することで変更できるはずです。
http://homepage2.nifty.com/natupaji/DxL ... html#R11N2

Re: アイコンの変更

Posted: 2013年8月08日(木) 17:17
by みけCAT
通常の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);
として設定してください。

変数名は適宜読み替えてください。

Re: アイコンの変更

Posted: 2013年8月08日(木) 17:40
by 太郎坊
h2so5さん
ありがとうございます。
促して頂いたSetWindowIconIDを使用しようと思ったのですが

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

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

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

Re: アイコンの変更

Posted: 2013年8月08日(木) 17:50
by みけCAT
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がスッカラカンなんですよ。
そこにそれらのプログラム文をどう組み込めばいいのかちょっとわかりません。
プログラムはどのようなファイル名のファイルに書いていますか?

Re: アイコンの変更

Posted: 2013年8月08日(木) 21:38
by 太郎坊
みけCATさん
言う通りにしましたが、
error RC1004: unexpected end of file found とエラーが出てビルド出来ません。
マクロ定義で1000というのがよくわからないのですが、
その1000をどこで活かせてるのかもわかりません。

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

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

Re: アイコンの変更

Posted: 2013年8月08日(木) 21:41
by みけCAT
ググったらRC1004はリソースコンパイラのエラーのようですね。
今書いてあるresource.hとResource.rc全体を貼っていただけますか?

Re: アイコンの変更

Posted: 2013年8月08日(木) 21:56
by 太郎坊
みけCATさん

resource.h

コード:

#define MAINICON 1000
Resource.rc

コード:

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

Re: アイコンの変更

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

resource.hとResource.rcは改行で終わっていますか?

Re: アイコンの変更

Posted: 2013年8月08日(木) 22:04
by Tatu
私の場合は
resource.rcに
100 ICON "icon.ico"
と書いてプロジェクトにいれ、
DxLib_Initの前に
SetWindowIconID(100);
と書いています。

Re: アイコンの変更

Posted: 2013年8月08日(木) 22:15
by 太郎坊
Tatuさんのレスを参考に
Resource.rc内の#include "resource.h"を削除したら出来ました!

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

Re: アイコンの変更

Posted: 2013年8月13日(火) 18:35
by 太郎坊
アイコン問題は解決したのですが
似たような別の問題がありますのでこちらで質問させて下さい。

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

Re: アイコンの変更

Posted: 2013年8月13日(火) 18:50
by Tatu
ウィンドウの左上に表示される文字は
DXライブラリ置き場 リファレンスページ
http://homepage2.nifty.com/natupaji/DxL ... tml#R15N13
にあるSetMainWindowText関数で設定可能です。

Re: アイコンの変更

Posted: 2013年8月13日(火) 18:58
by 太郎坊
Tatuさん
ありがとうございます。解決しました。