[判断][鼠标][点击]MDI中如何判断鼠标点击在子窗体之外
08月 21st, 2008 by admin
Posted in VC/MFC | No Comments »
MDI中如何判断鼠标点击在子窗体之外?
能具体说一下吗?主要就是那个鼠标点击位置的判断。
这样好象可以
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if(WM_LBUTTONDOWN == pMsg->message) {
CFmView *pFmView ;
pFmView = (CFmView*)GetActiveFrame()->GetActiveView();
if (pFmView == NULL) {
return FALSE;
}
CRect rect;
pFmView->GetClientRect(rect);
ClientToScreen(rect);
CPoint point;
::GetCursorPos(&point);
ScreenToClient(&point);
BOOL curIn = FALSE;
if(rect.PtInRect(point) ) {
curIn = TRUE;
}
//其他处理
}
return CMDIFrameWnd::PreTranslateMessage(pMsg);
}
[文档][屏蔽][鼠标]多文档中怎么屏蔽鼠标消息
08月 21st, 2008 by admin
Posted in VC/MFC | No Comments »
一个多文档程序中,我用Navigate2来打开PPT文件,是在childfrm中打开的,打开后鼠标每点击PPT一次,那页面就会跳转一页,我不想让它通过这种方式跳转,所以想屏蔽掉鼠标的消息,应该怎么做?
en
获取鼠标位置,当其在工作区时用钩子拦截,不知这种思路是否可行?只是我块代码我也不熟啊
if ((pMsg->message > WM_MOUSEFIRST && (pMsg->message < WM_MOUSELAST))
return 0;
[鼠标][识别]两个鼠标如何识别
07月 23rd, 2008 by admin
Posted in VC/MFC | No Comments »
一台主机安装两个鼠标(如笔记本中的外接触摸板和鼠标),应用程序如何才能知道是哪个鼠标在操作呢?
能否通过驱动程序?
如果两个鼠标不是接在同一个接口上,驱动程序肯定是可以区分的。不过我没做过这种驱动。
无法识别吧。
应该通过接口查看是哪个接口上的鼠标在发送消息吧
将两个鼠标的光标定义的不同,呵呵。
通过驱动程序肯定是可以区分的,但不知如何做
没用过双鼠标吧?
WINDOWS里面,接再多鼠标都只显示一个鼠标指针.在应用层是区分不了的.
除了驱动程序,区分不出来
因为鼠标消息中不包含硬件相关信息
消息相同,应为都是鼠标消息.
真的无法区分吗?愿高手不吝赐教!
有个软件叫Bitwin,能实现双头显卡上模拟两台机器,而且操作可互不干扰。说明可以区分不同鼠标发送的消息。有人知道是如何实现的吗?
把帖子顶起,请教解决方案
[模拟][鼠标][左键]求助模拟鼠标左键消息的方法
07月 23rd, 2008 by admin
Posted in VC/MFC | No Comments »
自己编写了一个程序要调用佳能相机的拍摄功能。相机本身提供了一个拍摄软件,该软件有个"拍摄按钮"可直接驱动相机拍摄。拍摄后可以保存到电脑中。我现在试图通过给该"拍摄按钮"发鼠标左键消息,来实现在我自己的软件中完成拍摄功能。现在能得到该按钮的句柄,但发送消息后没有反应。不知道什么缘故?不知道有没有其它的方法实现模拟其点击"拍摄按钮"的功能?谢谢!
我用下面的语句发送的消息,hSend为拍摄按钮的句柄:
- C/C++ code
-
::SendMessage(hSend, BM_CLICK , 0 , 0);
我刚试了一下,好像和局部变量没关系,因为发送消息的时候都是有值的。
SetCursorPos(lpPoint.x, lpPoint.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
楼上正解~
感觉发WM_LBUTTONDOWN就行了
请问如何采用该方法,lpPoint是如何取得的呀?
这个问题我也遇到过,我现在加了一个群,这个群人气较好,也的确有高手,不但可以交流问题,而且还可以接项目赚钱,QQ群号是:陆!肆!柒!玖!捌!柒!伍!伍,不要说我做广告,看看便知,如需要的话加入试试,如果你发现好的交流群也别忘了告诉我啊!呵呵!
请问如何采用该方法,lpPoint是如何取得的呀?
GetDlgItem(YOUR BUTTON ID)->getWindowRect(&rect);
lpPoint.x = rect.left+1;
lpPoint.y = rect.top+1;
::SendMessage(hSend, BM_CLICK, 0, 0);
这样就可以,应该是句柄值不对,hSend是如何得到的?可以借助SPY++检查一下。
- C/C++ code
-
HWND hWnd = ::FindWindow(NULL , _T("EOS 400D DIGITAL")); if (!hWnd) { MessageBox(_T("Confirm the camera has been opened")); return; } ::SetForegroundWindow(hWnd); HWND hSend = NULL; hSend = FindWindowEx(hWnd, hSend, _T("CMyBmpButton_Class"), _T("REC")); if(!hSend) { MessageBox(_T("hSend is NULL")); return; } ::SendMessage(hSend, BM_CLICK , 0 , 0);//BM_CLICK
句柄值我用程序得到的和用spy++查到的是同一个值。有个问题是相机自带的软件中有五个按钮,都是"CMyBmpButton_Class"类,名字都是"REC"。不过我用程序中这种方法得到的值正好和我想要的那个拍摄按钮的句柄是一样的,但发送消息仍然没有反应。
这个“按钮”不是“BUTTON”类,不能用BM_CLICK消息来控制,可以试试向其父窗口发送WM_COMMAND BN_CLICK消息。
楼主可以换一种角度来考虑问题
可以做个鼠标点击记录的功能
记录一段时间内,鼠标的点击情况,并把相关的坐标保存下来
然后用程序根据记录下来的数据进行点击操作
谢谢大家的支持,我再试试。
帮楼主顶下 想知道最终的解决办法
问题算是基本解决了,采用了下述方式。相机自带的软件激活到前台,得到“拍摄按钮”的位置,发消息。虽然界面不够流畅,因为有瞬间的界面转换,基本也实现了。谢谢大家的支持。
- C/C++ code
-
void CListFileView::OnButtonAcquierImage() { HWND hWnd = ::FindWindow(NULL , _T("EOS 400D DIGITAL")); if (!hWnd) { MessageBox(_T("Confirm the camera has been opened")); return; } ::SetForegroundWindow(hWnd); HWND hSend = NULL; hSend = FindWindowEx(hWnd, hSend, _T("CMyBmpButton_Class"), _T("REC")); if(!hSend) { MessageBox(_T("hSend is NULL")); return; } CRect rect; ::GetWindowRect(hSend, &rect); CPoint lpPoint; lpPoint.x = rect.left+1; lpPoint.y = rect.top+1; ::SetCursorPos(lpPoint.x, lpPoint.y); ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); }
提示一下,mouse_event要移动鼠标和激活窗口,而用消息控制是可以在后台操作的,所以通常会优先考虑用消息方式,当然如果不需要支持后台运行,两种方法都是可以的。
[鼠标][实现][功能]vc鼠标中键实现功能
07月 7th, 2008 by admin
Posted in VC/MFC | No Comments »
vc里面如何实现象浏览器中,按下鼠标中键出现一个圆形图标,移动鼠标实现页面滚动~~~???
响应鼠标中键消息,先在鼠标点下的位置绘制一个圆形,然后根据鼠标移动到的位置相对于鼠标点下位置设置不同的cursor,同时滚动屏幕,还要注意滚动的速度与相对位置的远近成正比。
能不能有具体实现方法?我在网上没找到~~~
实际就是发PAGEDOWN ,PAGEUP消息,然后改一下Cursor就行了。
有没有具体实现的例子???
[函数][鼠标][移动]请问有什么函数可以把鼠标移动到某个位置(x,y),并且触发鼠标移动的事件
07月 7th, 2008 by admin
Posted in VC/MFC | No Comments »
请各位大虾帮忙, 不论当前鼠标在哪个位置
都能帮我移动到另外一个位置(x,y),并且触发鼠标移动的事件
请各位帮忙,谢谢先。
WM_MOUSEMOVE
请各位看看, 我下面的代码哪儿错了, 我是想把鼠标移动到某个位置POINT ptPosition
POINT ptCurrentPos = {0};
GetCursorPos(&ptCurrentPos);
mouse_event(MOUSEEVENTF_MOVE,
ptPosition.x - ptCurrentPos.x,
ptPosition.y - ptCurrentPos.y,
0,
0);
但是老是跟期望的不一样, 并没有移动到POINT ptPosition, 是什么原因啊? 请有用过的大虾帮忙,谢谢先
ClientToScreen(&ptTmp);
ScreenToClient(&ptTmp);
MOUSEEVENTF_ABSOLUTE
[鼠标][穿透]在这种情况下如何让鼠标不穿透
07月 4th, 2008 by admin
Posted in VC/MFC | No Comments »
其实鼠标穿透很简单,如果用一张透明的图片做背景,就可实现鼠标穿透;
但是,我想在透明(全透明)上背景上不穿透鼠标,怎么用最简单的方法实现?
谢谢。
全透明上背景上不穿透鼠标, 用 SetLayeredWindowAttributes设置透明
用透明的图片做背景SetWindowRgn 不行
[鼠标][绘制][二维]如何将鼠标绘制的二维图形转换成opengl下的三维图形
06月 30th, 2008 by admin
Posted in VC/MFC | No Comments »
在VC环境中通过鼠标绘制二维图形(例如分形树),如何将其转换成opengl环境下的三维图形,恳请各位大侠不吝赐教!
是不是做CAD,可以使用三视图来编辑
二维到三维?不还是一个平面么?
鼠标绘制分形树?这个没干过。。。。如果是想要3d效果的分形树大可直接在GL中画~
好高深的东西,
不懂
可不可以获得关键参数,在opengl里面重绘阿
不懂,希望以后会用到!@
直接调用OPenGL的有关函数就可以了

先试试看怎么发图片,图1原bmp图片,图2OPENGL生成的3D图片
怎么把图片传上来阿?怎么都是不能显示
[ButtonDown][判断][鼠标]ButtonDown时如何判断鼠标位置在某个BUTTON上
06月 20th, 2008 by admin
Posted in VC/MFC | No Comments »
任何得到鼠标DOWN时的位置,如何判断是否在BUTTON上???该怎么写,我查不到请教各位大哥
getwindowrect 获取按钮位置所在矩形
ptinrect 判断鼠标当前坐标是否在矩形内
HitTest
谢谢楼上各位 我去试一下
VsirSoft 大哥 具体该怎么实现呢?
比如我测试程序:
CRect rect;
m_bn2.GetWindowRect(&rect);
if(rect.PtInRect(&point))
{
MessageBox("zzz");
}
但是出错:cannot convert parameter 1 from 'class CPoint *' to 'struct tagPOINT'
[鼠标][绘制][曲线]如何将鼠标绘制的自由曲线用一条光滑的曲线表达出这条轨迹的走向和趋势
06月 16th, 2008 by admin
Posted in VC/MFC | No Comments »
需要实现一个绘图功能,如何将鼠标绘制的自由曲线,用一条光滑的曲线表达出这条轨迹的走向和趋势?就像photoshop一样,鼠标自由移动的轨迹用其它曲线近似表达出来!?
哪位大侠能给出算法,不胜感激!
这种东西一般都用于行业里的东西,应该和数学算法相关。我以前的公司有几个人专门干这个。你可以查查最小二乘法对数曲线拟和算法。
曲线拟合通常有两种方法,即插值法和逼近法。插值法使用起来计算量大,不利于修改,且插值得到的曲线易于起皱。逼近法易于控制和修改曲线的形状。还有其他的样条曲线…….
贝塞耳曲线
大侠们,能不能说得详细点啊,有没有具体的code之类的呢?
跪求算法,我的邮箱:jlt11@126.com 期待大侠们的答复,谢谢!
计算方法里面有很多这种算法,去买本书看看
学术上号称过所有控制点的拟合,是很数学的。
支持搂主,收藏