我在程序中通过CHtmlView类派生出CHtmlCtrl类,我想在程序中实现鼠标指针移入CHtmlCtrl浏览器窗口时进行一个操作,当鼠标指针离开CHtmlCtrl浏览器窗口时再进行另外的一个操作,怎样实现?
解决方案 »
- mysql数据库使用clistctrl显示怎么样实现分页
- CButton创建按钮对象,为什么CFont创建的字体,设置不到BUTTON上?
- 急,高人看一下
- 关于数据库表与列表控件的联系
- 怎么去掉Rose添加到vc源代码中的标记。//##ModelID=sefljasfd 之类的。
- 列为高手,为什么这段代码不能编译呢? 这是一段Windows应用程序的入口
- ****在线等待!关于如何取得当前活动视图??????
- 语音识别的问题
- help!!!谁能帮我提供一段录音并且显示录音过程的时间-幅度波形图程序,谢谢!!!
- 求助:如何在MFC中调用Excel中的opentext函数
- 怎样将16进制转换为二进制数并放进字符串里?
- 请问如果编写界面为MDI的系统服务程序
不过要注意,正常情况下WM_MOUSELEAVE消息不会发生,如果你要响应这个消息,必须在WM_MOUSEMOVE消息响应中调用TrackMouseEvent来生成鼠标离开的消息
如果能让CHtmlView也能正确响应MouseHover和MouseLeave就好了~~
BOOL CHtmlviewView::PreTranslateMessage(MSG* pMsg)
{
if( WM_MOUSEMOVE == pMsg->message )
{
中算是试试
(二),在#include <afxwin.h>前,加一行代码#define _WIN32_WINNT 0x0400
(三),在CHtmlCtrlView中增加一个成员变量:bool m_bMouseOver,并在构造函数中赋初值为false。
(四),重写CHtmlCtrlView::PreTranslateMessage函数,代码如下:
BOOL CHtmlCtrlView::PreTranslateMessage(MSG* pMsg)
{
if( WM_MOUSEMOVE == pMsg->message )
{
if(!m_bMouseOver)
{
TRACE(_T("Mouse enter\n"));
m_bMouseOver = TRUE;
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.dwFlags = TME_HOVER | TME_LEAVE;
tme.hwndTrack = pMsg->hwnd;
tme.dwHoverTime = HOVER_DEFAULT;
::TrackMouseEvent(&tme);
}
}
else if( WM_MOUSELEAVE == pMsg->message )
{
TRACE(_T("Mouse Leave!\n"));
m_bMouseOver = FALSE;
}
return CHtmlView::PreTranslateMessage(pMsg);
}20分太少了啊,小伙子。
适当加点分吧
(二),在#include <afxwin.h>前,加一行代码#define _WIN32_WINNT 0x0400
(三),在CHtmlCtrlView中增加一个成员变量:bool m_bMouseOver,并在构造函数中赋初值为false。
(四),重写CHtmlCtrlView::PreTranslateMessage函数,代码如下:
BOOL CHtmlCtrlView::PreTranslateMessage(MSG* pMsg)
{
if( WM_MOUSEMOVE == pMsg->message )
{
if(!m_bMouseOver)
{
TRACE(_T("Mouse enter\n"));
m_bMouseOver = TRUE;
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.dwFlags = TME_HOVER | TME_LEAVE;
tme.hwndTrack = pMsg->hwnd;
tme.dwHoverTime = HOVER_DEFAULT;
::TrackMouseEvent(&tme);
}
}
else if( WM_MOUSELEAVE == pMsg->message )
{
TRACE(_T("Mouse Leave!\n"));
m_bMouseOver = FALSE;
}
return CHtmlView::PreTranslateMessage(pMsg);
}20分太少了啊,小伙子。
适当加点分吧