社区
界面
帖子详情
我在CRich Edit 里设置了文本链接,WM_SETCUSOR是鼠标放到链接上的事件,但是我想捕获鼠标离开文本链接的事件,怎么办,谢谢
xixuanfong
2008-07-29 10:34:30
急,大侠帮忙指点
...全文
98
15
打赏
收藏
我在CRich Edit 里设置了文本链接,WM_SETCUSOR是鼠标放到链接上的事件,但是我想捕获鼠标离开文本链接的事件,怎么办,谢谢
急,大侠帮忙指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sanshao27
2008-08-04
打赏
举报
回复
参考一下
//此文件是纯 WIN32 SDK 编写,不需要MFC等支持。可在DOS模式下编译。
//FileName: MouseLevel.c
#include <windows.h>#include <commctrl.h> //必须导入此头文件
#ifndef APP_NAME#define APP_NAME TEXT("My MouseHover test")#endif
const int SUCCEED =0;
ATOM RegisterFormClass(HINSTANCE);BOOL InitInstance(HINSTANCE,int);LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow){ MSG msg; RegisterFormClass(hInstance); if(!InitInstance(hInstance,iCmdShow)) return FALSE; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return SUCCEED;}
ATOM RegisterFormClass(HINSTANCE hInstance){ WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wcex.hCursor = LoadCursor(NULL,IDC_ARROW); wcex.hIcon = LoadIcon(hInstance,IDI_APPLICATION); wcex.hIconSm = LoadIcon(NULL,IDI_APPLICATION); wcex.hInstance = hInstance; wcex.lpfnWndProc = WndProc; wcex.lpszClassName = APP_NAME; wcex.lpszMenuName = NULL; wcex.style = CS_HREDRAW | CS_VREDRAW; return RegisterClassEx(&wcex);}
BOOL InitInstance(HINSTANCE hInstance,int iCmdShow){ HWND hWnd; hWnd = CreateWindowEx(WS_EX_APPWINDOW, APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd,iCmdShow); UpdateWindow(hWnd); return TRUE;}
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ switch(uMsg) { case WM_MOUSELEAVE: MessageBox(hWnd,TEXT("MouseLeave!"),TEXT("MouseLeave"),0); break; case WM_MOUSEHOVER: MessageBox(hWnd,TEXT("MouseHover"),TEXT("MouseHover"),0); break; case WM_NCMOUSELEAVE: MessageBox(hWnd,TEXT("MouseNClient!"),TEXT("MouseNClient!"),0); break; case WM_MOUSEMOVE: //因为 TRACKMOUSEEVENT 只发送一次消息,且随着其它消息产生而失效,所以在此消息中调用函数。
TRACKMOUSEEVENT trmouse; trmouse.cbSize = sizeof(TRACKMOUSEEVENT); trmouse.dwFlags = TME_LEAVE | TME_HOVER | TME_NONCLIENT; trmouse.dwHoverTime = 2000; trmouse.hwndTrack = hWnd; if(!_TrackMouseEvent(&trmouse)) return FALSE; break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd,uMsg,wParam,lParam); break; } return SUCCEED;}
cnzdgs
2008-08-03
打赏
举报
回复
直接用lParam参数就可以,LOWORD(lParam)是x坐标,HIWORD(lParam)是y坐标,都是相对于目标控件客户区的。
如果用GetCursorPos得到的是相对于整个屏幕的,还需要再ScreenToClient转换为RichEdit控件的客户区坐标才行。
xixuanfong
2008-08-03
打赏
举报
回复
人呢
xixuanfong
2008-08-01
打赏
举报
回复
CPoint ptCursor;
GetCursorPos(&ptCursor);
int iposChar = m_RichEditTest.CharFromPos(ptCursor);
是这样用么
xixuanfong
2008-08-01
打赏
举报
回复
可是我把鼠标放到链接字符串的位置上时,返回的也是最后一个字符的索引啊,怎么回事呢,谢谢
cnzdgs
2008-08-01
打赏
举报
回复
当指定点超出控件中的最后一个字符时,CharFromPos的返回值是最后一个字符的索引,需要自己处理一下。
xixuanfong
2008-08-01
打赏
举报
回复
ENLINK里我保存了chrg.cpMin和chrg.cpMax(在鼠标移动到我指定的链接上后)
但是我在PreTranslateMessage函数里得到的字符索引是一个固定的值啊,用CharFromPos得到字符索引能直接和cpMin、cpMax比较么
cnzdgs
2008-08-01
打赏
举报
回复
哪里有问题?
xixuanfong
2008-08-01
打赏
举报
回复
不行啊
cnzdgs
2008-07-30
打赏
举报
回复
我刚刚试了一下,无法直接获得鼠标从链接上移开的消息。你可以这样试试,在响应EN_LINK通知时把链接的字符索引范围记录下来;另外重载主窗口的PreTranslateMessage函数,在函数中判断发给RichEdit的WM_MOUSEMOVE消息,用CharFromPos获取鼠标指向的字符索引,判断如果超出了EN_LINK通知的索引范围,就表示鼠标从链接上移开了,清除索引范围记录,然后做自己的处理。
xixuanfong
2008-07-30
打赏
举报
回复
能给个例子么
xixuanfong
2008-07-30
打赏
举报
回复
WM_SETCURSOR 我用了啊,这个是鼠标放到链接上响应的事件啊
我想要知道什么时候鼠标离开链接
cnzdgs
2008-07-29
打赏
举报
回复
我搞错了,当成控件了。
你响应WM_SETCURSOR消息就可以了,当控件是RichEdit、nHitTest是HTTOP时设置指针,其它情况恢复指针。
xixuanfong
2008-07-29
打赏
举报
回复
WM_MOUSELEAVE我试过了不行的,其他两个我明天再看看
我是指捕获鼠标离开文本链接的事件,我是响应的EN_LINK消息,在这个消息里面怎么捕获呢
cnzdgs
2008-07-29
打赏
举报
回复
TrackMouseEvent,WM_MOUSEHOVER、WM_MOUSELEAVE。
C++基础:动态
链接
库调用方法总结
虽说在08年就学习了静态库,动态
链接
库的使用方法,但是在最近的工作中才发现,动态
链接
库的动态调用(也叫显式调用)我是可以运用了,但是静态调用(也叫隐式调用)我其实还是没有掌握,这次就借这个机会把动态库的...
CRich
Edit
Ctrl 超
文本
编辑 常见问题
CRich
Edit
Ctrl 超
文本
编辑 一.常见问题 a.可以编译,不能执行的 AfxInitRich
Edit
(); b.升级默认的Riched版本(默认的有一些bug) 可在InitInstance中添加 LoadLibrary("RICHED20.DLL
学习C++动态
链接
库基础知识 (主要关于QT项目)PART2
这部分主要参考博客: ... 与前一篇笔记相比,这...动态库的头文件,在这部分是不需要的,同样的,在工程文件中也并不要对连接器进行
设置
。 下面贴出动态库的头文件和源文件 工程文件 helloworld3.pro QT -= gui T
[转]在MFC中的文档视图中对视图使用Rich
Edit
2--来自CodeGuru
The following is an example of rich
edit
2.0 based on the default SD rich
edit
project. Please email me for source code.1.revise PreCreateWindowsBOOL
CRich
20DocViewView::PreCreateWindow(CREATESTRUCT&am...
QT调用动态
链接
库实例
一、动态
链接
库调用方式 1、动态调用 Run-time Dynamic Linking 动态调用主要通过API函数(Window LoadLibrary、GetProcAddress、FressLibrary)来调用程序运行后需要的DLL函数,节省内存空间。QT中,则主要通过...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章