本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] Visual C++ 1.5 の README.WRI(5/8)

文書番号: 401972

最終更新日: 1999/08/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP401972

概要

この資料は、Visual C++ 1.5 に添付されている README.WRI の以下の章を抜粋した
ものです。
  第 7 章 Microsoft Foundation Class ライブラリ

第 7 章 Microsoft Foundation Class ライブラリ

CDocTemplate::SetServerInfo

Class Library Reference では、pOleViewClass パラメータは埋め込み先編集の
ために使用されると説明していますが、正しくありません。このパラメータには、
呼び出されたときに NULL を設定しなければならず、デフォルト値は NULL です。

Watcom ODBC ドライバ

英語版の Watcom の ODBC driver for Watcom SQL Version 3.1 は、SQL_SO_KEYSET
をサポートしています。SQL_SO_KEYSET は、Microsoft Foundation Classes データ
ベース クラスがダイナセット サポートするために必要です。しかし、ドライバは
SQL_SO_KEYSET をサポートしていないという正しくない通知を行います。このドラ
イバのユーザーは、Watcom に連絡してドライバをアップグレードする必要があり
ます。

ツールバーを使うアプリケーションのデバッグ

ビデオ ドライバによっては、開発中のデバッグ用に挿入された INT 3 命令を製品
版でも削除せずにそのまま残しているものがあります。デバッガが実行中でないと
きはこれらの INT 3 命令は無視されますが、(Visual Workbench の統合デバッガお
よび CodeView for Windows などの) デバッガの実行中に INT 3 命令がブレーク
ポイントとして割り込みを行うと、プログラムの実行が中断されます。同様に、
INT 3 命令は MS-Test アプリケーションの実行に影響することがありますが、
これはこのアプリケーションが INT 3 命令を 一般保護違反と解釈するためです。
Microsoft Foundation Class ライブラリが提供するツールバーの描画コードは、
一部のビデオ ドライバに対して INT 3 命令を実行される効果があります。
Microsoft Foundation Class ライブラリを使ったプログラムのデバッグ中に
この問題が生じた場合は、割り込みを無視してプログラムの実行を継続するか、
またはデバッガ内で INT 3 を NOP 命令に書き換えて実行を継続してください。

MFC 1.0 から MFC 2.0/2.5 への変換

MFC 1.0 のアプリケーションを MFC 2.0/2.5 用に再コンパイルする場合は、
メイクファイルとソース ファイルを修正する必要があるかもしれません。こ
れらの変更箇所については、Microsoft Visual C++ プログラム グループ内の
MFC Tech Notes のアイコンをダブルクリックして MFCNOTES.HLP を開き、テクニ
カルノートの 19 を参照してください。

DLL の WEP を Foundation Class Library Version 2.5 に移植する

Microsoft Foundation Class ライブラリのバージョン 2.5 では WinApp から
派生させたクラスの ExitInstance メンバ関数は Microsoft Foundation Class
ライブラリが提供する _WEP 関数によって呼び出されます (Windows が DLL の
WEP を呼び出すときは逆に C++ ランタイム ライブラリによって呼び出されます)。
Microsoft Foundation Class ライブラリのバージョン 1.0 を使って DLL をイン
プリメントしたときは、明示的に _WEP 関数をインプリメントする必要がありま
す。DLL をバージョン 1.0 からバージョン 2.5 に移植するには、コードを古
い _WEP 関数から CWinApp::ExitInstance 関数のオーバーライドに移動して
古い _WEP 関数を取り除いてください。

VBX カスタム コントロールの利用

Visual Basic version 1.0 の VBX カスタム コントロールの多くは App Studio
および MFC 2.5 でも動作することをテストにより確認していますが、現在使用
中の VBX コントロールがこのグループに入るという保証はありませんし、とく
にあまり普及していない VBX コントロールの場合は問題の生じる可能性があり
ます。
  重要: 次に示す兆候のどれかがあらわれたときは、VBX コントロールの開発元
        に、App Studio と MFC 2.5 用にテストの完了した改定版のコントロール
        が利用できるかどうかを問い合わせてください。Microsoft も現在 VBX
        コントロールの開発元と協力して、VBX コントロールが App Studio および
        MFC 2.5 上で動作するように作業しています。
App Studio および MFC 2.5 で動作しないコントロールには次に示すような兆候が
あります。
  • 再描画で問題が生じる (描画しない、または描画が多すぎる)
  • プロパティの設定がコントロールに反映されない
  • コントロールがサイズ変更できない
  • コントロールがタブ オーダーやグループ化に正しく応答しない
  • コントロールがテスト モードで機能しない
  • コントロールがフォームからロードされることを前提に作成されているために、 プログラムから作成されたときに正しく初期化されない。
  • 修復不能のアプリケーション エラーが発生する
  • 一般的な保護違反が生じる
  • デバッグ カーネル Fatal Exit が発生する

VBX コントロールを含むダイアログ ボックスとフォームのビューのデバッグ

