数十kB→80MBover おかげでコンパイル後の実行ファイルも20MBを超えています。
画面の数は2,3個増えただけです(画像等も使用していません)
テキストエディタで直接開くと(Dialog Info)ブロックのとあるダイアログの宣言が90%以上を占めていました(0x0000,の並びばかり)。ただこのダイアログは他のダイアログとほぼ同じ機能です。
こんな経験をされたかたいますか?またその時の対応策を教えてください。
http://www.nitoyon.com/vc/tips/ie_component.htm
IEコンポーネントの使い方 [VC++の使い方]
恐らく、使ってない「Active X コントロール」が張り付いているのでは?
と思われます。
試しに「Microsoft Web Browser」というコントロールを貼り付けて、
リソースファイル(*.rc)を作ってみました。
IDD_DIALOG1 … ダイアログのリソースID
IDC_EXPLORER1 … ブラウザコントロール(Microsoft Web Browser)のリソースID
「Dialog Info」にある「IDC_EXPLORER1」を見てみると、
たくさんの「0x0000」が並んでいることが分かります。
もし、このコントロールが必要ないのであれば、消してしまってかまわないと思います。
何のコントロールか分からない場合は、レジストリで
HKEY_CLASS_ROOT¥CLSID¥{8856F961-340A-11D0-A96B-00C04FD705A2}
のように CLSID で、検索してみて、
InProcServer32 にある DLL や OCX のパス情報を確認してみてください。
(例えば、ブラウザコントロールの場合:C:¥WINDOWS¥System32¥shdocvw.dll になります。)
<resource_test.rc>
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 317, 315
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION ”ダイアログ”
FONT 9, ”MS Pゴシック”
BEGIN
DEFPUSHBUTTON ”OK”,IDOK,260,7,50,14
PUSHBUTTON ”キャンセル”,IDCANCEL,260,24,50,14
CONTROL ””,IDC_EXPLORER1,”{8856F961-340A-11D0-A96B-00C04FD705A2}”,
WS_TABSTOP,11,13,57,38
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
//
IDD_DIALOG1 DLGINIT
BEGIN
IDC_EXPLORER1, 0x376, 160, 0
0x0000, 0x0000, 0x004c, 0x0000, 0x0a56, 0x0000, 0x05e4, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x004c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,
0x0000, 0xd0e0, 0x0057, 0x3573, 0x11cf, 0x69ae, 0x0008, 0x2e2b, 0x6212,
0x0008, 0x0000, 0x0000, 0x0000, 0x004c, 0x0000, 0x1401, 0x0002, 0x0000,
0x0000, 0x00c0, 0x0000, 0x0000, 0x4600, 0x0080, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0
END
http://www.codeguru.com/Cpp/COM-Tech/activex/tutorials/article.p...
CodeGuru: ActiveX Control Tutorial
URL は参考情報です。
URL に同様の Q&A がありました。
> 実はあれから、問題のMSFlexGridのプロパティ値を
> 片っ端から、変更してみました。
> すると、ある設定値で大幅にサイズダウンしました。
>
> サイズにして、
> [488MB] ⇒ [37KB]
>
> 変更したのは、
> [プロパティ]-[スタイルタブ]-[グリッド線]を
> <1-Flat> ⇒ <0-None> にしただけです。
>
> 全体として
> [1GB] ⇒ [244MB] にまで縮小することができました。
どうやら、MSFlexGrid のプロパティの設定値が関係あるようです。
(MSFlexGrid 不具合のような気がしますが・・・)
試しに、一旦、今ある MSFlexGrid のコントロールを削除して、
再度、貼り直してプロパティを設定してみてください。
この方法でもダメなら、ダイアログのリソース上でプロパティを
設定するのではなく、プログラム側で設定するしか無いように
思います。
ちなみに、自分の PC(Visual C++ 6.0 SP5)で、MSFlexGrid を貼り付けて、
> [プロパティ]-[スタイルタブ]-[グリッド線]
の変更してみたのですが、事象を確認することはできませんでした。
もしかしたら、SP のバージョンが関係しているのかも知れません。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200207...
リソースファイルサイズが*Mバイトになる
参考情報です。
ありがとうございました。
問題のダイアログを削除して、再度構築しなおそうかと考えていましたので、MSFlexGridの変更だけならすぐすみそうです。挑戦してみます。
ふむ確かに、問題のダイアログではMSFlexGridコントロールを使用しています。(使ってはいるのですが異常にサイズが大きいですね)
こいつが犯人というのはわかるのですが、他のダイアログでも同じMSFlexGridを使用しています。
コピペでダイアログを作成するのがまずかったのでしょうか。