从https://msdn.microsoft.com/en-us/library/windows/desktop/ms646245(v=vs.85).aspx,我提取:
如果应用程序处理此消息,则应返回TRUE。对于 有关处理返回值的更多信息,请参阅备注 部分。
如果重要,同样适用于WM_XBUTTONUP
和WM_XBUTTONDBLCLK
。
我希望我会找到MSG_WM_XBUTTONDOWN
来做到这一点。但是,在Chromium的atlcrack.h
(https://src.chromium.org/svn/trunk/src/third_party/wtl/include/atlcrack.h)中,我发现了以下内容:
// void OnXButtonDown(int fwButton, int dwKeys, CPoint ptPos)
#define MSG_WM_XBUTTONDOWN(func) \
if (uMsg == WM_XBUTTONDOWN) \
{ \
SetMsgHandled(TRUE); \
func(GET_XBUTTON_WPARAM(wParam), GET_KEYSTATE_WPARAM(wParam), _WTYPES_NS::CPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); \
lResult = 0; \
if(IsMsgHandled()) \
return TRUE; \
}
可以找到MSG_WM_XBUTTONDOWN
和MSG_WM_XBUTTONDBLCLK
的相似内容。
在此代码段中,lResult = 0
行让我感到困惑。不应该是lResult = TRUE
(根据MSDN)?