特にドキュメントを使用し、リボンコントロールを使用したり、視覚スタイルの切り替えを有効にすると、それだけで約3Mにもなる。
ここで、何がそんなに容量を増やしているか調べてみたところ、Office 2008用のリソースにデザイン用のPNG画像が大量にあることがわかりました。
具体的には、PNG画像は485個で745,894バイトもありました。
一つ一つはそれ程大きくないのですが、数が多いためこのサイズになっています。
そこで、ちょっとでもサイズを小さくしたい場合、視覚テーマをOffice 2008以外のものにし、切り替えを無効にするか、Office 2008タイプは使用しないようにします。
当然、リボンコントロールは使用しないようにします。
ちなみに、「Visual Studio 2005」や「Office 2003」「Office XP」などではPNGは使われておらず、ビットマップだけで、それ程サイズも大きくないのでここでは無視します。
しかし、この方法でも内部で勝手にリソースを入れるようにコンパイルされるので、そのままでは結局同じファイルサイズになってしまいます。
そこで、ちょっとイレギュラーなやり方かもしれませんが、リソースファイルを編集してしまいます。
視覚テーマが定義されているファイルは「afxribbon.rc」で、「〜\Microsoft Visual Studio 9.0\VC\atlmfc\include\l.jpn」にあります。
このファイルの先頭付近に、
#ifndef _AFX_INTL_RESOURCESというのがあり、ここでPNGなどのテーマ用リソースを取り込むように定義されている「rc2」ファイルをインクルードするようになっています。
#include "res\RibbonStyle2007Aqua.rc2"
#include "res\RibbonStyle2007Black.rc2"
#include "res\RibbonStyle2007Blue.rc2"
#include "res\RibbonStyle2007Silver.rc2"
#endif
そこで、以下のように、独自の定義値「_MYDEF_NO_2007STYLE」が定義されていたらインクルードしないようにします。
#ifndef _AFX_INTL_RESOURCES後は、「XXX.rc2」内、
#ifndef _MYDEF_NO_2007STYLE
#include "res\RibbonStyle2007Aqua.rc2"
#include "res\RibbonStyle2007Black.rc2"
#include "res\RibbonStyle2007Blue.rc2"
#include "res\RibbonStyle2007Silver.rc2"
#endif
#endif
// 手動で編集されたりソースをここに追加します...以下に
#define _MYDEF_NO_2007STYLEとしておけば、これらのスタイルは取り込まれなくなり、ファイルサイズが約800kb小さくなります。
この他に、「XXX.rc」内で定義しても良いです。要するに「afxribbon.rc」をインクルードする前に宣言できればいいです。
ここで、「afxribbon.rc」をインクルードしなければいいのでは?と思うかもしれませんが、この中にはツールバーのカスタマイズ用のリソースなどもあり、場合によっては必要になることもあるため、ここではOffice 2008のものだけ除外するようにしてあります。