to all: 除了下面这种方法外
下面所说基于对话框:
在对话框里加一个按钮 IDC_B1
在CXXXDlg.h 里重载 PreTranslateMessage(MSG*pMsg) (即声明:BOOL PreTranslateMessage(MSG* pMsg);) // XXX 你的工程名
接着在CXXXDlg.cpp 里加上如下实现:
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_RBUTTONUP)// 可改为任意其它消息
{
CRect r;
::GetWindowRect(GetDlgItem(IDC_B1)->m_hWnd,&r);// 得到按钮控件的 rect
if(r.PtInRect(pMsg->pt)) // 检测鼠标动作是否在按钮内
AfxMessageBox("左键按了一下");
我有很多的按钮都需要添加右键事件,不想用上面的感觉很不好...希望大家给个建议
}
return CDialog::PreTranslateMessage(pMsg);
}
下面所说基于对话框:
在对话框里加一个按钮 IDC_B1
在CXXXDlg.h 里重载 PreTranslateMessage(MSG*pMsg) (即声明:BOOL PreTranslateMessage(MSG* pMsg);) // XXX 你的工程名
接着在CXXXDlg.cpp 里加上如下实现:
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_RBUTTONUP)// 可改为任意其它消息
{
CRect r;
::GetWindowRect(GetDlgItem(IDC_B1)->m_hWnd,&r);// 得到按钮控件的 rect
if(r.PtInRect(pMsg->pt)) // 检测鼠标动作是否在按钮内
AfxMessageBox("左键按了一下");
我有很多的按钮都需要添加右键事件,不想用上面的感觉很不好...希望大家给个建议
}
return CDialog::PreTranslateMessage(pMsg);
}
解决方案 »
- 请问EnableWindowsDialog和EnableAutoHideBars具体用法?
- CSocket UDP 无法接收问题
- tooltip的文本如何显示在上面,而不在右下角
- 在VC里,用什么结构保存数据库记录集好?
- 关于串口问题,详情请进入。
- ATL里面如何使用List Constrol控件?
- 请各位大侠帮忙看个问题...
- (高分求急解)有没有谁遇见过ISAPI丢出0x8001010E错误码的?
- windows7 下编程,往C盘拷文件不成功,如何提升程序执行权限???
- MFC OCX中EditCtrl中输入中文后显示不正确
- CapPoint是什么函数?怎么在MSDN中找不到?
- 求VC2005下载地址,要能支持MFC
class CRButton : public CButton
{
.....
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
.....
}
在你的CXXXDlg中定义一个CRButton *m_rButton;当创建该按钮时调用m_rButton->Create(),
大致就是这样
或者加我的QQ79224601
{
CWnd * pWnd = FromHandle( pMsg->hwnd );
int id = pWnd->GetDlgCtrlID(); if( id >= IDC_BUTTON3001 && id <= IDC_BUTTON3012 )
{
CMenu menu;
menu.LoadMenu( IDR_ADDTO_RECENT );
menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON, pMsg->pt.x, pMsg->pt.y, this );
memset( m_button_captions, 0, sizeof( m_button_captions ) );
pWnd->GetWindowText( m_button_captions, sizeof( m_button_captions ) );
m_current_index = g____mathfun_level2 * MATHFUN_LEVEL2 + id - IDC_BUTTON3001;
}
else if( id >= IDC_RECENT_0001 && id <= IDC_RECENT_0014 )
{
//CMenu::TrackPopupMenu();
CMenu menu;
menu.LoadMenu( IDR_REMOVEFROM_RECENT );
menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON, pMsg->pt.x, pMsg->pt.y, this );
m_current_index = id - IDC_RECENT_0001;
}
}