vc++ 中如何派生 picture控件的 类?
我修改了picture控件的notify属性和IDC_STATIC,发现它只能相应click事件,我想在它的基础上派生一个新的类CPic,能够响应mousemove消息,...
我修改了picture控件 的 notify属性和IDC_STATIC,发现它只能相应click事件,我想在它的基础上派生一个新的类CPic,能够响应mousemove 消息,请问我该怎样做?代码怎么写?请高手指教
展开
2个回答
展开全部
1,picture控件空间响应mousemove 消息不需要重新派生类,先为对话框或者view添加mousemove 消息响应函数,然后重载消息控制函数PreTranslateMessage(MSG* pMsg);
2,在这个函数中添加以下代码:
if(WM_MOUSEMOVE == pMsg-> message)
if(pMsg-> hwnd == GetDlgItem(IDC_STATIC)-> GetSafeHwnd())
{
//这里添加移动鼠标是需要响应的代码
}
2,在这个函数中添加以下代码:
if(WM_MOUSEMOVE == pMsg-> message)
if(pMsg-> hwnd == GetDlgItem(IDC_STATIC)-> GetSafeHwnd())
{
//这里添加移动鼠标是需要响应的代码
}
展开全部
在你的CPic类中响应WM_NCHITTEST消息
CPic.h
//{{AFX_MSG(CPic)
afx_msg UINT OnNcHitTest(CPoint point);
//}}AFX_MSG
CPic.cpp
BEGIN_MESSAGE_MAP(CPic, CStatic)
//{{AFX_MSG_MAP(CPic)
ON_WM_NCHITTEST()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
UINT CPic::OnNcHitTest(CPoint point)
{
// TODO:
CRect rc;
GetWindowRect(rc);
if(!rc.PtInRect(point))
return CStatic::OnNcHitTest(point);
//you can do anything here , ...........
return CStatic::OnNcHitTest(point);
}
CPic.h
//{{AFX_MSG(CPic)
afx_msg UINT OnNcHitTest(CPoint point);
//}}AFX_MSG
CPic.cpp
BEGIN_MESSAGE_MAP(CPic, CStatic)
//{{AFX_MSG_MAP(CPic)
ON_WM_NCHITTEST()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
UINT CPic::OnNcHitTest(CPoint point)
{
// TODO:
CRect rc;
GetWindowRect(rc);
if(!rc.PtInRect(point))
return CStatic::OnNcHitTest(point);
//you can do anything here , ...........
return CStatic::OnNcHitTest(point);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询