如何在forms 2.0 Label控件中捕获Ctrl+鼠标左键down?
解决方案 »
- MFC 问题
- 像素Alpha运算,能不能用移位代替除法?
- 我怎样知道我的程序是否还连在数据库上。
- 怎么样在点击最小化时 最小化到任务栏阿?
- 怎样使得编写的DirectX8工程有提示?
- stl中的配接器mem_fun的问题
- 关于在jsp和com组件间传递参数的问题!!!!!(50分)
- 坐标变换后,如何取得屏幕中点
- 我写了一个关于IE编程的COM DLL,我想在IE一启动时就自动加载它,应该如何做?
- CMAKE和BOOST会打架?
- fatal error C1010: unexpected end of file while looking for precompiled header directive???
- 为什么“string.h”装载不了?
现在通过GetCursorPos(???好象是这函数),可以得到鼠标位置,
然后在计算它在控件中的准确位置,然后再XXXXXXXXXXXXXXXXX不就干X就干X了?
{
if(nFlag & MK_CONTROL)
{
AfxMessageBox("已经按下CTRL键和鼠标左键");
}
}
用这个语句在属性页的其他地方管用,但是如果点在控件上面就没有效果,是不是要从控件类再派生出一个新类,然后加入鼠标左键按下的事件?
只对该窗口有效,如果你要在其他地方有效果,有以下几种办法:
1 在最开始的消息循环里面做,如果你用mfc可能对这个不熟,可以用下面的方法
2 用钩子,这个没学过也稍微有点麻烦
3 用OnIdle消息(mfc应该有吧???没有就是我失言了),在OnIdle里面同时检查鼠标左键和VK_CTRL的状态,如果同时按下,再计算它的准确位置,最后再xxx
4 子类化:一种是你说的直接派生个类,还有一种是用SetWindowLong替换它的窗口过程,然后自己来处理鼠标消息。
如何获得Microsoft Froms 2.0 Label中鼠标点击位置的坐标?通过OnMouseDownLabelDrawscope(short Button, short Shift, float X, float Y)中返回的X,Y值不对。X总是为零,Y是一个很大的数例如:107984076void CSonarPage::OnMouseDownLabelDrawscope(short Button, short Shift, float X, float Y)
{
if(Shift==2 && Button==1)
{
CString StrMessage;
StrMessage.Format("当前位置为:%d-%d",X,Y);
MessageBox(StrMessage,"信息提示",MB_OK);
}
}