Visual Workbench デバッガの利用中に直接または間接で VBX コントロールを生成
する関数にブレークポイントを設定すると、"The program is stopped in the
debugger"(プログラムはデバッガ内で停止しました) というメッセージが表示さ れることがあります。この場合は、デバッガのフォーカスがソース コード上の
ブレークポイントに移動する前にメッセージ ボックスで OK を選択してくださ
い。その箇所からデバッグを継続できます。
このメッセージ ボックスは、Visual Workbench デバッガのソフト モードにおいて
のみ表示されます。Visual Workbench デバッガのハード モードまたは CodeView
for Windows においては表示されません。

スモールおよびコンパクト モデルの MFC アプリケーションではデバッグ バージョンがサポートされません

デバッグ用の MFC アプリケーションは、スモールまたはコンパクト モデルではビル ドできません。これは、簡単な MFC アプリケーションにおいてさえデバッグ用に
追加されるコードがスモール モデルおよびコンパクト モデルの限界である 64KB
を超えるためです。リリース用のスモールまたはコンパクト モデルのアプリケー
ションについてはスモールまたはコンパクト モデル ライブラリを使えばビルドで
きます。スモールまたはコンパクト モデルの MFC アプリケーションを作成したい
ときは、デバッグ用のビルドではそれぞれミディアムまたはラージ モデルを使い、
最終的なリリースのときにスモールまたはコンパクト モデルを使ってビルドして
ください。

CHKBOOK サンプル プログラムに対する ClassWizard の利用

CCheckView クラスには OnEditCommitCheck と OnAmountNumChange の 2 つのメッ
セージ ハンドラがあります。ClassWizard でこのクラスを選択して Member
Functions リスト ボックスで OnEditCommitCheck を強調表示すると、Object IDs
リスト ボックスにも Messages リスト ボックスにも何も強調表示されません。こ
れは CCheckView が CFormView から派生され、ClassWizard が CFormView からの
派生クラスをビュー クラスというよりもダイアログ クラスとして取り扱っている
ためであり、このため ClassWizard は関連するダイアログ テンプレートのコント
ロールとそれらのコントロールが生成する通知メッセージだけしかリスト アップ
しません (例えば ClassWizard は OnAmountNumChange によってハンドルされる
通知メッセージとそのメッセージを生成するコントロールの ID を強調表示しま
す)。どのメッセージが OnEditCommitCheck によって強調表示されるかを確認す
るには、App Studio を使って CHKBOOK.RC をオープンして IDR_CHECKFRAME メ
ニュー リソースを編集してください。これによって ClassWizard は CCheckView
を調べるようになります。
ClassWizard と CFormView 派生クラスの関係については Books Online の
『 Class Library Reference 』の CFormView の項を参照してください。

Microsoft Foundation Class Version 2.5 DLL シンボル ファイル

これらのファイルはセットアップ時にインストールされませんが、CD-ROM に置か
れています。通常、これらのファイルは WDEB386 でデバッグするために使用しま
す。CodeView や統合的なデバッガでデバッグする場合は、これらのシンボル ファ
イルは必要ありません。シンボル ファイルをインストールするには、ファイルを
\WINDOWS\SYSTEM ディレクトリに直接コピーしてください。
  DLL          シンボル ファイル     CD-ROM のディレクトリ
  MFC250.DLL    MFC250.SYM           \msvc15\redist
  MFCD250.DLL   MFCD250.SYM          \msvc15\redist
  MFCO250.DLL   MFCO250.SYM          \msvc15\redist
  MFCOLEUI.DLL  MFCOLEUI.SYM         \msvc15\redist
  MFC250D.DLL   MFC250D.SYM          \msvc15\debug
  MFCD250D.DLL  MFCD250D.SYM         \msvc15\debug
  MFCO250D.DLL  MFCO250D.SYM         \msvc15\debug

MFC OLE サーバーの埋め込み先編集での ESC キーの使用

OLE 2.0 の仕様では、サーバーもコンテナも埋め込み先編集を終了させるために
ESC キーを使用しなければならないと規定しています。AppWizard で作成した
OLE ビジュアル編集コンテナ アプリケーションは、この操作を行うためのアク
セラレータ キーとハンドラを用意します。しかし、AppWizard で作成した OLE
ビジュアル編集サーバー アプリケーションは、この機能を自動的に用意しませ
ん。コンテナまたはサーバーがオブジェクトを非アクティブにするために ESC
キーを使わない場合、ユーザーがサーバーを非アクティブにするには、インプ
レイス サーバー ウィンドウ以外の場所をマウスでクリックする必要がありま
す。AppWizard はサーバー アプリケーションに ESC キー ハンドラを自動的に
生成しないので、次のいずれかの方法で実現してください。
  1. インプレイス サーバーのアクセラレータ テーブルに VK_ESCAPE に対す るアクセラレータを追加します。このアクセラレータ テーブルの ID は、 サーバーのインプレイス メニュー リソースと同じ ID でなければなりませ ん。AppWizard が生成するデフォルトの ID は、IDR_<<PROJNAME>>TYPE_SRVR_IP です。
  2. ClassWizard を使って VK_ESCAPE アクセラレータに対するハンドラを追加 します。通常のアプリケーションでは、COleServerDoc 派生クラスのハンドラを 実現しようとします。ハンドラは、ドキュメントが埋め込み先でアクティブな場 合のみ非アクティブにする必要があります。
            void CMyServerDoc::OnCancelInplace()
            {
                if (IsInPlaceActive())
                    OnDeactivateUI();
             }
    

