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;
}
#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;
}
相关文章推荐
- android下载网络图片并缓存
- 关于链接的一些理解
- commit your changes or stash them
- 《机电传动控制》学习笔记10-1
- 装饰器--函数
- 【Linux学习笔记一】Linux基本配置
- 地图导航
- exp/imp 参数设置与使用方法 (转载)
- php生成txt文件实例代码介绍
- myeclipse中 相同变量 高亮显示
- apk反编译
- 5.常见文件系统,超级块,引导扇区
- nova reset-state deleting openstack 删除 虚拟机
- POST请求
- Drupal8 社区文档之Drupal安全吗
- 如何设置outlook实现自动秘密抄送邮件的功能?
- thinkphp 访问静态页面
- http://guhanjie.iteye.com/blog/1683637
- 第一个春天
- 字典的pop方法