IBM VisualAge for C++ for Windows - README IBM* VisualAge* for C++ for Windows** バージョン 3.5.9 (C) Copyrights by IBM Corp and by others 1988, 2000. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. オペレーティング・システム・サポートに関する注意 IBM VisualAge for C++ バージョン 3.5.9 (以下「バージョン 3.5.9」) は、 Windows 95 および Windows NT 4.0 をサポートします。ライセンス契約に ある情報 (適用できる場合はライセンス情報)、または製品の仕様にかかわらず、 バージョン 3.5.9 は、Windows 3.1、Win32 または Windows NT 3.51 をサポートしません。 そのうえ、バージョン 3.5.7 は、仕様に記載されているとおりに、ある機能および プロシージャーをサポートしない場合があります。そのような機能およびプロシージャー は、Windows 3.1、Win32 または Windows NT 3.51 のサポートを必要とします。 IBMは、そういった非サポート機能およびプロシージャーに対して責任を負いません。 本ファイルには、IBM VisualAge for C++ for Windows 製品に関する重要な情報 が収められています。本製品をインストールする前に、必ず「概要」セクション を読んでおいてください。 サポート サポートに関する情報は、次の資料を参照してください。 o IBMCPPW ディレクトリーにある SUPPORT.TXT ファイル。 または o オンライン情報ノートブックの「Frequently Asked Question (FAQ)」情報 の「What If I Still Have Questions」というセクション。 注: 使用者の手引きは、米国およびカナダの 60 day Getting Started Support Period を 参照します。 Getting Started Support は、現在提供されていません。 同様の技術サポートは、パーソナル・システム・サポート・ライン料金にて提供可能です。 商標 次の用語は、米国またはその他の国、もしくはその両方における、 International Business Machines Corporation の商標です。 IBM DB2 Open Class OS/2 VisualAge この README で使用されるその他の用語で、ダブル・アスタリスク (**) がつ いているものは、他社の商標またはサービス・マークです。 Excel、Windows、Windows NT、Win32 は、Microsoft Corporation の商標です。 PostScript は、Adobe Systems Incorporated の商標です。 目次 1.0 概要 1.1 内容 1.2 Windows NT および Windows 95 の前提条件 1.3 インストール 1.3.1 重要な注意 - Windows 95 にインストールする前に 1.3.2 本製品のインストール 1.3.3 インストールする際の既知の問題 1.3.4 Windows NT でアンインストールする際の既知の問題 2.0 最新ニュース 2.1 ライセンス情報ノーツ 2.2 一般 2.2.1 Windows NT 2.2.2 Windows 95 2.3 コンパイルおよびリンク 2.3.1 使用上の注意 2.3.2 制約事項 2.3.3 既知の問題 2.4 リソースに関する作業 2.4.1 使用上の注意 2.4.2 既知の問題 2.5 ユーザー・インターフェース・クラス・ライブラリーの使用 2.5.1 Windows および OS/2 の移植性の相違 2.5.2 制約事項および既知の問題 2.5.3 クラス固有の情報 2.6 データ型および例外クラス・ライブラリーの使用 2.6.1 使用上の注意 2.6.2 IString のパフォーマンスに影響を及ぼす要因 2.7 コレクション・クラス・ライブラリーの使用 2.7.1 制約事項 2.8 複合文書フレームワーク・クラス・ライブラリーの使用 2.8.1 Windows NT へのインストール 2.8.2 使用上の注意 2.9 エディターの使用 2.9.1 使用上の注意 2.9.2 既知の問題 2.10 WorkFrame の使用 2.10.1 OS/2 との相違および制約事項 2.10.2 使用上の注意 2.10.3 既知の問題 2.11 ビジュアル・ビルダーの使用 2.11.1 既知の問題および制約事項 2.12 デバッグ 2.12.1 使用上の注意 2.12.2 Windows NT および Windows 95 に関する既知の問題 2.13 パフォーマンス・アナライザ−の使用 2.13.1 考慮事項 2.13.2 制約事項および既知の問題 2.14 データ・アクセス・ビルダーの使用 2.14.1 前提条件 2.14.2 使用上の注意 2.14.3 多重クラスの SOM ライブラリーを作成する 2.14.4 フィーチャー 2.14.5 既知の問題 2.14.6 データ・アクセス・ビルダーへ影響する DB2 の既知の問題 2.14.7 データ・アクセス・ビルダーを AS/400 で使用する 2.15 ブラウザーの使用 2.15.1 既知の問題 2.15.2 永続制約事項 2.16 SOM 2.16.1 既知の問題 3.0 サンプル 3.1 一般情報 3.1.1 使用上の注意 3.2 SOM/ワークステーション DSOM サンプル 3.2.1 既知の問題および制約事項 4.0 バージョン 3.5.9 に関係する情報 4.1 IBM オープン・クラスの変更 4.2 Microsoft SDK の変更 4.3 Win32 SDK オンライン・ヘルプ 4.4 既知の問題 4.4.1 Win95 ビジュアル・ビルダーの問題 5.0 ドキュメンテーション 5.1 印刷 5.1.1 印刷に関する既知の問題 5.1.2 印刷方法 1.0 概要 VisualAge for C++ for Windows 製品は、Intel システムの Windows NT**、 および Windows 95 で稼働します。同製品は、Windows NT および Windows 95 で 稼働するコードを生成します。 特に指定がない限り、Windows は、Windows NT および Windows 95 を指します。 1.1 内容 本製品の内容は、次のとおりです。 o コンパイラー (ICC) o リンカー (ILINK) o ダイアログやビットマップなどの Windows リソースの定義、作成を行う ツールおよびユーティリティー o オンライン・ヘルプ・テキストの作成、表示を行うツールおよびユーティリティー o メッセージ・コンパイラー o システム・ヘッダー・ファイルおよびライブラリー o ライブラリー・マネージャー (ILIB) o 次のクラス用のオープン・クラス・ライブラリー、ヘッダー・ファイル、および DLL - データ型および例外クラス - コレクション・クラス - ユーザー・インターフェース・クラス - 複合文書フレームワーク・クラス o エディター o WorkFrame o ビジュアル・ビルダー o デバッガー o パフォーマンス・アナライザー o データ・アクセス・ビルダー o ブラウザー o SOM ワークステーション および SOM デベロッパーズ・ツールキット バージョン 2.1 o オンライン資料および PostScript フォーマット 1.2 Windows NT および Windows 95 の前提条件 o Windows NT 4.0 が必須です。本製品は、Windows NT 4.0 より前のバージョンでは 稼働しません。 または o Windows 95 o Windows NT および Windows 95 が必要とするディスク・スペースは、以下のとおりです。 - 本製品の最小限のインストールには、48M バイトが必要。 - ドキュメンテーションを含む製品全体のインストールには、370M バイトが必要。 1.3 インストール 本セクションは、製品のインストールに関する重要な情報を紹介します。 インストール・プログラムを実行する前に、インストレーション・ガイドを見るには、 次のように入力してください。 x: (x: は CD-ROM が入っているドライブ) cd ibmcppw\bin iview ..\help\cppwigde.inf 本製品のインストールを行いながら、インストールおよびアンインストールに関する 詳細を表示できます。 WorkFrame またはブラウザーなどのコンポーネントにある「ヘルプ (Help)」プルダウン の「一見表示 (At a Glance)」連鎖メニューの「インストール・ガイド (Install Guide)」 を選択してください。 1.3.1 重要な注意 - Windows 95 にインストールする前に 本セクションでは、Windows 95 に本製品をインストールする前に、行っておく べきことを説明します。 1.3.1.1 本製品をインストールする前に必要なタスク インストールする前に、システム環境サイズを増設する必要があります。 VisualAge for C++ for Windows 製品は、デフォルトのシステム環境サイズ が小さすぎる場合、インストール中に、システム環境変数をいくつか更新します。 変更必須項目は、以下に説明します。 1.3.1.2 C:\CONFIG.SYS の変更 エディターを使用して、C:\CONFIG.SYS ファイルに、次の行を追加してください。 C:\CONFIG.SYS ファイルが存在しない場合は、作成して次の行を入れてください。 SHELL=C:\WINDOWS\COMMAND.COM /p /e:20000 この行は、環境サイズを 20,000 バイトに設定します。それは、VisualAge for C++ 製品 には十分なサイズです。多くの環境スペースを使用するその他の製品に対しては、 この値を大きくする必要があります。 メモリー上の制約によって、システムにより小さな値を使用する場合もあります。 この変更により、フォルダーから直接実行するプログラムの環境サイズが設定されます。 注: 上記の内容は、Windows 95 が、C:\WINDOWS ディレクトリーにインストール されていることを前提としています。 別のディレクトリーにインストールしている場合は、ディレクトリー名を置き換えて ください。 1.3.1.3 MS-DOS プロンプトの変更 MS-DOS プロンプトから開始します。「スタート」ボタンを使用する場合は、 「プログラム」を選択してから、「MS-DOS プロンプト」 を選択してください。次のうちどちらかを実行して、 「MS-DOS プロンプトのプロパティ」ウィンドウをオープンしてください。 o MS-DOS プロンプトの左上の角にある「MS-DOS」アイコンをクリックして、 システム・メニューをオープンし、「プロパティ」項目を選択します。 または o ツールバーが活動状態である場合、ツールバー上の「プロパティ」アイコン を選択します。 上部の「メモリ」タブを選択して、メモリー・ページに切り替えてください。 「コンベンショナル メモリ」エリア内は、ドロップダウン入力フィールドです。 矢印をクリックして、「4096」記入項目が表示されるまでスクロールダウンし、 それを選択してください。 「プロパティ」シートの下部にある「OK」ボタンをクリックしてください。 この変更により、MS-DOS プロンプト開始時の環境サイズが設定されます。 1.3.2 本製品のインストール 詳細は、インストレーション・ガイドを参照してください。インストール・プログラム を実行する前に、インストレーション・ガイドを見るには、次のように入力してください。 x: (x: は CD-ROM が入っているドライブです) cd ibmcppw\bin iview ..\help\cppwigde.inf 本製品のインストールを行いながら、インストールおよびアンインストールに関する 詳細を表示できます。 WorkFrame またはブラウザーなどのコンポーネントにある「ヘルプ (Help)」プルダウン の「一見表示 (At a Glance)」連鎖メニューの「インストール・ガイド (Install Guide)」 を選択してください。 ファイルがインストールされているデフォルト・パスは、IBMCPPW です。 1.3.2.1 複合文書フレームワーク・クラス用ファイルのインストール 「複合文書フレームワーク・クラス・ライブラリーの使用」というセクションの インストールに関する情報を参照してください。 1.3.3 インストールする際の既知の問題 o インストール中に、インストール・ウィンドウを最小化しないでください。 インストール実行中にそれを最小化すると、セットアップ画面が凍結する場合があります。 ハード・ディスクの空きスペースが不足すると、インストールは続行できません。 ウィンドウをリストアするとき、エラー・ダイアログが表示されないからです。 使用可能なハード・ディスク・スペースが十分にあるか確認して、インストールを 再び開始する必要があります。 1.3.4 Windows NT でアンインストールする際の既知の問題 o Windows NT では、同じマシンに複数のインストール・イメージを持たせた後、 本製品をアンインストールしようとすると問題が発生します。 これは、ハード・ディスクに本製品をフルインストールしたときだけ起こります。 1 番目のイメージは、正常にアンインストールできますが、2 番目のイメージを アンインストールしようとすると、エラー・メッセージが表示されます。 アンインストール・プログラムに必要なファイルが、いくつか削除されました。 IBMCPPW\INSTALL\UTILS ディレクトリーという CD-ROM ディレクトリーから ファイルをすべて、オペレーティング・システムがインストールされた \WINNT\VACPPINS ディレクトリーにコピーしてください。 もう一度、アンインストールを実行してください。 2.0 最新ニュース このセクションでは、最新ニュースおよび制約事項を紹介します。 2.1 ライセンス情報ノーツ ライセンス情報ブックレットには、再配布ファイルの用語および条件が含まれています。 再配布できるファイルのリストは、REDISTR.TXT ファイルに含まれます。 現在、CPPWOT3.DLL および ILIBIPF32.DLL の名前変更はできないことに注意してください。 2.2 一般 本セクションでは、本製品の複数のコンポーネントに適用されるニュースおよび 制約事項を紹介します。 o オンライン情報ノートブックには、PostScript ファイルおよび印刷された 本より新しい情報が収められています。 2.2.1 Windows NT o Windows NT では、スクリーン・セーバー・コードに既知の問題があります。 使用環境スペースがあるサイズに達すると、WINLOGON.EXE プログラムは トラップします。 このプログラムがトラップすると、Windows NT はマシンを停止します。 電源をオフにして再度オンにしないと、これをクリアできません。 スクリーン・セーバーの機能を使用している場合、すぐにそれを 使用不可にすることを強くお勧めします。さもないと、将来この問題が発生します。 2.2.2 Windows 95 o VisualAge for C++ ツールは、Windows 95 に仮想メモリー問題があるとき、 予測できない動きをする場合があります。 フル・スワップ・スペースなどの仮想メモリー問題は、システム通知なしに、 システムのロックアップおよび異常終了を引き起こします。 VisualAge for C++ ツールを実行する場合、スワップ・ファイル用に、 少なくとも 40M バイトの空きスペースを使用可能にしておくことをお勧めします。 o MS-DOS コマンド・プロンプトを立ち上げ、本製品をインストールした ドライブの文字を入力すると、次のパスに位置します。 drive:\IBMCPPW\IBM VA FOR C++ FOR WINDOWS そのパスは正しくありません。適切な作業ディレクトリーに、ディレクトリーを 変更してください。 o Windows 95 ポインターは、ポインターおよび砂時計が交互に表示される場合があります。 その場合、ユーザーは、その他のタスク実行に取りかかれます。通常、砂時計が消えるまで、 いかなるアクションも起こせませんが、この場合は問題ありません。 o PSTAT および WinPerf プログラムは、利用不能です。 2.3 コンパイルおよびリンク 本セクションでは、コンパイルおよびリンクに関する重要な情報を紹介します。 2.3.1 使用上の注意 o システム・ヘッダー・ファイルおよびライブラリー システム・ヘッダー・ファイルは、コンパイラーによる作業のため、変更されました。 ライブラリーは、Microsoft 提供のバージョンから変更を加えず出荷されています。 o NMAKE による作業 nmake は、あるターゲットの構築に使用できる makefile に、複数の規則を検出した場合、 最後に検出した規則を使用します。 o デフォルトでは、VisualAge for C++ は、KERNEL32.LIB システム・インポート・ライブラリー にリンクされます。 その他のシステム・インポート・ライブラリーは、手動でリンクする必要があります。 システム・インポート・ライブラリーに対する Windows API のマッピング・リストは、 CD-ROM 上にある \IBMCPPW\HELP ディレクトリーの WINAPI.TXT ファイルを 参照してください。 そこには、一方は「A」で終わり、もう一方は「W」で終わるという違いを除いて、 全く同一の記入項目があります。 たとえば、StartService という windows API があるとします。 WINAPI ファイルには、StartServiceA および StartServiceW という記入項目 が 2 つあります。 末尾の A または W は無視できます。 o 構造化例外処理は、その他のプラットフォーム上にある VisualAge for C++ に 移植されません。 移植したいアプリケーションの構造化例外処理は、使用すべきではありません。 2.3.2 制約事項 o Windows 95 に限り、nmake は、スペースを含むファイル名を扱いません。 短くしたファイル名を使用しなくてはならない場合があります。 それは、「dir」コマンドを使用して検索できます。 o 静的にリンクする場合、ExitThread または ExitProcess API で、プロセスを 終了しないでください。実行時終了が起こらず、バッファーがフラッシュされないからです。 動的にリンクする場合、Windows 95 および ExitThread だけ、同じ制約事項が適用されます。 移植性のため、常に終了ライブラリー関数を使用してください。 o 異なるライブラリー環境間で、ファイル・ハンドルを渡さないでください。 たとえば、EXE でファイルをオープン (fopen、open、またはその他のライブラリー関数 による) しないでください。それから、実行時に EXE と DLL が静的にリンクしている場合、 それを DLL に渡さないでください。 o C++ でスレッド・ローカル記憶装置を使用する場合、Windows 95 の制約事項が 影響を及ぼします。 初期化または完了コードは、スレッド内の変数のために実行されません。 __thread int i = 5; /* OK, statically initialized */ __thread int j = f(); /* f() not called in Windows 95*/ Windows NT および Windows 95 では、スレッド終了の順序は予測できません。 DLL において、これは次のことを意味します。 PROCESS_DETACH 通知は、スレッド 1 以外のスレッドで起こります。 静的 C++ オブジェクトのデストラクターと同様に、atexit() 関数で登録された 完了コードは、PROCESS_DETACH 通知が起こるスレッドで実行します。 2.3.3 既知の問題 o C++ コンパイラーは、Z: ドライブにある C++ ソースをコンパイルするとき、 作動しない場合があります。 C++ コンパイラーは、一般保護障害およびレジスター・ダンプにより終了する場合が あります。 この問題は、Z: ドライブに位置しないディレクトリーへのソースの移動、 または /FT- コマンド行オプションの使用によって避けられます。 o ILINK オプションの /OPTFUNC は、COFF オブジェクトだけが参照する関数 を正しく削除しません。 これは、DLL 構築時に起こりうる問題ですが、EXE 構築時には起こりません。 o 引き数 (「:」およびファイル名) を付けずに、ILINK オプションの /STUB:xxx を 使用すると、トラップの原因になります。 o ドキュメンテーションによると、ILINK は、LIB 環境変数によって、 指定ディレクトリーを検索する前に、コマンド行で所定のディレクトリーを検索します。 現在は、その逆が行われています。 o 他のコンパイラーで作成され、そして単一の icc コマンド(例えば、下にある例では "ibm.obj" は "ibm.dll" のソース・オブジェクトなど)を使用する dll を持つ この製品によって作成された dll にリンクする場合、"microsoft.lib" は "microsoft.dll" のインポート・ライブラリーです。 icc /ge- ibm.obj microsoft.lib 次のエラー・メッセージが戻される場合があります: "致命的なエラー : オフセット xxxx xxxx で無効なオブジェクト 'microsoft.dll'" このような問題を回避するには次のような方法があります: 1. すべての Microsoft インポート・ライブラリーの前に "/B" のリンカー・ フラグを追加する。これで icc は ilink へのライブラリーのみを渡すようになります 2. dll にリンクするためのエクスポート・オブジェクト・ファイルを提供する。 この場合、icc は xxx.exp を生成するための ilib を呼び出しません。 3. xxx.dll にリンクするには、icc の代わりに ilink を使用する。 2.4 リソースに関する作業 本セクションでは、リソースに関する作業についての重要な情報を紹介します。 2.4.1 使用上の注意 o ibmpcnv の追加コマンド行オプションは次のとおりです。 -B : 入力ファイルはビットマップ -C : 入力ファイルはカーソル -I : 入力ファイルはアイコン -P : 入力ファイルはポインター -D を指定すると、上記のオプションは無視され、ibmpcnv は、「filein」ディレクトリー にある .ico、.bmp、.cur、.ptr 拡張子付きのファイルを変換します。 ibmpcnv は、ファイル・サフィックスを区別するので、上記のオプションが 追加されています。 それは、.ico、.bmp、.cur、.ptr サフィックス付きのファイルだけを 変換します。それは、リソース・イメージの型を判別するために、サフィックスを使用します。 o IBM リソース・コンパイラー (IRC) には、指定コード・ページにある リソースのコンパイルをサポートするため、コマンド行オプション -k codepageId があります。 o コマンド行から .INF フォーマットのブックを表示するには、iview を使用して ください。iview は、IPF User's Guide と IPF Programmer's Guide and Reference で紹介される xview ツールの 32 ビット・アップグレード版です。 それに加えて、libipfx.dll は libipf32.dll にアップグレードされています。 2.4.2 既知の問題 o メッセージ・コンパイラー・バグ 入力メッセージ (.mc) ファイルに、コメントは入力できます。 コメントは、最初のカラムがセミコロン (;) で始まり、行の最後で 終了しなければなりません。 使用者の手引きに説明されているように、コメントだけの行は、そのまま、 出力の組み込み (.h) ファイルにコピーされます。しかし、セミコロンは、C の 行終了コメント構文 (//) に変換されません。 セミコロンは、コメント行の先頭から削除されます。 その行がコメントであることをコンパイラーに指示するため、スラッシュを追加し、 手動で組込みファイルを更新する必要があります。 o リソース・コンパイラーは、バイナリー・リソース・ファイルに 定義された MENUEX リソースによって、バイナリー・リソース・ファイルを デコンパイルできません。 リソース・ワークショップは、リソースを MENU リソースとして扱います。 MENU リソースのもとで定義された「__VERSION 1」および「__OFF 4」を 表示するとき、それは、MENUEX リソースであることを意味します。この場合、 メニュー項目が正常にデコンパイルされない場合があります。 o DBCS 環境で、リソース・ファイルとしてファイルを保管すると、 リソース・ワークショップの作業速度が、非常に遅くなります。 この速度を向上させるには、コントロール パネルにある「システム (System)」セットアップ の下の「タスク処理 (Tasking)」セットアップの 「フォアグラウンドおよびバックグラウンド・アプリケーション同等反応 (Foreground and Background Application Equally Responsive)」を設定してください。 o E: などのパーティションのルート・ディレクトリーに本製品をインストールする場合、 IPF コンパイラーは、ご使用の環境に対して、次の変更を行わない限り作動しません。 - Windows 95 の場合、「IPF_PATH32」変数を、autoexec.bat ファイルで「E:\」 に設定する。 逆スラッシュを削除して、設定を「E:」に変更します。 - Windows NT の場合、「IPF_PATH32」変数を、レジストリーで「E:\」に設定する。 逆スラッシュを削除して、設定を「E:」に変更します。 「コントロール パネル」ウィンドウのシステム・ツールが使用できます。 o 空のヘルプ・リソースをコード化したら、これらのタグの適切な処理を 確実に行うため、null ターミネーターの行を追加する必要があります。 次の例を参照してください。 100 HELPTABLE { 10, ID_SUBTABLE, 20 } ID_SUBTABLE HELPSUBTABLE { 0,0 /* Null termination string here for empty table */ } 100 HELPTABLE { 0,0,0 /* Null termination string here for empty table */ } 2.5 ユーザー・インターフェース・クラス・ライブラリーの使用 次の情報は、IBM オープン・クラス・ライブラリーに含まれる ユーザー・インターフェース・クラスに関するものです。 これらの注意事項は、オープン・クラス・ライブラリー 使用者の手引き およびオープン・クラス・ライブラリー 解説書の両マニュアルの補足内容です。 2.5.1 Windows と OS/2 の移植性の相違 オープン・クラス・ライブラリー 使用者の手引きの「移植性」セクション、および オープン・クラス・ライブラリー 解説書の第 1 巻〜第 4 巻の関数の説明に 含まれる、プラットフォーム・サポート情報を参照してください。 2.5.2 制約事項および既知の問題 このセクションでは、制約事項と、ドキュメンテーションに関する問題を 含む既知の問題を説明します。 2.5.2.1 色 次のメンバーのオーバーライドが照会に追加されました。 これらは、フォント・ダイアログおよびファイル・ダイアログの背景色を設定します。 ifontdlg.hpp virtual IColor backgroundColor () const; virtual IFontDialog &setBackgroundColor (Const IColor& color); ifiledlg.hpp virtual IColor backgroundColor () const; virtual IFileDialog &setBackgroundColor (Const IColor& color); 2.5.2.2 グラフィックス Win32 と Windows 95 では、IGraphicBundle によって設定できるペンの、型、スタイル、 およびパターンのセットが限定されています。これらの環境では、使用可能な最適な近似値が 選択されています。 Windows 95 のグラフィック・デバイス・インターフェース (GDI) では制限があるため、 ペン・パターン IGraphicBundle::filled および IGraphicBundle::hollow だけが サポートされています。 2.5.2.3 マルチメディア 通知ハンドラー内での IMMDEVICE::MODE の使用 IMMDevice::mode は、その実行の一部で通知イベントを生成します。 通知ハンドラーを書き込むときは、このことを念頭におかなければなりません。 次のコードについて考えてみましょう。 このコードは、dispatchNotificationEvent ルーチンの一部です。 IMMNotifyEvent* notifyEvent = (IMMNotifyEvent*)(event.eventData().asUnsignedLong()); if (notifyEvent->command() == IMMNotifyEvent::play) { panel.playbtn.unlatch(); if (panel.playerDevice == CDID) if (panel.cdPlayer->mode() == IMMDevice::playing) { panel.playbtn.latch(); } } この例では、mode 関数は if 文節内で呼び出されています。 しかし、次について考えてみましょう。ここでは、mode 関数が if 文節の 外側に移動しています。 IMMNotifyEvent* notifyEvent = (IMMNotifyEvent*)(event.eventData().asUnsignedLong()); if (notifyEvent->command() == IMMNotifyEvent::play) { panel.playbtn.unlatch(); } if (panel.playerDevice == CDID) if (panel.cdPlayer->mode() == IMMDevice::playing) { panel.playbtn.latch(); } これによって、次の一連のイベントが発生します。 1. "mode()" コマンドにより、通知イベントが生成される。 2. その通知イベントにより、"dispatchNotificationEvent()" が再入される。 3. "mode()" コマンドは、if 文節内にないため再実行される。 4. スタック・オーバーフローが発生するまで、ステップ 1 〜 3 のループが繰り返される。 この状態で "mode()" コマンドを使用するときには、注意が必要です。 32 ビット Windows 環境での記録 32 ビット Windows では、記録をサポートする唯一の装置は、WAVEAUDIO (IMMWaveAudio) です。 さらに、記録用の新規データ・ファイルをオープンするときは、一定の記録パラメーターを 設定するだけで済みます。 記録が開始すると、これらの記録パラメーターを更新することはできません。 これは、記録済みデータを既存ファイルに追加するときにも該当します。 これらのパラメーターを受け取る、または設定する IBM オープン・クラス関数を、 以下にリストします。 o IMMConfigurableAudio::setBytesPerSecond o IMMConfigurableAudio::setBitsPerSample o IMMConfigurableAudio::setBlockAlignment o IMMConfigurableAudio::setChannels o IMMConfigurableAudio::setFormat o IMMConfigurableAudio::setSamplesPerSecond o IMMConfigurableAudio::bytesPerSecond o IMMConfigurableAudio::bitsPerSample o IMMConfigurableAudio::blockAlignment o IMMConfigurableAudio::channels o IMMConfigurableAudio::format o IMMConfigurableAudio::samplesPerSecond 記録済みデータがすでに含まれている装置で設定関数を使用した場合には、 例外が送出されます。記録がサポートされていない装置 (たとえば、32 ビット Windows で は IMMWaveAudio 以外の装置) で、設定関数または受け取り関数のいずれかを使用すると、 例外が送出されます。 IMMDevice::supportsRecord を使用して、受け取り関数が使用できるかどうかを 判別してください。 設定関数を使用する際には、「新規レコード・ファイル」フラグを保守することを お勧めします。 記録が開始すると、このフラグが false に設定され、設定関数にアクセスできなくなります。 IMMAUDIOCD の新規メンバー関数 次の関数が IMMAudioCD に追加されました。ただし、製品ドキュメンテーションには 追加されていません。 次の関数は、現行の目次記入項目を戻します。 public: unsigned long IMMAudioCD::currentContentsEntry() const 次の関数は、現行トラックを戻します。 public: unsigned long IMMAudioCD::currentTrack() const 32 ビット Windows でサポートされる IMMPLAYABLEDEVICE のメンバー関数 IMMPlayableDevice の次の関数が、32 ビット Windows でサポートされない関数 としてリストされるのは、実際の内容が以下の場合です。 public: IMMPlayableDevice& IMMPlayableDevice::startPositionTracking(const IMMTime &time, CallType call) public: IMMPlayableDevice& IMMPlayableDevice::stopPositionTracking(CallType call) IMMDIGITALVIDEO::SETDESTINATION の使用 ICoordinateSystem::originLowerLeft を使用すると、指定した setDestination 長方形が、 ビデオ・ウィンドウの左下と相対的にマップされます。 これによって、ビデオ・イメージのクリッピングが発生することがあります。 32 ビット Windows の複合装置 一般に、32 ビット Windows MCI 複合装置 (WAVEAUDIO、SEQUENCER、および DIGITALVIDEO など のデータ用ファイルを必要とする装置) は、ファイルがロードされるまで関数が限定されています。 このため、IMMFileMedia::load メンバー関数を使用して、これらの装置に対するアクションを、 ファイルがロードされるまで限定することをお勧めします。 MCI_LOAD エミュレーション 32 ビット Windows では、複合装置の装置要素 (データ・ファイル) は、複合装置を オープンしたときに指定するだけで済みます。 MCI_LOAD 関数はサポートされていないため、装置をオープンしたあとは、装置要素を 変更することはできません。 次の protected virtual 関数は、MCI_LOAD コマンドをエミュレートするために使用します。 これによって、IBM オープン・クラスのマルチメディア・オブジェクトのファイル名を変更する ことができます。 virtual IMMDevice &saveDeviceSettings (), &restoreDeviceSettings (Boolean newRecordMode = false); 複合装置では、IMMFileMedia::load が呼び出されると、次のイベントが発生し、 MCI_LOAD をエミュレートします。 1. オブジェクトの階層に含まれるクラスのすべてが、saveDeviceSettings を 使用して、直接関係のあるパラメーターまたは設定値を保管するよう要求される。 2. オブジェクトに関連付けられた現行装置がクローズする。 3. 新規装置が新規ファイル名でオープンし、オブジェクトに関連付けられる。 4. オブジェクトの階層に含まれるクラスのすべてが、restoreDeviceSettings を 使用して、直接関係のあるパラメーターまたは設定値を復元するよう要求される。 派生クラスは、必要に応じてこれらのクラスを使用します。 戻りの前の最終ステートメントは、親の同関数への呼出しとなっているはずです。 これによって、継承クラスのすべてが、設定値を保管したり復元したりできます。 IMMDEVICE::SETVOLUME の制限 32 ビット Windows MCI は MCI_OVER をサポートしていないため、"over" パラメーターは 無視されます。 IMMDEVICE::SENDCOMMAND の制限 32 ビット Windows の mciSendCommand 関数は、任意のユーザー・パラメーターのパスを サポートしていないため、この機能は利用不能です。 2.5.3 クラス固有の情報 2.5.3.1 IAcceleratorKey および IAcceleratorTable Windows NT および Windows 95 では、アクセラレーター・キーについて、 次の制約事項があります。 o アプリケーション・コマンドとシステム・コマンドの両方を実行するキーを 割り当てた場合は、アプリケーション・コマンドへの割当ては無視されます。 キーを押したときに生成されるコマンド・イベントの型は、そのコマンドの識別子 に基づき、Windows プレゼンテーション・システムによって区別されます。 システム・メニューに同じ識別子を持つ項目が含まれる場合は、アクセラレーター・キー によって、システム・コマンド・イベントが生成されます。 それ以外の場合は、アクセラレーター・キーによって、アプリケーション・コマンドが 生成されます。 o ヘルプ要求を生成するキーを割り当てると、キーにより、IC_ID_HELP コマンドが 生成されます。 IFrameHandler は、コマンドをヘルプ要求として処理します。 次のいずれかを行わなければなりません。 - このキーを持つアクセラレーター・テーブルを、IFrameHandler 用 のキャンバス、コンテナー、またはフレーム・ウィンドウに割り当て、 このコマンドを処理する。 または、 - 一連の所有者ウィンドウにコマンド・イベントを送信するコマンド・ハンドラー を作成し、このハンドラーを、アクセラレーター・テーブルを持つウィンドウに 付加する。 2.5.3.2 IBaseComboBox Windows NT newshell アプリケーションでは、水平スクロール・バーは、単純な コンボ・ボックスに対してだけサポートされています。 これは、Windows のバグによるものです。Windows 95 アプリケーションでは、 水平スクロール・バーは、コンボ・ボックス型のすべてに対してサポートされています。 Windows NT oldshell アプリケーションでは、水平スクロール・バーはサポートされていません。 2.5.3.3 IContainerControl IContainerControl::setRefreshOff の呼出し後に IContainerControl::refresh を 呼び出すと、真のパラメーターによってリフレッシュが呼び出されます。 これによって、IContainerControl::setRefreshOff の呼出し後に発生する、 ペイントに関する問題が解決されます。 2.5.3.4 IContainerControl::ColumnCursor カラムは期待どおりの順序で繰り返されるため、オープン・クラス・ライブラリー 解説書 のこのクラスに関するドキュメンテーションは誤りです。 したがって、このクラスに関する Windows 情報は、次のように読み取らなければなりません。 WINDOWS 情報: ネイティブ Windows コンテナーの第 1 カラムは必須です。 IContainerColumn オブジェクトがこの必須カラムに対して挿入されていない 場合は、カーソルによってカラムは繰り返されません。 詳細は、IContainerColumn ドキュメンテーションを参照してください。 2.5.3.5 IFileDialog 次の環境では、「別名保管 (Save As)」ダイアログを使用しても、ファイルを ネットワーク・ドライブに保管できません。 1. Windows 95 環境 2. ファイルがすでに存在する環境 3. ネットワーク・ドライブが HPFS ドライブである環境 報告されるエラーは、パスが存在しないことを示します。 ただし、ネットワーク・ドライブが FAT ドライブの場合は該当しません。 ICommandHandler を使用して、IFileDialog に対してイベントをハンドルする ことはできません。 現在、コマンド・イベントおよび systemCommand イベントは、ハンドラーにパスされませんが、 デフォルトのファイル・ダイアログ・プロシージャーに直接送られます。 2.5.3.6 IFont IFont オブジェクトを、プリンター、プロッター、FAX、またはその他の非表示装置で 使用している場合、属性設定関数のいくつかは、フォント・メトリックの再計算で 使用するディスプレイ表示空間 (装置コンテキスト) を前提としています。 表示空間をパラメーターとしてこれらの関数にパスする方法はありません。 その結果、pointSize は、あとで、実際の表示空間について誤ったサイズを戻します。 ディスプレイ表示空間に使用する IFont オブジェクトについては、問題はありません。 関係する IFont メンバー関数を、以下にリストします。 setBold setItalic setUnderscore setAllEmphasis useBitmapOnly setDirection 解決法は、これらの関数のいずれかを呼び出すことによって、pointSize を保管することです。 この解決法は、フォントをディスプレイに使用していない場合だけ必要です。 例 : size = pointSize(); setBold(); setPointSize(size, printerPs); 2.5.3.7 IInfoArea サブメニューを持つメニュー項目は、情報域にテキストを表示しません。 2.5.3.8 IKeyboardEvent Windows プラットフォームでは、IKeyboardEvent::sysRq 列挙子はサポートされていません。 2.5.3.9 IMultiLineEdit 16 ビット Windows の制限のため、ラージ・ファイルの MLE (複数行入力域) への インポートは正しく行われません。 Windows 95 は、一部のウィンドウ管理フィーチャーを 16 ビットでインプリメントします。 16 ビットを使用すると、関数のパラメーターおよびメッセージの一部が制約を受け、 テキストが約 64K バイトに制限されます。 2.5.3.10 IThread 静的にリンクされた (Gd-) Windows 95 用マルチスレッド・アプリケーション を構築している場合は、制約事項が適用されます。 IWindow オブジェクトを含む、または IThread を使用して参照されるスレッド を作成する際に使用できるのは、IThread コンストラクターだけです。 スレッドを作成する際、CreateThread という 32 ビット Windows 関数、 または beginthread C ライブラリー関数の使用は避けなければなりません。 次の IThread コンストラクターは、CreateThread 関数または beginthread 関数 によって作成されたスレッドに適用されると、正しく機能しないことがあります。 IThread ( const IThreadId& threadID, const IThreadHandle& threadHandle = IThreadHandle::noHandle ); この制約事項は、Windows NT アプリケーション、または動的に リンクされた Windows 95 アプリケーションには適用されません。 2.6 データ型および例外クラス・ライブラリーの使用 2.6.1 使用上の注意 ITrace に新機能が追加され、トレース出力をファイルに取り込めるようになりました。 ITrace 出力をファイルに送信するには、アプリケーションの開始前に、 次の環境変数を設定してください。 SET ICLUI_TRACETO=FILE <- 次の環境が検査されて使用されます。 SET ICLUI_TRACEFILE= <- トレース出力は に取り込まれます。 2.6.2 IString のパフォーマンスに影響を及ぼす要因 IString クラスを国際化できるようにすると、パフォーマンスが低下することがあります。 パフォーマンスに影響を及ぼす要因は、次のとおりです。 o 何 K バイトもの文字列 o 文字列の解析と索引付けの頻度 2.7 コレクション・クラス・ライブラリーの使用 2.7.1 制約事項 2.7.1.1 キー・コレクション・クラス・オブジェクトのコピー 独自のコピー・コンストラクターを使用して、キー・コレクションにオブジェクト を追加する場合は、必ず、オブジェクトのキーを変更しないようにしてください。 キーを変更すると、プログラム・トラップなど、予想外の結果を招く可能性があります。 一般に、独自に定義したコピー・コンストラクターではなく、デフォルトの コピー・コンストラクターを使用することをお勧めします。 キー・コレクション・クラスは、その名前のワード "key" によって認識できます。 IKeyBag や IKeySetAsBSTTree はその例です。 2.8 複合文書フレームワーク・クラス・ライブラリーの使用 このセクションでは、複合文書フレームワーク・クラス・ライブラリーの 重要な情報を紹介します。 2.8.1 Windows NT へのインストール 複合文書フレームワーク (CDF)・サーバーを OLE コンテナーに挿入する、 または OLE コンテナー内の CDF サーバーを起動するには、\IBMCPPW\BIN ディレクトリー の DLL を指すシステム・パスを設定してください。 2.8.2 使用上の注意 o 次のプログラムが必要です。 - Win32 開発ツールキットの UUIDGEN.EXE。 これは、\IBMCPPW\SDK\BIN ディレクトリーにあります。 o アプリケーション・モデルが、ICLUI またはストリーム演算子を定義していない ユーザー定義クラスから、入力または出力をストリームする必要がある場合は、 独自の演算子を定義することができます。 演算子を定義するときは、プロトタイプ・ステートメントを .HPP ファイルに 組み込む必要があります。さもないと、INCLUDE\IBASSTRM.C に関するメッセージ を受け取ることになります。 たとえば、.CPP ファイルに次の内容が含まれる場合は、 IBaseStream& operator>>=(IPoint pt, IBaseStream& strm) {....} .HPP ファイルは、次の内容を含む必要があります。 IBaseStream& operator>>=(IPoint pt, IBaseStream& strm); 2.9 エディターの使用 このセクションでは、エディターの使用に関する重要な情報を紹介します。 2.9.1 使用上の注意 o Windows 95 では、Alt (前面) キー + 数字パッドを使用して文字を入力するとき、 Alt (前面) + 0 + 入力している文字の文字コードを使用します。 o 「フォント選択 (Font selection)」ウィンドウで、フォントをいくつか選択すると、 イタリックまたは太字などの使用可能な拡張フォント・スタイルが表示されます。 エディターは拡張フォント・スタイルの選択を無視し、基礎 (正規) フォントだけを使用します。 フォントの追加効果を設定するには、「オプション (Options)」プルダウン・メニューから 使用可能な「トークン属性 (Token Attributes)」ウィンドウを使用してください。 o 「エディター (Editor)」ウィンドウが、表示されない、または表示されても 使用できない場合は、LPEX.ini ファイルを削除して、エディターを再始動してください。 LPEX.ini ファイルは、Windows がインストールされているディレクトリーに 見つけることができます。 2.9.2 既知の問題 o Windows 95 でエディターを使用すると、太字とイタリックといった、文字効果の 一定の組合せは、一部のフォントまたはフォント・サイズで読み取られないことがあります。 o Windows 95 では、「別名保管 (Save As)」ダイアログを使用して、リモート の HPFS ドライブの既存ファイルに保管することはできません。 2.10 WorkFrame の使用 このセクションでは、WorkFrame に関する重要な情報を紹介します。 2.10.1 OS/2 との相違および制約事項 o プロジェクト継承もツール・セットアップも使用できません。 アクション (ツール)、および型は、vacpp.iws という製品ソリューション・ファイル に定義されています。 o WorkFrame はユーザー定義型をサポートしていません。 o 環境変数は、プロジェクト設定ノートブックによって定義できます。 o オプション・ダイアログを使用して定義したオプションは、プロジェクトごとに、 プロジェクト用のオプション・ファイルに保管されます。 このオプション・ファイルの拡張子は .iwo です。プロジェクト・ビューの 「オプション (Options)」プルダウン・メニューを使用すると、オプション・ダイアログに アクセスできます。 オプション・ファイルを削除した場合は、エディターを使用して新規オプション・ファイル を作成すると、オプション・ファイルを回復できます。 同じファイル名を使用し、拡張子はアスタリスクにしてください。 そのあと、オプション・ダイアログを使用して、プロジェクトのオプションを リセットしてください。 プロジェクト設定などのその他のプロジェクト固有情報は、プロジェクトごとに、 プロジェクトのプロジェクト・ファイルに保管されます。 このプロジェクト・ファイルの拡張子は .iwp です。 o 注: *.iws ファイル、*.iwp ファイル、および *.iwo ファイルといった、 上記の構成ファイルは、直接変更してはいけません。 o ドラッグ・アンド・ドロップはできません。 o プロジェクトの詳細ビューは利用不能ですが、アイコン・ビューおよび ツリー・ビューはサポートされています。 o モニターされたアクションは、WorkFrame ではなく、エディターによって インプリメントされます。 モニターはエディター・モニターであり、WorkFrame モニターではありません。 2.10.2 使用上の注意 o IBUILD コマンドおよび IMKMK コマンドは、これらが受け入れるパラメーター の数の制限が取り除かれるように更新されています。 現在、IBUILD および IMKMK には、パラメーター数に関する制約事項はありません。 2.10.3 既知の問題 o ノートブックでは、「ヘルプ (Help)」押しボタンを押すと表示されるヘルプは、 フォーカスを持つものに依存することがあります。 フォーカスがノートブック・タブにある場合は、「ヘルプ (Help)」押しボタン を押しても、ヘルプが表示されないことがあります。 オプション・ノートブックのほとんどのケースでは、ノートブックの「ヘルプ (Help)」 押しボタン上で、左方のマウス・ボタンを押したまま F1 を押すと、一般ヘルプが 表示されます。 o フォーカスがノートブック・タブ上にあるときに F1 を押すと、ヘルプが 表示される代わりに、ノートブック・ファイルが変更されることがあります。 o キーボード・ナビゲーションおよびアクセラレーターは、一部のダイアログ では正しく動作しません。 o オプション・ノートブックをオープンして、2 つのプロジェクトに対する オプションを同時に変更すると、問題が発生することがあります。 o 複数の .EXE を、同時に Run Monitored に選択した場合は、 これらのうち 1 ファイルだけ、複数回実行されます。 o 依存性ファイルを作成するオプションを指定した場合は、 あらゆる依存性がこのファイルに書き込まれるわけではありません。 一部は makefile に残ります。 o たまにですが、Windows 95 で実行しているとき、WorkFrame ウィンドウが、 マウスに応答しなくなります。 これを訂正するには、デスクトップをクリックして、WorkFrame ウィンドウ を再度クリックしてください。 o WorkFrame を数時間使用すると、仮想メモリーが少ないことについての 警告を受けることがあります。 モニター操作用のログ・ファイルが大きくなりすぎています。 この問題を回避するには、たまに、プロジェクト・モニター・ウィンドウ からエグジットする必要があります。 このエグジット・アクションにより、ログ・ファイルが削除されます。 o WorkFrame からの HLP ファイルおよび INF ファイルを使用したアプリケーション を構築して実行するときには問題があります。 そのアプリケーションは正しく構築されていると思われます。 このアプリケーションを実行すると、HLP ファイルおよび INF ファイル が見つからないというメッセージを受け取ります。 次のことを行う必要があります。 WorkFrame の設定値に、HELP サブディレクトリーを指す Help 環境変数 を設定してください。 そのあと、アプリケーションを再構築してください。 2.11 ビジュアル・ビルダーの使用 このセクションでは、ビジュアル・ビルダーに関する重要な情報を紹介します。 2.11.1 既知の問題および制約事項 o OS/2 リリースからのパーツ・ファイル (.vbb) は、このリリースでロードおよび 保管できますが、このリリースで保管されたパーツ・ファイルは、OS/2 リリース ではロードできません。 OS/2 パーツ・ファイルをロードすると、ビジュアル・ビルダーが、パーツ・ファイル を Windows フォーマットに変換するかどうか尋ねてきます。 このメッセージに対して YES と応答した場合は、パーツ・ファイルが 変換され、OS/2 で読み取ることができなくなります。 OS/2 パーツ・ファイルのコピーを保持しておきたい場合は、Windows リリース にロードする前に、OS/2 パーツ・ファイルをバックアップしてください。 o ネイティブ詳細ビュー・コンテナーを使用すると、カラム 1 以外の コンテナー・カラムを自由形式面から直接選択すると問題が発生します。 到達不能コンテナー・カラムを編集するには、次のことを行います。 1. コンテナーを選択する。 2. マウス・ボタン 2 をクリックする。 パーツに対するコンテキスト・メニューが表示されます。 3. VIEW PARTS LIST を選択する。 「パーツ・リスト (Parts List)」ウィンドウが表示されます。 4. 編集したいコンテナー・カラムを示すアイコンをダブルクリックする。 パーツに対する設定ウィンドウがオープンします。 o ネイティブ Windows コンテナーのコンテナー・カラムを使用する場合は、 コンテナーを詳細ビューだけに設定してください。 その他のコンテナーを使用すると、ビジュアル・ビルダーが警告なしにクローズする ことがあり、パーツの保管未済みの更新内容が失われる可能性があります。 o ネイティブ進行標識を使用すると、ビジュアル・ビルダーがシャットダウンする ことがあります。 この問題を回避するには、pmCompatible スタイルを ON に設定して、 CUA 進行標識を使用するようにします。 o ビジュアル・ビルダー 使用者の手引きに対して、印刷後に小さい変更が加えられました。 最新情報については、このブックのオンライン・バージョンを参照してください。 変更が加えられたセクションは、以下のとおりです。 ビジュアル・ビルダーの開始 パーツを使用するための学習 コンテナーおよびノートブックの組立て ヒント o ビジュアル・ビルダー パーツ解説書に対して、印刷後に小さい変更が加えられました。 最新情報については、このブックのオンライン・バージョンを参照してください。 移植性についての情報が追加され、Windows に固有のフィーチャー、または Windows コンパイラーによって無視されるフィーチャーの記述が追加されました。 2.12 デバッグ このセクションでは、デバッグに関する重要な情報を紹介します。 2.12.1 使用上の注意 o オンデマンドでデバッグを使用可能にするには、ユ−ザ−・プログラム のディレクトリを PATH 環境変数に追加するか、そのディレクトリーから プログラムを開始します。 オンデマンドでデバッグを実行するには、次のコマンドを入力します。 DOD path_name 使用者の手引きに DOD path_name \idebug を入力すると記述されているのは、正しくありません。 2.12.2 Windows NT および Windows 95 に関する既知の問題 o ステップオーバー機能またはステップ・デバッグ機能を使用して、 構造化例外 handling __finally ブロックにステップイントゥできません。 o デバッガーそれ自体に付加することは、予測不可能な結果になります。 o デバッガーのもとでアプリケーションを実行するには、非同期例外ハンドル を使用不可にします。アプリケーションのシグナルを使用して非同期ハンドラーを 登録する場合、例外を検出する方法およびハンドラーを起動する方法はありません。 o 実行中の行で停止点をトグルすると、その行の停止点を全消去します。 o コンストラクター・コードなどの一次関数の 1 つにシングル・ステップすると、 スタック記入項目が消去されます。 o Windows 95 では、停止点にヒットすると、システムはある状態でハングします。 その状態とは、ユ−ザ−が GUI アプリケーションをデバッグしているときであり、 アプリケーション・ウィンドウの 1 つをサイズ変更しているときです。 o Windows 95で、マルチスレッド・アプリケーションを完全に終結処理するには、 デバッガーを 2 回クローズ (F3) する必要があります。 o Windows 95 では、デバッガーをクローズする前に、変更アドレス停止点が すべて削除されていることを確認してください。プログラムのデバッグを 実行する際に変更アドレス停止点がスタックに残っていると、ハングします。 o Windows 95 では、すべての例外シグナルがデバッガーに渡されるわけでは ありません。無許可のオペレーションに対し、デバッガーは違反アプリケーション の例外を捕えることはできません。 o Windows 95 では、デバッガーで停止しているアプリケーションを、 システム・メニューでクローズすると、予測不可能な結果になります。 o Windows 95 のシステム制限により、デバッガーは、WaitForSingleObject などの ある一定のシステム・サービスをステップオーバーすることはできません。 o 16 進値は、「ストーレッジ (Storage)」ウィンドウの文字カラムに 正しく表示されないことがあります。これをフィックスするには、LC_ALL 環境変数を、 ユ−ザ−・マシンの国 / 言語設定に対応した ANSI ロケール (コード・ページ) に 設定してください。 たとえば、米国英語に対しては次のようになります。 SET LC_ALL=En_US.IBM-1252 プログラミングの手引きの "Compiled locales supplied with VisualAge for C++" テーブルで、 正しいロケール名前を参照できます。 使用するロケール名前の番号は、250 〜 1257 の範囲にしてください。 2.13 パフォーマンス・アナライザ−の使用 このセクションでは、パフォーマンス・アナライザ−の使用に関する重要な情報を紹介します。 2.13.1 考慮事項 o ファイル・アクセス・トレースを起動するには、次の 2 つのことを行ってください。 1. _KERNEL.LIB をユ−ザ−・プログラムにリンクさせる。 2. 環境変数 PA FILEACCESS を ON に設定する。(環境変数にブランクが含まれて いることに注意してください。) 「トレース生成 (Trace Generation)」ウィンドウ が表示されるたびに、パフォーマンス・アナライザ−はこの環境変数を照会します。 ファイル・アクセス・トレースが活動化しているとき、ファイル・ハンドルを 使用する Win32 機能をトレース・プログラムが呼び出す場合、パフォーマンス・アナライザ− は呼出しと関連付けられたファイル・ハンドルのトラックを保持します。 パフォーマンス・アナライザ−が呼出しの情報を表示するとき、Win32 関数名は括弧の付いた 関連ファイル名で修飾されます。たとえば、「ネストの呼出し (Call Nesting)」ダイアグラム で CreateFile 関数は CreateFile (MyFile.dat) と表示されます。Win32 関数は次の ファイル・ハンドルを使用します。 CloseHandle CreateFile FlushFileBuffers GetFileInformationByHandle GetFilePointer GetFileSize GetFileTime GetFileType LockFile LockFileEx ReadFile ReadFileEx SetEndOfFile SetFilePointer SetFileTime UnlockFile UnlockFileEx WriteFile WriteFileEx o 既存スレッドの実行を終了した後にスレッドを作成するマルチスレッド・アプリケーション を実行している場合、オペレーティング・システムは終了したスレッドに対応するスレッド番号を 再利用することがあります。このようなとき、パフォーマンス・アナライザ−は実際に実行された 数より少ないスレッドを報告します。 o 実行可能な関数を最初に含むオブジェクト・ファイルをトレースできない場合、 「トレース生成 (TRACE GENERATION)」ウィンドウが表示される前に、 そのアプリケーションの一部またはすべてが実行されます。このケースでは、 パフォーマンス・アナライザ−は最初にトレースできる関数を実行して停止し、 次に「トレース生成 (TRACE GENERATION)」ウィンドウを表示します。 o WorkFrame でパフォーマンス・アナライザ−を使用可能にするには、次のこと を行います。 - パフォーマンス・アナライザ−を使用可能にする最善の方法は、 ビルド・スマートのオプションを使用することである。これで、コンパイラー およびリンカーのオプションの設定が両方とも正しく行われます。 - コンパイラー・ダイアログのオプションを使用可能にするには、 コンパイラー /Gh オプションをオンにするだけである。しかし、 リンク時に CPPWPA3.OBJ を追加する必要はありません。 o 次のフィーチャーは使用可能ですが、文書化されていません。 パフォーマンス・アナライザ−のプログラムを作成する際のユーザーは、 オプション /Ti+ (完全なデバッグ情報の作成) ではなく、/Tn+ (部分的な デバッグ情報の作成) で同時にコンパイルをします。 /Tn+ オプションは、 通常 /Ti+ オプションより小さい、実行可能なプログラムを作成します。 しかし、/Tn+ オプションを使用する場合、パフォーマンス・アナライザ−は 内部リンクをもつ関数の名前を判別することができません。これらには、 静的として宣言された非メンバー関数、およびインラインとして宣言された関数 がインクルードされます。 「パフォーマンス・アナライザー (Performance Analyzer)」ダイアグラムでは、 これらの関数は 16 進数のアドレスとして表示されます。 2.13.2 制限事項および既知の問題 o 最初にトレースされる関数 (通常メイン関数) は、トリガーとして設定できません。 つまり、使用不可能です。 o _KERNEL.DLL インターセプト・ライブラリーが使用されていると、 パフォーマンス・アナライザ−が使用する次の 6 つのシステム呼出しは、 ユーザーのプログラムでトレースされません。 それらは、InitializeCriticalSection、EnterCriticalSection、 LeaveCriticalSection、LoadLibrary、GetProcAddress、および GetCurrentThreadId です。 o トレース・ファイルを生成した後も、パフォーマンス・アナライザ−が 実行されている間は、ユーザーの実行可能プログラムを消去、または 再作成できないことがあります。パフォーマンス・アナライザ−を終了して、 ユーザーは実行可能プログラムを再作成します。 o ユーザーのプログラムにアンダースコアー (_) に続く関数がある場合、 パフォーマンス・アナライザ−はトレース・ファイルにアンダースコアーを 付けないで関数を表示します。 o パターン認識フィーチャー「ネストの呼出し (Call Nesting)」(ダイアグラムで) には 次のような制限があります。 - パフォーマンス・アナライザ−は、選択されたスレッド内の最初の 32,768 イベント のパターンだけを検索する。 - パフォーマンス・アナライザ−は、パターンを最大 8191 まで検索する。 パフォーマンス・アナライザ−がこれらの制限のどちらかに達したとき、パターンの検索は 停止します。 o コンパイラーはユーザー定義関数のプロファイル・フックしか生成しません。現在の コンパイラーは、ユーザー定義関数に加えて、いくつかのコンパイラー生成関数に対する プロファイル・フックも生成します。これらのコンパイラー生成関数は、 ランダム文字からなる認識不可能な名前としてトレース・ファイルに表示されます。 o ユーザーが「グラフの呼出し (DYNAMIC CALL GRAPH)」ダイアグラムまたは 「静的 (STATISTICS)」ダイアグラムの C++ プログラムを解析中で、クラスまたは 実行可能プログラムを強調表示中に、PROJECT > EDIT FUNCTION を選択すると、 パフォーマンス・アナライザ−でエディターを起動できません。パフォーマンス・アナライザ− がエディターに表示するのは、強調表示された項目が関数の場合のソース・コードだけです。 2.14 データ・アクセス・ビルダーの使用 このセクションでは、データ・アクセス・ビルダーの使用に関する重要な情報を紹介します。 2.14.1 前提条件 o データ・アクセス・ビルダーを実行するために、前提条件となるデータベースはありません。 ユーザーが DB2 データベースを使用する場合、Windows NT または Windows 95 の プラットフォームをインストールする必要があります。 2.14.2 使用上の注意 o SVGA スクリーンを推奨します。 o 32 ビットのデータソースだけがデータベース選択リストに表示されます。 o 32 ビットのドライブ・マネージャーは \WINNT\SYSTEM32\ODBC32.DLL にあります。 o データベース製品をインストールまたは取り外すたびに、 「データベースの登録 (Register Database)」オプションを使用する必要はありません。 このオプションは、次の場合に必要となります。 - DB2 の追加 - DB2 の取外し - 少なくとも 1 つの ODBC データ・ソースへ、何もないところからジャンプ - 少なくとも 1 つの ODBC データ・ソースから、何もないところへジャンプ 2.14.2.1 Windows NT アプリケーションで IDatastore クラスを使用する コードを生成する IDatastore クラスを、データ・アクセス・ビルダーで使用する ほかに、ユーザー・アプリケーションがいずれかのデータベースで使用する場合、 次のことを行う必要があります。アプリケーションがアクセスするすべてのデータベースに、 CPPWACL2.BND ファイルをバインドします。これにより、IDatastore でデータベースに対する 接続、切断およびトランザクションの完了を行うことができるようになります。 ファイルをバインドするには、次の入力を行います。 DB2START DB2 CONNECT TO database DB2 BIND D:\IBMCPPW\BND\CPPWACL2.BND DB2 TERMINATE この database はユ−ザ−・データベースの名前です。D:\IBMCPPW はコードを インストールするパスです。 2.14.3 多重クラスの SOM ライブラリーを作成する 「ファイル作成 (makefile)」オプションまたは「自動リンク (automatic link)」オプション をチェックすると、SOM コードを生成する際に、SOMInitModule と呼ばれる C プロシージャー が暗黙的に生成されます。これらの 2 つのオプションにより、このプロシージャーの存在を 必須とする SOM DLL の作成が暗黙指定されます。SOM DLL を作成しない場合、オプションが チェックされていないことを確認します。そうしないと、複数の SOM OBJ ファイルを一緒に リンクする場合、このルーチンに対し多重定義エラーが返されます。 2.14.4 フィーチャー o データ・アクセス・ビルダーでは、次の ODBC ドライバーもサポートしています。 - dBase - Excel - SQL Server - Text 上記のドライバーの構成情報については、WINHLP32 を使用してドライバーの ヘルプ・ファイルを表示してください。そのファイルは、 \ibmcppw\odbc32 または \ibmcppw\odbc16 ディレクトリーにあります。 たとえば、dBase ドライバーの情報については次のように入力します。 winhlp32 ibdbf08.hlp o 「ウィンドウ・サイズの保管 (Save window size)」オプションが 「ビュー (View)」プルダウン・メニューに新しく追加されています。このオプション により、データ・アクセス・ビルダーのサイズおよび位置が、再始動時に復元されます。 このオプションはデフォルトで指定されていません。 o Windows 95では、Windows NT で使用される「クリーン (clean)」オプションでなく、 生成 makefiles の「クリーン 95 (clean95)」オプションを使用してください。 2.14.5 既知の問題 o データ・アクセス・ビルダーは、どのデータベースにおいても有限数のテーブル に (仮想メモリーに基づき数千分の数十という順番で) アクセスするように限定されています。 これより大きいテーブル数でデータベースにアクセスする場合、制限数を越えたテーブルは テーブル・リスト・ボックスに表示されます。テーブル・リストの先頭近くに表示される これらテーブルのエイリアスには、予備手段が採られていません。つまり、クラスを 生成しようとすると、トラップが発生します。 この問題を回避するには、「クラス作成 (Create Classes)」ダイアログにある フィルターを使用して、それらの所有者、名前および型により、テーブルの サブセットを表示してください。 o 無効なクラスまたは無効な属性名がクラス設定ノ−トブックに入力されている場合、 直前の値が復元するように設計されています。しかし,警告は発行されません。 o データ識別子を空白 (null) 可能カラムにマップすると、空白 (null) 設定の データ識別子でデータベースは動作しません。 o ノートブックのページにフォーカスがあると、クラス設定ノートブックの ヘルプ・ボタンは動作しません。ページのヘルプを表示させるには、F1 キーを 使用してください。 o クラス作成後、マウス・ポインターはマウスを移動するまで使用中になります。 使用中の状態を終わらせるには、クラス作成後マウスを移動させてください。 2.14.6 データ・アクセス・ビルダーへ影響する DB2 の既知の問題 o 15 以上の文字の外部キー・カラム名をもつテーブルをロードすると、 データ・アクセス・ビルダーが破損する原因になります。 o character 型に基づいた DB2 ユーザー定義型は正しくマップされません。 o DB2 が DECIMAL を C/C++ データ型の double にマップすると、丸めエラーが生じ、 精度が損なわれることがあります。また、データ・アクセス・ビルダー は DECIMAL を double データ型にマップします。 2.14.7 データ・アクセス・ビルダーを AS/400 で使用する o フィルター処理の際は「所有者 (OWNER)」フィールドを使用することを推奨します。 「所有者 (owner)」フィールドでは大文字で指定しなければなりません。 o AS/400 は Windows NT 日本語バージョンのコード・ページ 943 をまだ サポートしていません。AS/400 の接続を試みる前に、事前準備として DB2CODEPAGE 環境変数を 932 に設定してください。 o ユーザーは AS/400 システムに NULLID という集合名を作成する必要があります。 o ユーザーがコード・ページ 1252 をもつ US/ENGLISH システムを使用し、 V3R1 AS/400 システムと対話している場合、PTF SF24582 を AS/400 に ロードしなければなりません。 1252 は US/ENGLISH システム用にデフォルトで設定されたコード・ページです。 1252 は V2R3 をサポートしている AS/400 と対話できません。 このケースでは、AS/400 システムに接続する前に、 DB2CODEPAGE 環境変数 を 850 に変更する必要があります。 2.15 ブラウザーの使用 このセクションでは、ブラウザーの使用についての重要な情報を紹介します。 2.15.1 既知の問題 1. Windows 95で印刷するとき、プリンターがファイルに印刷するように設定されている場合、 「ファイルへ印刷 (Print To File)」ダイアログがファイル名をプロンプトを指示するために 現れます。このダイアログはほかのウィンドウの裏側に表示されますが、タスク・バーから アクセスするか、ほかのウィンドウを移動させて表示します。ファイル名を入力すると、 ブラウザーは印刷要求のタスクを継続します。 2.15.2 永続制約事項 1. VisualAge C++ for OS/2 バージョン 3.0 で生成された PDB ファイルは このブラウザーで使用することができます。VisualAge for C++ for Windows で 生成された PDB ファイルを使用することはできませんし、OS/2でも使用できません。 また、複数のシステムに渡った PDL、PDE および PDD ファイルを使用することもできません。 2. C ソース・ファイルから作成された .OBJ ファイルを含むプログラムを ブラウズする場合、「ファイルのブラウズ (Browser Files)」ダイアログに より C ファイルの .PDB ファイルは検出できないことが通知されます。 このメッセージを無視し、「ロード(Load)」ボタンを選択します。C ファイル のブラウザー情報がないことに注意してください。 3. 「ブラウザー情報の生成 (Generate Browser)」を選択した場合、コンパイラーは、 たとえコンパイルに失敗したとしても、PDB ファイルを作成します。 そのファイルにはときどき誤りデータが含まれています。この問題が常にブラウザーで 検出されるとは限りません。 4. フルパスのファイル名のリストには、コンパイル後の名前が含まれます が、すべてのファイル名がユーザーのシステムに必ずしも含まれません。 たとえば、VisualAge for C++ のいずれかのライブラリーのファイルを すべてリストする場合、ファイルは C:\IBMCPPWの位置に表示されます。ブラウザーで ファイルを検出できない場合、「ブラウザー設定 (Browser Settings)」ノートブック で定義されたパスを検索します。 5. ブラウザーは、使用されるすべての LIB ファイルからの情報など、 プログラム (.EXE または DLL) からの情報をすべてロードします。.EXE または DLL を 作成するプロジェクトに LIB ファイルを作成するプロジェクトが含まれていない場合、 ブラウザーの最新表示機能で情報をリフレッシュすることができませんし、情報を 表示することもできません。 6. QuickBrowse およびコンパイラー生成 .PDB ファイルで何らかのブラウザー情報を ロードする場合、メッセージ "An error occurred while loading the file filename.pdb" が 表示されることがあります。.PDB ファイルを削除して QuickBrowse 情報だけをロードするか、 ユーザーのすべてのソース・ファイルに対し .PDB ファイルを生成するプロジェクトを 再作成するか、どちらかを行ってください。それでも問題が解決しない場合、 VisualAge for C++ のサービス・サポートに連絡してください。 7. QuickBrowse は SOM クラスを正しく識別しません。 8. VisualAge for C++ のサンプル・プロジェクト実行可能ファイルでブラウザーを実行しようとする場合、 メッセージ "Will not QuickBrowse the following files after analysis of the make file" が 表示されることがあります。このメッセージが表示されたら、「取消し (Cancel)」を選択し、 ブラウザーを終了します。次に、次のいずれかを実行します。 o プロジェクトの再作成 o ターゲット・プロジェクトの名前変更 o ターゲット・プロジェクトの削除 これで、プロジェクトをブラウズできます。 9. Windows 95 で使用される 16 ビット GDI 座標システムのために、ブラウザー は、OS/2 または Windows NT でレンダーできる非常に複雑なグラフをレンダーできません。 ブラウザーがそのような状態になると、メッセージが表示され、可能な次善策がメッセージの オンライン・ヘルプに示されます。残念なことに、次善策をすべて試みた後でも、 Windows 95 に表示できない複雑なグラフがいくつかあります。 2.16 SOM このセクションでは、SOM ツールキットに関する重要な情報を紹介します。 2.16.1 既知の問題 o DTS hh エミッターの使用中に、 - コンストラクターの複製がときどき生成される。 - 実行時ヒープ・エラー 6018 がときどき発生する。 o 次のコードが、Windows NT におけるアクセス違反の原因となります。 SOMClass * pClass = NULL; somId aClassId = somIdFromString( "MyClass"); Class = SOMClassMgrObject->somFindClsInFile(aClassId, 0, 0, "mydll"); 3.0 サンプル このセクションでは、サンプルの使用に関する重要な情報を紹介します。 3.1 一般情報 3.1.1 使用上の注意 すべてのサンプルをパフォーマンス・アナライザーで使用可能にするには、 サンプルを実行する CPPWPA3.DLL、およびエラーを発生させないでサンプルを 作成する CPPWPA3.OBJ が存在しなければなりません。これらのオブジェクトは、 パフォーマンス・アナライザー・コンポーネントをインストールするときに、 自動的にインストールされます。それを行わない場合は、CD-ROM の /BIN ディレクトリー から CPPWPA3.DLL および /LIB ディレクトリーから CPPWPA3.OBJ を、対応するユーザーの ディレクトリーにコピーします。 CPPWPA3.DLL および CPPWPA3.OBJ をコピーすると、 ユーザーはエラーを発生させないで簡単に実行および作成ができるようになります。 パフォーマンス・アナライザーまたはそのほかのすべてのコンポーネントをサンプルで 使用するには、これらのコンポーネントをインストールする必要があります。 3.2 SOM/ワークステーション DSOM サンプル このセクションでは、サンプルの使用に関する重要な情報を紹介します。 3.2.1 既知の問題および制約事項 o Build Notes に、サンプルを作成する方法と異なる一般的な説明が提供されています。 個々の readme.txt ファイルの特定情報を読むようにしてください。 「Readme の表示 (View Readme)」選択ボックスをクリックして、 エディターの readme ファイルを参照します。また、このセクション後半 の追加情報も参照してください。 o サンプルの作成および実行: 一般情報 - 別のコンパイラーがすでにインストールされている環境で VisualAge for C++ をインストールすると、ときどき問題が起こります。 パス、インクルードおよび LIB 環境変数をチェックして、実行可能なプログラム、 組込みファイルおよびライブラリーを正しく使用していることを確認してください。 - 「プロジェクト / 標準作成 (Project/Build Normal)」を選択すると、 うまく動作しません。というのは、WorkFrame は IDL ファイルをコンパイルする 規則を現在サポートしていないからです。代わりに、「プロジェクト / 作成 (Project/Make)」 を選択して、供給されている makefile の "vac.mak" を使用してください。または、"vac.mak" を右方クリックして、ポップアップ・メニューから「作成 (make)」を選択してください。 - 「プロジェクト / 作成 (Project/Make)」および「プロジェクト / 実行 (Project/Run)」 だけを WorkFrame はサポートしています。 o サンプルの作成および実行: サンプル特定情報 - すべての DSOM サンプル (ロケーション: samples\som\somd\cpp\*) 各ワークステーションの DSOM サンプルを実行後、別のサンプルを実行する前に、 デーモンの "somdd" を抹消する必要があります。 somdd を実行しているウィンドウをクローズしてください。 - イベント (ロケーション: samples\som\somd\event) このサンプルの 4 つの対話式プログラムを開始すると、競合状態になる可能性があります。 プロジェクト・モニターまたはコマンド行から run.bat のコマンドを一度に 1 つずつ実行する ことで、手動でプログラムを開始できます。 - DSOM サンプルのクライアントが、デーモンまたはサーバーを最初に 開始しないで起動されると、クライアントはハングし、CTRL-C で終了することができません。 「タスクの終了」を呼び出して、「タスクメニュー」から明示的に終了しなければなりません。 4.0 このセクションでは Micrsoft SDK の新しいバージョンを含むバージョン 3.5.9 に関係する重要な情報を紹介します。 4.1 IBM オープン・クラス このパッケージには VisualAge C++ for Windows バージョン 3.5 のオープン・クラス ・コンポーネントの修正が収められています。 この修正パッケージのレベルでは、より最新の MS SDK のバージョンを利用できます。 いくつかの SDK の変更によりオープン・クラスへ各種の変更をインプリメントする 必要がありました(以下を参照)。 最新の公式 Fixpak WTO356 が出た後にされたオープン・クラスへの変更の説明が次にリスト されています。 4.1.1 オープン・クラス・アプリケーションのすべては /DNO_STRICT コンパイラー・ オプションを必要とするか、MS ヘッダーの前にオープン・クラス・ヘッダーを 定義する必要があります。オープン・クラス・ヘッダーが先頭でない場合は、この変更により ユーザーのビルド・プロシージャーへの変更が必要になるかもしれません。 コンパイル時のエラー・メッセージは次の通りです。 エラー: IBM オープン・クラス・ライブラリーの使用には、/DNO_STRICT コンパイラー・ オプションが必要です。(Error: Use of IBM Open Class Library requires /DNO_STRICT compiler option.) このエラー・メッセージが出た場合は、make または build ファイルに "/DNO_STRICT" コンパイラー・オプションを追加して、再コンパイルしてください。 4.1.2 MS COM インターフェース・クラス IFont は、 __IWinFont にリネームされました。 MS バージョンの IFont を継承する必要がある場合は、__IWinFon を使うことを お勧めします。 4.1.3 IFileDialog クラスには新しいスタイル IFileDialog::explorer を含みます。 この新しいクラスを使用して「Windows Explorer」ファイル・ダイアログを作成 できます。このスタイルはデフォルトではオンではありませんが、オンに するには、「main()」関数の初めに次を追加します。 IFileDialog::setDefaultStyle( IFileDialog::classDefaultStyle | IFileDialog::explorer ); 「Windows Explorer」ファイル・ダイアログを使用すると副作用があります。 IFileDialog::Settings::setPosition() 関数が Windows では NO-OP になることです。 これは、「Windows Explorer」ファイル・ダイアログがいつも所有者フレームの クライアント域の 0.0 (最上部左方) に位置するからです。 4.1.4 Windows 2000 上で実行し、4.1.3 で説明した IFileDialog::explorer スタイル を指定している場合、IFileDialog は Windows 2000 に準拠したダイアログ・ ボックスを表示します。 4.1.5 IFileDialog::Settings クラスにはフィルター・リストにファイル・タイプを 追加する新規の関数を含みます。この関数の識別記号は、VAC++ V4 にある IBM オープン・クラスと共に含まれる関数のものと同じです。基本的に 新規関数は次の通りです。 IFileDialog::Settings& IFileDialog::Settings::addFileType( const char* fileType, const char* filter=0) 次がこの関数の使用例です。 IFileDialog::Settings settings; settings.setOKButtonText( "Open" ); settings.setTitle( "Select file to view" ); settings.addFileType( "Object Files (*.obj)", "*.obj" ); settings.addFileType( "Source Files (*.c, *.cpp)", "*.c;*.cpp" ); settings.addFileType( "Header Files (*.h, *.hpp, *.inl)", "*.h;*.hpp;*.inl" ); settings.addFileType( "All Files (*.*)", "*.*" ); IFileDialog sampleDialog( IWindow::desktopWindow(), 0, IFileDIalog::defaultStyle, settings ); .... 'fileType' および 'filter' の両方がフィルターが追加されるために指定されなければ なりません (non NULL)。上記のようにセミコロン(';') で区切れば、複数フィル ターの拡張子を指定することができます。 4.1.6 PM 互換コンテナーの変更 post fixpack 62 (レベル 2 の変更のある FP6) の IContainerControl::objectUnderPoint() 関数が変更されました。詳細ビューの pmCompatible コンテナーに対してこの関数を 呼び出すときは考慮する必要があります。このタイプのコンテナーの場合、 ポイントはコンテナーに対してではなく、詳細ビュー・ウィンドウに対して 相対でなければなりません。マウス・ハンドラーまたはメニュー・ハンドラー をコンテナーに付加し、IMouseEvent::mousePosition() または IMenuEvent::mousePosition() を呼び出すと、正しいポイントが戻されることになります。 しかし、ポイントをデスクトップの座標系から IContainerControl::objectUnderPoint() によって必要とされる座標系にマップ すると以下の作業が必要になります。 IContainerControl* ctrlWin; // The container control IPoint pos; // The current mouse position in // desktop coordinates. IPoint pt = IWindow::mapPoint( pos, IWindow::desktopWindow()->handle(), ctrlWin->handle() ); // // Adjust the point if in details view and it's // PM compatible. This is to account of the // change in the IContainerControl::objectUnderPoint // function. // if ( ctrlWin->isPMCompatible() && ctrlWin->isDetailsView() ) { // If origin lower left we need to add the height of the // cnr title otherwise we subtract. IPair::Coord coef=-1; if ( ICoordinateSystem::isConversionNeeded() ) coef=1; if ( ctrlWin->areDetailsViewTitlesVisible() ) pt.setY( pt.y() + coef * ctrlWin->detailsTitleRectangle().height() ); if ( ctrlWin->isTitleVisible() ) pt.setY( pt.y() + coef * ctrlWin->titleRectangle().height() ); } 4.2 Make ファイルの変更 このリリースで提供する Microsoft Platform SDK のバージョンでは、 次のファイルは、 include\BkOffice.Mak include\Copyfile.Mak include\INetSDK.Mak include\Win32.Mak 次の構造を含みます。 !ELSEIF !ELSE IFDEF これらは提供される nmake によって認識されません。 これらのいずれかを含む make ファイルをお持ちの場合、それらを以下の 2 行構造に修正する必要があります。 !ELSE !IF !ELSE !IFDEF そして対応する !ENDIF を追加します。 4.3 Win32 SDK オンライン・ヘルプ オンライン情報のユーザーズ・ガイドの Win32 SDK オンライン・ヘルプが作動しません。 「Microsoft Platform SDK」の「Platform SDK Documentation」を参照してください。 4.4 既知の問題 4.4.1 Windows 95 では、ビジュアル・ビルダーを終了すると、メモリー障害が発生する 可能性があります。 5.0 ドキュメンテーション このセクションでは、ドキュメンテーションの使用に関する重要な情報を紹介します。 注: オンライン・バージョンは PostScript 資料よりも新しいドキュメンテーションです。 オンライン資料を表示させるには、「オンライン情報ノートブック (Online Information Notebook)」アイコンをオープンし、ラジオ・ボタン の資料を選択後、「表示 (View)」押しボタンをクリックします。 5.1 印刷 5.1.1 印刷に関する既知の問題 o 大容量のファイルをロードするには大量のメモリーを必要とするため、 印刷で問題となります。プリンターのメモリーが十分でなければ、大容量 のファイルを印刷することはできません。 5.1.2 印刷方法 ワークステーションに接続された PostScript プリンターで PostScript ファイル を印刷するには、プリンター宛先にファイルをコピーします。必要なフォントが ファイルに組み込まれます。また、ホストに接続された PostScript プリンターで これらのファイルを印刷できます。バイナリー・フォーマットでそれらのファイルが アップロードされていることを確認してください。