2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

最近のトラックバック

無料ブログはココログ

« 2016年8月21日 | トップページ | 2016年8月28日 »

2016年8月27日 (土)

Visual Studio 2015 でビルドしたOuDiaは正しく動作しない

Visual Studio 2015 を使用してOuDiaをビルドしてみましたが、これが正しく動作しません。

正常にビルドされたOuDiaでは、ファイルを開いた直後は、作業領域にはウインドウが1つも無い状態になります。
ところが、Visual Studio 2015 でビルドされた OuDia では、ファイルを開いた直後、作業領域に白一色のウインドウが表示されます。また、いくつかのビューを開いたり閉じたりしているうちに、アプリケーションエラーになることもあります。

少し調べてみたところ、以下のメンバ関数が動作していないことが分かりました。

CDocument* OuMfc::HideMdi::CHidemdiRootDoctmpl::
    OpenDocumentFile(
        LPCTSTR lpszPathName
        , BOOL bMakeVisible )

この関数は、CMultiDocTemplate::OpenDocumentFile() をオーバーライドすることによって動作します。しかし、Visual Studio 2015 に添付されているMFCでは、この関数の引数が以下のように変わっているようです。

    ◎VisualStudio 2008
    CDocument* CMultiDocTemplate::OpenDocumentFile(
        LPCTSTR lpszPathName,BOOL bMakeVisible)

    ◎VisualStudio 2015
    CDocument* CMultiDocTemplate::OpenDocumentFile(
        LPCTSTR lpszPathName, BOOL bAddToMRU, BOOL bMakeVisible)

CMultiDocTemplate::OpenDocumentFile() は、MSDNで文書化されていないメンバー関数です。非公開の関数は、ライブラリのバージョンアップ時に、仕様が突然変更されるケースがあります。そういうものを使用していると、こういうことも起こってしまいます。

« 2016年8月21日 | トップページ | 2016年8月28日 »