Tips 4 Define に注意
WTL
のテンプレートクラスは非常にいい形で、ウィンドウやコントロールをラップしていると思うのですが、これらラッパークラスのメソッドの引数や、IE、コモンコントロールのバージョンに依存する機能を使いたいときに、エラーが出るときがあります。
たとえば、CEditT<TBase> に於いて、GetImeStatus
という関数を使いたいと思ったとする。ソースを見ると
#if (WINVER >= 0x0500)
UINT GetImeStatus(UINT uStatus) const
{
ATLASSERT(::IsWindow(m_hWnd));
return (UINT)::SendMessage(m_hWnd, EM_GETIMESTATUS, uStatus, 0L);
}
UINT SetImeStatus(UINT uStatus, UINT uData)
{
ATLASSERT(::IsWindow(m_hWnd));
return (UINT)::SendMessage(m_hWnd, EM_SETIMESTATUS, uStatus, uData);
}
#endif //(WINVER >= 0x0500)
などと定義されてい ます。
ここで、WINVER >= 0x0500 となっているということは、Windows 2000 以降でないと使えない機能
なのです。つまり、この機能を使いたい場合は、プリコンパイルヘッダに定義されているバージョン定数を変更しなくてはコンパイルできないので注意が必要です。
|