有如下代码:
BEGIN_MSG_MAP(SmartGraph)
CHAIN_MSG_MAP(CComControl<SmartGraph>)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()LRESULT SmartGraph::OnLButtonDown(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
LButtonDown(pt.x, pt.y, wParam);
return 0;
}我在代码中找不到函数LButtonDown的定义,
请大家指点下在那里能找到对应的实现代码.
BEGIN_MSG_MAP(SmartGraph)
CHAIN_MSG_MAP(CComControl<SmartGraph>)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()LRESULT SmartGraph::OnLButtonDown(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
LButtonDown(pt.x, pt.y, wParam);
return 0;
}我在代码中找不到函数LButtonDown的定义,
请大家指点下在那里能找到对应的实现代码.
ALT+G是转到定义,我用了没有效果.另外我搜索了整个文件目录,也并没有找到LButtonDown的实现函数.另外LButtonDown是下面接口中的一个方法.
__interface _ISmartGraphEvents
{
[id(1), helpstring("method LButtonDown")] HRESULT LButtonDown([in] LONG xPos, LONG yPos, LONGLONG wParam);
[id(2), helpstring("method LButtonUp")] HRESULT LButtonUp([in] LONG xPos, LONG yPos, LONGLONG wParam);
[id(3), helpstring("method MouseMove")] HRESULT MouseMove([in] LONG xPos, LONG yPos, LONGLONG wParam);
};是不是有Invoke之类的函数,
在Invoke中通过id来把LButtonDown需要做的事转移到其它地方,
但是我在代码中并没有看到Invoke函数,
因小弟以前没有接触过ATL,所以...
我调试的就是这里的代码.
BEGIN_EVENTSINK_MAP(CSmartGraphDemoView, CFormView)
ON_EVENT(CSmartGraphDemoView, IDC_SMARTGRAPH1, 1, LButtonDownSmartgraph1, VTS_I4 VTS_I4 VTS_I8)
ON_EVENT(CSmartGraphDemoView, IDC_SMARTGRAPH1, 2, LButtonUpSmartgraph1, VTS_I4 VTS_I4 VTS_I8)
ON_EVENT(CSmartGraphDemoView, IDC_SMARTGRAPH1, 3, MouseMoveSmartgraph1, VTS_I4 VTS_I4 VTS_I8)
END_EVENTSINK_MAP()其中LButtonDownSmartgraph1是等价于LButtonDown的函数,而VTS_I4 VTS_I4 VTS_I8则是它的三个参数.