ホーム | Software Lab | Profile | Favorites | Diary | Links | About This Site | Feedback

 

 

今回は、先日リリースされた WTL 7.5 Build 5002(まだ正式版ではありません)について、WTL 7.1 との違いを調査した結果をまとめてみました。
これは、あくまでも Roy. 個人の調査結果ですので、参考程度にとどめておいてください。おかしな点や疑問点がありましたら、メールまたは掲示板のほうへお願いいたします。

  •  WTL 7.5 Build 5002

    ダウンロードはこちらから。

    ダウンロードして Readme.htm を見ましたが、変更点が ToDo に・・・。ということで、Yahoo Group を見てみると、以下の点が変更になったようです(WTL7.1 と比較して)

    • VS2005 への対応(Beta1 で確認済み)

    • Windows CE 用の AppWizard for VS2005

    • Dynamic UpdateUI

    • 新しい User and GDI wrappers

    • zooming for scroll window

    • print preview

    • list view sorting support

    • new reflection macros

    • Wizard97 support classes

    • その他、バグ修正など

    ということになっています。。

  •  変更点は?

まず、_WTL_VER が 0x0710 から 0x0750 に変更になりました。全体的な修正としては、コメントの追加、書式の統一、利用制限(const キーワードの最適化っていう表現でいいかな?)、マルチバイト(Unicode)対応などがあげられると思います。

また、WTL の偉大な先駆者であった、Viksoe 氏をメンバーに開発メンバーに迎えたため、彼のサイト で公開されていた atlgdix.h にあったいくつかのクラスが吸収されています。その為、彼のヘッダを利用していた場合は、どちらか(7.5 に含まれているほうが新しいようです)を削除する必要があるでしょう。

