您的位置:首页 > 其它

Windows Dev Intro - How to avoid TVN_SELCHANGED not captured

2016-04-28 14:14 387 查看
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.

LRESULT DialogWindow::OnTreeNotify(LPNMHDR lp)

{

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;

}

return TRUE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: