1. include commctl.h
#define TVN_SELCHANGINGA (TVN_FIRST-1)
#define TVN_SELCHANGINGW (TVN_FIRST-50)
#define TVN_SELCHANGEDA (TVN_FIRST-2)
#define TVN_SELCHANGEDW (TVN_FIRST-51)
ifdef UNICODE
#define TVN_SELCHANGING TVN_SELCHANGINGW
#define TVN_SELCHANGED TVN_SELCHANGEDW
#define TVN_GETDISPINFO TVN_GETDISPINFOW
#define TVN_SETDISPINFO TVN_SETDISPINFOW
#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
#define TVN_BEGINDRAG TVN_BEGINDRAGW
#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
#define TVN_DELETEITEM TVN_DELETEITEMW
#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
#else
#define TVN_SELCHANGING TVN_SELCHANGINGA
#define TVN_SELCHANGED TVN_SELCHANGEDA
#define TVN_GETDISPINFO TVN_GETDISPINFOA
#define TVN_SETDISPINFO TVN_SETDISPINFOA
#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
#define TVN_BEGINDRAG TVN_BEGINDRAGA
#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
#define TVN_DELETEITEM TVN_DELETEITEMA
#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
#endif
2. in visual studio window project
as far as multibyte version and unicode version, TVN_SELCHANGED
is mapped to different value, multibyte mapped to TVN_SELCHANGEDA (TVN_FIRST-2),
but unicode version mapped to TVN_SELCHANGEDW (TVN_FIRST-51)
Therefore care need be taked here.
3. Safe Solutions.
{
HWND hTree = lp->hwndFrom;
TRACE("notify code = 0x%X (%d)\n", lp->code, lp->code);
switch (lp->code) {
#if 0
case NM_CLICK:
{
return OnTreeClicked(lp);
}
case NM_DBLCLK:
{
return OnTreeDoubleClicked(lp);
}
#endif
case TVN_SELCHANGINGA:
case TVN_SELCHANGINGW:
{
return FALSE;
}
case TVN_SELCHANGEDA:
case TVN_SELCHANGEDW:
{
return OnTreeSelChanged(lp);
}
default:
break;
}
}