m_oTooltip.RelayEvent(&msg)为何响应了并未显示工具栏提示?

BlueOxygenBO 2006-08-10 10:30:45
所创建的dll的非模态对话框的PreTranslateMessage()函数进入不了
也就是不能响应其中的m_oTooltip.RelayEvent(&msg)

所以我在CMyDialog::OnMouseMove(UINT nFlags, CPoint point)中伪造消息,代码如下
MSG msg;
msg.hwnd = this->GetSafeHwnd();
msg.message = WM_MOUSEMOVE;
msg.wParam = WPARAM(nFlags);
msg.time = 0;
msg.pt.x = point.x;
msg.pt.y = point.y;
msg.lParam = MAKELPARAM(LOWORD(point.x), LOWORD(point.y));
m_oToolTipCtrl.Activate(TRUE);
m_oToolTipCtrl.RelayEvent(&msg);

msg的各个参数应该是正确的,但是实际上还是没有显示工具栏提示
不知道为什么
各位大侠救救我吧
...全文
539 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueOxygenBO 2006-08-11
  • 打赏
  • 举报
回复
我是重载了这个虚函数
问题是重载后的函数进不了
mynamelj 2006-08-10
  • 打赏
  • 举报
回复
PreTranslateMessage这个函数必须是虚函数
BlueOxygenBO 2006-08-10
  • 打赏
  • 举报
回复
PreTranslateMessage就是不能进入,所以很郁闷阿
至于RelayEvent的位置,一定要在PreTranslateMessage才能正确执行么?
它的本意就是响应一些鼠标操作阿
那么对于MouseMove消息,应该是符合它的参数需求的
goodboyws 2006-08-10
  • 打赏
  • 举报
回复
RelayEvent的位置不合适,PreTranslateMessage应该可以进入,这和dll/非模式没关系
BlueOxygenBO 2006-08-10
  • 打赏
  • 举报
回复
在OnInitDialog中已经调用EnableToolTips(TRUE)
但是就如开始所说, CMyDialog::PreTranslateMessage()进入不了
所以才伪造了消息来调用
mynamelj 2006-08-10
  • 打赏
  • 举报
回复
先在OnInitDialog中调用EnableToolTips(TRUE)

然后:
BOOL CMyDialog::PreTranslateMessage(
MSG* pMsg
)
{
m_oToolTipCtrl.RelayEvent(pMsg);

CDialog::PreTranslateMessage(pMsg);
}
BlueOxygenBO 2006-08-10
  • 打赏
  • 举报
回复
能进去的
cleverwyq 2006-08-10
  • 打赏
  • 举报
回复
MouseMove能进去么
mynamelj 2006-08-10
  • 打赏
  • 举报
回复
因为CWnd::PreTranslateMessage是虚函数,你要想在子类接替它进行处理就必须复盖它
BlueOxygenBO 2006-08-10
  • 打赏
  • 举报
回复
PreTranslateMessage这个函数必须是虚函数
这句话是什么意思?

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