英語版 WATCOM SQL ドライバでの AppWizard と ClassWizard の利用

AppWizard または ClassWizard では、CRecordset 派生クラスと WATCOM SQL
データ ソースの表の対応付けができないことがあります。AppWizard では、
[Database Options] ダイアログ ボックスで [WATCOM SQL data source] を選択
した時に起こることがあります。ClassWizard では、新しい CRecordset 派生
クラスを追加し、[SQL Data Sources] ダイアログ ボックスで [WATCOM SQL
data source] を選択した時に起こることがあります。

CDatabase::Open

CDatabase::Open は、dbcore.cpp の 343 行目で ::SQLSetConnectOption が
SQL_ODBC_CURSORS 呼び出しを使って ODBC のカーソル ライブラリをロードし
ます。カーソル ライブラリをロードすると、基になるドライバがスクロールを
サポートしなくても、スナップショットに対して SQL_SCROLL_STATIC スクロール
オプションを指定できます。
ダイナセットのようなレコードセットを開くには、ドライバが SQL_SCROLL_KEYSET
をサポートしている必要があり、カーソル ライブラリを必ずロードするのではな
く、任意にロードするように変更しなければなりません。設定を変更するには、
::SQLSetConnectOption 呼び出しの引数を SQL_CUR_USE_ODBC から
SQL_CUR_USE_IF_NEEDED に変更します。引数を変更すると、基になるドライバが
SQLExtendedFetch をサポートしている場合はカーソル ライブラリをロードしま
せん。スナップショットは、カーソル ライブラリがロードされているか、基に
なるドライバが SQL_SCROLL_STATIC をサポートしている必要があります。

CString クラスでの文字列の扱いについて

CString クラスでは、1 バイトを 1 文字としてカウントしています。

印刷プレビューについて

一部のプリンタ ドライバには、TrueType フォントなどの一部のフォントのキャラ
クタの幅を正確に返さないものがあります。これを補うため、Microsoft Foudation
Class ライブラリでは実際のキャラクタの幅ではなく、キャラクタの幅の平均値を
使って計算しています。このため、印刷プレビュー画面では、実際に印刷される
ときよりも行が長く表示され、画面の右端が欠けてしまう場合があります。
ドキュメントを実際に印刷する場合は、正しく印刷されます。

GRID.VBX について

GRID.VBX は VBCHART サンプルで使用する VBX コントロールです。通常、VBX
ファイルは Windows のシステム ディレクトリにインストールされますが、
Visual C++ では、新しいバージョンの GRID.VBX の上書きを避けるため、
\MFC\SAMPLES\VBCHART ディレクトリにインストールしています。VBCHART サン
プルはデフォルトのディレクトリ構成で実行可能ですが、新たに GRID.VBX を使
ったアプリケーションを開発し、それを実行する場合は、このファイルを Windows
のシステム ディレクトリにコピーして下さい。

GRID コントロールでのスクロールバーの動作について

Visual C++で MFC の VBCHART サンプル の GRID コントロールをアプリケーションで 使用し実行した際に, GRID コントロール内の任意の場所をクリックし, スクロール
バーの上下矢印をクリックすると一部分しかスクロールしません. この GRID.VBX
の問題を回避するには GRID コントロールをサブクラス化しスクロールイベントに
対する処理をマニュアルで行う必要があります。Microsoft Developer Network
CD と US のダウンロードサービスにこの手続きを行うサンプルがあります。
  1. MSDN Vol.9 "Sample City" - "C++ Sample" - "GRIDFIX"
  2. Download service
         - CompuServe
              GO MSL
              Search for GRIDFIX.EXE
              Display results and download
         - Microsoft Download Service (MSDL)
              Dial (206) 936-6735 to connect to MSDL
              Download GRIDFIX.EXE
         - Internet (anonymous FTP)
              ftp ftp.microsoft.com
              Change to the \softlib\mslfiles directory
              Get GRIDFIX.EXE
    

リンカオプション /FARCALL の使用について

MFC を静的にリンクしたプログラムのデバッグ版のビルドに、リンカオプション
/FARCALL を指定、または Link Options ダイアログボックスの [Memory Image
Category] の [Translate Far Calls] をオンにした場合、リンク実行時にビル
ドエラー (ERROR L4088) が発生する場合があります。そのときは リンカオプ
ションから /FARCALL をはずすか、[Translate Far Calls] をオフにしてください。

MFC ライブラリメモリモデル について

MFC 2.5 のライブラリは、インストールの際に選択することができます。

Keywords: KBINFO VC15 KB401972
Technology: kbAudDeveloper kbvc150 kbVCsearch

inserted by FC2 system