一方 Visual Studio 6.0 を利用されている方が WTL 7.5 を利用するためにはひと工夫必要です。それは、VS 6.0 にインストールするためのスクリプトが今回から提供されなくなってしまったからです。その為、WTL 7.1 をダウンロードしてそこから VS6.0 用の Setup スクリプトをコピーしてきてください。

  •  7.1 からの変更点

    (Readme.htm に記述がないので、以下はあくまでも独自調査の結果です)

    WTL 7.5 と 7.1 の変更点(今回はヘッダ別)

     

    atlapp.h

    • #pragma warning(disable: 4127)が追加

    • ATL Ver 8.0 向けに
      SetWindowLongPtrW
      GetWindowLongPtrW
      LongToPtr
      を追加

    • ATL Ver 3.0 向けに ATLVERIFY マクロの追加(中身は ATLASSERT)

    • ComServer(ActiveX.exe) 向けの MonitorShutdown() の空ループを while(1) から for(;;) へ変更

     

    atlcrack.h

    • 変更なし

     

    atlctrls.h

    CStatic

    • SetIcon、GetIcon の追加(Windows CE)

     

    CButton

    • GetButtonStyle() の戻り値のマスクを修正(0xff → 0xFFFF)

     

    CTreeViewCtrl

    • GetItem(LPTVITEMEX) const と SetItem(LPTVITEM) に必要な _WIN32_IE の Ver を 0x0500 から 0x0400 へ(Windows CE)

     

    CRichEditCtrl

    • RICHEDIT_VER 0x0200 用に
      GetSelText(LPTSTR)
      GetSelTextBSTR
      GetSelText(CString&)
      のバッファ用のメモリの取得サイズを修正

     

    CRebarCtrl

    • MaximizeBand メソッドに fIdeal 引き数を追加

    • LockBands メソッドのバグ修正

     

    atlctrlw.h

    CCommandBarCtrl

    • WM_SETTINGCHANGE のハンドラ OnSettingChange を修正

    • 代替メッセージマップ(親)に WM_SETTINGCHANGE を追加し、そのハンドラ OnParentSettingChange を追加
      (WM_SETTINGCHANGE が来ても対応できない場合があったため?)

    • OnHookKeyDown メソッドを修正

    • DrawBitmapDisabled メソッドを修正

    • CreateHookProc フックプロシージャで CallNextHookEx を呼ぶ条件などの変更

    • CreateInternalImageList メソッドでアルファイメージが利用できない時は24ビットカラーを適用するように修正

     

    CMDICommandBarCtrl

    • DrawThemeParentBackground メソッドの追加

    • 代替メッセージマップ(親)に WM_ACTIVATE を追加し、そのハンドラ OnParentActivate を追加

    • OnAllHookMessages の追加

    • OnNcPaint をテーマに対応

    • _DrawMDIButton メソッドをテーマに対応、Disabled 時の描画に対応

     

    atlctrlx.h

    CSortListViewImpl の追加  New!

    CSortListViewCtrlImpl の追加  New!

    CSortListViewCtrl の追加  New!

     

    CCheckListViewCtrlImpl

    • OnLButtonDown でテンプレートクラスT の CheckSelectedItems を呼ぶように変更

     

    CHyperLinkImpl

    •  _xttoi 関数の追加

    • _ParseColorString の修正(初期化、_ttoi ではなく T::_xttoi を使う)

     

    CMultiPaneStatusBarCtrlImpl

    • Pane の位置のバッファをアロケートする際に ATLTRY を使わないように変更

     

    CPaneContainerImpl

    • SetPaneContainerExtendedStyle の修正

     

    atlddx.h

    • 変更なし

     

    atldlgs.h

    • Wizard97(VS6.0)形式のシートやページに対応したクラスを追加
      CWizard97SheetWindow    New!
      CWizard97SheetImpl    New!
      CWizard97Sheet    New!
      CWizard97PageWindow    New!
      CWizard97PageImpl    New!
      CWizard97ExteriorPageImpl    New!
      CWizard97InteriorPageImpl    New!

     

    CFolderDialogImpl

    • BrowseCallbackProc プロシージャで BFFM_IUNKNOWN(IUnknown) をサポート

     

    CPropertySheetImpl

    • HPROPSHHTPAGE を _HPROPSHHTPAGE_TYPE に typedef していたのを中止
      (いくつかのメソッドがこの影響で修正:但し上記の名前のみ)

    • PropSheetCallback プロシージャでテンプレートクラス T の OnSheetInitialized を呼ぶように修正

     

    CPropertyPageImpl

    • PropPageCallback プロシージャを修正

    • IE5 以上で AddRef(PSPCB_ADDREF)、Release(PSPCB_RELEASE) に対応
      また、これらのメソッドと Create(PSPCB_CREATE)をオーバーライドできるようにした

     

    CAxPropertyPageImpl

    • いくつかの関数の呼び出しのスコープを、グローバルではなく現在の名前空間から呼ぶように修正

     

    atlframe.h

    CDynamicUpdateUI を追加    New!

     

    CFrameWindowImplBase

    • CreateSimpleToolBarCtrl の修正(アルファチャンネル対応ビットマップの読み込みの修正)

    • UpdateBarsPosition の修正(リサイズされた時に再描画されない領域があった)

    • DisplayChevronMenu で CMenuHandle を使うように変更

     

    CMDIChildWindowImpl

    • OnDestroy で保持しているメニューを破棄するように変更

     

    CUpdateUIBase

    • _AtlUpdateUIMap、_AtlUpdateUIData に == operator を追加

    • UIUpdateMenuBarElement メソッドで比較条件を明示するように修正

    • UIUpdateMenuBarElement メソッドでデフォルトの動作をエミュレート(WindowsCE)

     

    CFrameWindowImplBase

    • CreateSimpleToolBarCtrl の修正(アルファチャンネル対応ビットマップの読み込みの修正)

     

    atlgdi.h

    AtlGetBitmapResourceInfo、AtlGetBitmapResourceBitsPerPixel 関数の追加(グローバル)
    AtlIsAlphaBitmapResource 関数内を上記グローバル関数に置き換え

     

    CLogFont クラスの追加    New!

     

    CFont

    • CreatePointFont メソッドにボールド、イタリック体を指定する引数を追加(オプション)

    • CreatePointFontIndirect メソッドのフォントの高さの計算方法を修正

     

    CDC

    • GetClipRgn メソッドの追加

     

    atlmisc.h
    CString

    • 戻り値や引数の利用制限(const)の変更

    • 2バイト文字(TCHAR)対応

    • UNICODE のとき、Format で %f を指定した時に確保されるメモリが不足(半分)していた問題の修正

     

    CFindFile

    • GetFileTitle メソッドで _SECURE_ATL 指定時に _tsplitpath_s(セキュア版)を使用できるように修正

     

    atlprint.h
    CZoomPrintPreviewWindowImpl の追加    New!
    CZoomPrintPreviewWindow の追加    New!
     

    CPrinter

    • CreatePrinterDC、CreatePrinterIC を定数メンバ関数(後ろに const)に変更

    • DoPaint(CDCHandle) メソッドを追加(ダミー?)

     

    atlres.h

    • 変更なし

     

    atlresce.h

    • 変更なし

     

    atlscrl.h
    CZoomScrollImpl の追加    New!

    CZoomScrollWindowImpl の追加    New!
     

    CScrollImpl

    • BEGIN_MSG_MAP の引数を修正

    • ブール値を BOOL に統一

    • SetScrollOffset の修正

    • SetScrollSize メソッドに現在のオフセットをリセットするかどうかの引数を追加

    • OnSize の修正

    • 上記メソッド(SetScrollOffset、SetScrollSize、OnSize)において、SCROLLINFO 構造体のセット方法を変更(より厳密に?)また、小ウィンドウがある場合、すべてを移動するように修正

    • OnMouseWheel での移動条件を変更(ついでに for の初期宣言の型を適切に)

    • DoScroll での初期化方法を最適化

    • CalcLineOrPage メソッドを static に変更

    • AdjustScrollOffset メソッドの追加

     

    CMapScrollImpl

    • BEGIN_MSG_MAP の引数を修正

    • SetScrollSize メソッドに現在のオフセットをリセットするかどうかの引数を追加

     

    CMapScrollWindowImpl

    • BEGIN_MSG_MAP の引数を修正

     

    atlsplit.h

    Windows CE をサポート(一部機能は除外)
     

    atltheme.h
    CTheme

    • GetThemeTextMetrics の第4引数を PTEXTMETRIC から PTEXTMETRICW へ変更

    • GetThemeFont の第5引数を LOGFONT* から LOGFONTW* に変更

    • GetThemeSysFont の第2引数を LOGFONT* から LOGFONTW* に変更

     

    atlUser.h

    CAccelerator の追加    New!

    CIcon の追加    New!

    CCursor の追加    New!

    CResource の追加    New!

    CMenu

    • TrackPopupMenu を修正(Windows2000 以降:表示 X 座標の補正)

    • SubMenu 追加用の AppendMenu、InsertMenu、ModifyMenu メソッドを追加

     

    atlwinx.h

    WtlReflectNotificationsFiltered 関数の追加    New!
    REFLECT_NOTIFICATION 系のマクロの追加
        New!

    頑張ってこれらを使ったサンプルを公開できればいいなぁと思います

    WTL 講座のトップへ

最終更新日 : 2005/01/06