MFC动态创建的按钮怎么添加双击响应??双击!!!
我对我动态创建的64个按钮添加了单击响应ON_CONTROL_RANGE(BN_CLICKED,IDC_BTN_0,IDC_BTN_END,OnClkSinglePin)...
我对我动态创建的64个按钮添加了单击响应 ON_CONTROL_RANGE(BN_CLICKED,IDC_BTN_0, IDC_BTN_END, OnClkSinglePin)。
单击响应是可以的,添加双击响应
ON_CONTROL_RANGE(BN_DOUBLECLICKED,IDC_BTN_0, IDC_BTN_END,OnDoubleclicked),
但是双击怎么也响应不了。按钮已经是BS_NOTIFY风格。 m_Btn[k].Create("",WS_CHILD |BS_NOTIFY| WS_VISIBLE,。。。。
到底该怎么添加双击响应啊!!!!!
可追加分!!!我分有的是!! 展开
单击响应是可以的,添加双击响应
ON_CONTROL_RANGE(BN_DOUBLECLICKED,IDC_BTN_0, IDC_BTN_END,OnDoubleclicked),
但是双击怎么也响应不了。按钮已经是BS_NOTIFY风格。 m_Btn[k].Create("",WS_CHILD |BS_NOTIFY| WS_VISIBLE,。。。。
到底该怎么添加双击响应啊!!!!!
可追加分!!!我分有的是!! 展开
4个回答
展开全部
mfc对于非自绘按钮不响应双击事件的,虽然可以通过向导添加也没用。
要处理双击有两个方法:
1、自绘按钮,处理事件,比较麻烦
2、重写父窗口的PreTranslateMessage(MSG* pMsg)截获双击事件,
if(pMsg->message==WM_LBUTTONDBCLK)
{
int nBtnID = GetWindowLong(pMsg->hWnd,GWL_ID);
if(nBtnID >= IDC_BTN_0 && nBtnID<= IDC_BTN_END)
{
OnBTNDBClick(nBtnID) ;
}
}
要处理双击有两个方法:
1、自绘按钮,处理事件,比较麻烦
2、重写父窗口的PreTranslateMessage(MSG* pMsg)截获双击事件,
if(pMsg->message==WM_LBUTTONDBCLK)
{
int nBtnID = GetWindowLong(pMsg->hWnd,GWL_ID);
if(nBtnID >= IDC_BTN_0 && nBtnID<= IDC_BTN_END)
{
OnBTNDBClick(nBtnID) ;
}
}
追问
编译后提示'hWnd' : is not a member of 'tagMSG'。
pMsg->hWnd这个参数应该怎么填啊?
对按钮的定义是这样的: CButtonST m_Btn[64];
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无法直接添加。只能通过重载对话框的PreTranslateMessage来实现。
在该函数中截获双击消息,判断鼠标位置位于哪一个按钮之上,然后做不同的处理
在该函数中截获双击消息,判断鼠标位置位于哪一个按钮之上,然后做不同的处理
追问
重写父窗口的PreTranslateMessage(MSG* pMsg)截获双击事件,
if(pMsg->message==WM_LBUTTONDBCLK)
{
int nBtnID = GetWindowLong(pMsg->hWnd,GWL_ID);
if(nBtnID >= IDC_BTN_0 && nBtnIDhWnd这个参数应该怎么填啊?
对按钮的定义是这样的: CButtonST m_Btn[64];
追答
hWnd应该为hwnd。去看MSG的成员
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说的对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询