有关OnLButtonDown和OnLButtonUp函数... 我继承了CButton类里面的OnLButtonDown和OnLButtonUp函数,我按下鼠标的时候响应了OnLButtonDown函数,但是我再击该鼠标时仍然响应的是OnLButtonDown函数,并没有响应OnLButtonUp函数,请问什么原因呢?望帮忙解决下... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的OnLButtonDown和OnLButtonUp函数中你写了什么?不会又是AfxMessageBox/MessageBox之类的吧 能说的详细点么?下边是代码:void CNewButton::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default// MessageBox("down",NULL,MB_OK); CButton::OnLButtonDown(nFlags, point); MessageBox("down",NULL,MB_OK);}void CNewButton::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CButton::OnLButtonUp(nFlags, point); MessageBox("up",NULL,MB_OK);} MessageBox以后焦点就变成对话框上面了呀 @tiger9991 谢谢你 你说的有道理,我的问题应该是在那儿了,如果要显示MessageBox的话有没有什么好的解决方案呢 将焦点设在按钮上? 将MessageBox放在CButton::OnLButtonDown前面,CButton默认应该会SetCapture的MessageBox("down",NULL,MB_OK);CButton::OnLButtonDown(nFlags, point); [Quote=引用 9 楼 的回复:]将MessageBox放在CButton::OnLButtonDown前面,CButton默认应该会SetCapture的MessageBox("down",NULL,MB_OK);CButton::OnLButtonDown(nFlags, point);不行哈,那样的话变成对话框捕获单击按钮的消息,只要在对话框上一单击按钮就响应了OnLButtonDown函数,而且不会响应OnLButtonUp函数... 确实,要主动发WM_LBUTTONUP消息MessageBox("down",NULL,MB_OK);CButton::OnLButtonDown(nFlags, point);SendMessage(WM_LBUTTONUP); 其实主动发WM_LBUTTONUP消息,就失去WM_LBUTTONUP的意义了没有响应OnLButtonUp函数是因为没有满足触发WM_LBUTTONUP的条件,弹出那个MessageBox一般人都会习惯性的用鼠标去点确定关闭,当MessageBox关闭后已经松开了鼠标左键,那时何来的WM_LBUTTONUP呢?只有你一直不松开鼠标左键而用键盘将MessageBox关闭后才松开鼠标左键,才可能触发WM_LBUTTONUP消息。 呵呵,是啊,失去意义了。。MessageBox确实阻碍Up消息了要不你把MessageBox放到up消息函数里面去吧 根据状态不同加个计数器或者bool值 根据值来判断执行方向 OnLButtonDown(){ if(bool){ 显示文字}else 恢复状态} 点的太快了,鼠标点下抬起太快了,你把buttondown中的messagebox注释掉,这时候你看看是不是响应BUTTONUP 怎样进行PPPoE拨号? 求VC++ Windows Shell Programming中文版? 单文档中,如何在退出是不用“改动保存” 对话框 非阻塞模式下如何使用read???? 高分求助:用MFC的对话框程序框架编写通讯录处理程序 opencv检测直线,运行一次后就不能再调试了 使用SafeArray不用犯愁了。 一个菜鸟的问题 加急!!跪求!怎么往Clistview里添加一数据项? 不知咋解决 关于屏幕监控程序求解 接收到的位图 OpenGL贴图问题
void CNewButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// MessageBox("down",NULL,MB_OK);
CButton::OnLButtonDown(nFlags, point);
MessageBox("down",NULL,MB_OK);
}void CNewButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CButton::OnLButtonUp(nFlags, point);
MessageBox("up",NULL,MB_OK);
}
MessageBox("down",NULL,MB_OK);
CButton::OnLButtonDown(nFlags, point);
MessageBox("down",NULL,MB_OK);
CButton::OnLButtonDown(nFlags, point);
不行哈,那样的话变成对话框捕获单击按钮的消息,只要在对话框上一单击按钮就响应了OnLButtonDown函数,而且不会响应OnLButtonUp函数...
MessageBox("down",NULL,MB_OK);
CButton::OnLButtonDown(nFlags, point);
SendMessage(WM_LBUTTONUP);
没有响应OnLButtonUp函数是因为没有满足触发WM_LBUTTONUP的条件,弹出那个MessageBox一般人都会习惯性的用鼠标去点确定关闭,当MessageBox关闭后已经松开了鼠标左键,那时何来的WM_LBUTTONUP呢?只有你一直不松开鼠标左键而用键盘将MessageBox关闭后才松开鼠标左键,才可能触发WM_LBUTTONUP消息。
OnLButtonDown(){
if(bool){
显示文字
}else 恢复状态
}