下沙论坛

标题: 人都死光了??? WTL问题!!! [打印本页]

作者: 游侠无极限    时间: 2005-5-4 12:19
标题: 人都死光了??? WTL问题!!!
一个准备用来SubClass的WTL 控件类
5 h$ l! g. Y- O7 Z; \9 [: {9 H7 T+ e#include < ATLTYPES.H >
, j5 @" l- o1 l5 [0 Jclass CWTLFileListCtrl : public CWindowImpl < CWTLFileListCtrl ,CListViewCtrl >) t# m( {$ v5 H
{
( a; p& |1 [0 }3 X2 K  a7 X0 ZBEGIN_MSG_MAP_EX(CWTLFileListCtrl)6 ^4 z+ j1 n% a/ A+ E8 F+ i
  MSG_WM_LBUTTONUP(OnLButtonUp), N; j0 l1 @+ J; z
END_MSG_MAP()
, E" F# ~+ X# l7 H/ gpublic:. Q/ E) i9 f$ S" D/ m" S9 g8 Y
CWTLFileListCtrl(void);
) o8 A, t/ b, U~CWTLFileListCtrl(void);& K- U) s7 r( x  ~
void OnLButtonUp(UINT flag, CPoint pt);2 |  H; e+ u4 y) U+ |9 A2 y
};/ n6 Q# V6 J: k9 c* i7 m, F, i
为什么 无法响应 WM_LBUTTONUP 消息,反而响应的是  WM_LBUTTONDBLCLK ??
" L6 V- j. C8 c4 j6 I, nWTL版本 7.5
* F+ e" Z) r: f; |/ ]
[此贴子已经被作者于2005-5-4 12:22:15编辑过]

* a( o0 s1 `7 R& A+ {/ U) V
作者: yzhlinux    时间: 2005-5-4 15:45

你也开始比WYL吸引了啊

你说的问题一般来说这是不可能的。

在WTL中这两个消息的定义的确在一起,如下:

#define MSG_WM_LBUTTONUP(func) if (uMsg == WM_LBUTTONUP) { SetMsgHandled(TRUE); func((UINT)wParam, CPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); lResult = 0; if(IsMsgHandled()) return TRUE; } 4 _8 C, Z0 j, \, `#define MSG_WM_LBUTTONDBLCLK(func) if (uMsg == WM_LBUTTONDBLCLK) { SetMsgHandled(TRUE); func((UINT)wParam, CPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); lResult = 0; if(IsMsgHandled()) return TRUE; }

而 IsMsgHandled 中是判断 m_bMsgHandled 这个bool变量(m_bMsgHandled 是BEGIN_MSG_MAP_EX中定义的),除非你在 OnLButtonUp 函数中将这个辩论设置为 false 了,那么自然会运行到 MSG_WM_LBUTTONDBLCLK(func) 。但是如果说直接运行到 MSG_WM_LBUTTONDBLCLK 那么除非满足 if (uMsg == WM_LBUTTONUP) 否则怎么可能?(难道你的 WTL摸板的代码被修改了?)

另外你的代码里没有 定义 WM_LBUTTONDBLCLK ,你怎么知道“反而响应的是 WM_LBUTTONDBLCLK ”??是跟出来的吗?


作者: 游侠无极限    时间: 2005-5-4 17:06

开始因为只有我双击的时候才响应,所以我以为响应了双击消息

后来由试了一下 WM_LBUTTONDOWN,倒是没有问题

还有WM_RBUTTONUP 和 WM_LBUTTONUP 问题一样,只有连续快速的按2次(差不多就是双击,不过右键没有双击的消息吧)才会响应一次,按1次不会响应


作者: 游侠无极限    时间: 2005-5-4 19:38

看来是控件本身的问题,鼠标一次点击不产生BUTTONUP消息……

MFC也一样 4 [) s' ^& N6 p- y! a
[此贴子已经被作者于2005-5-5 0:08:54编辑过]
7 c" a3 c; \7 B, b# `




欢迎光临 下沙论坛 (http://bbs.xiasha.cn/) Powered by Discuz! X3.3