当前位置: 首页 > news >正文

MFC dll无法显示tooltip问题

需要在APP 代码中添加hock

class CTestApp : public CWinApp
{
public:CTestApp();HHOOK m_hHook;
// 重写
public:static LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam);virtual BOOL InitInstance();DECLARE_MESSAGE_MAP()virtual int ExitInstance();
};

```cpp
#include "stdafx.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endifBEGIN_MESSAGE_MAP(CTestApp, CWinApp)
END_MESSAGE_MAP()// CTestApp 构造CTestApp::CTestApp()
{// TODO:  在此处添加构造代码,// 将所有重要的初始化放置在 InitInstance 中
}// 唯一的一个 CTestApp 对象CTestApp theApp;// CTestApp 初始化LRESULT CALLBACK CTestApp::GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{AFX_MANAGE_STATE(AfxGetStaticModuleState());LPMSG lpMsg = (LPMSG)lParam;if (AfxGetApp()->PreTranslateMessage(lpMsg)){lpMsg->message = WM_NULL;lpMsg->lParam = 0L;lpMsg->wParam = 0;}// Passes the hook information to the next hook procedure in// the current hook chain.return ::CallNextHookEx(theApp.m_hHook, nCode, wParam, lParam);
}BOOL CTestApp::InitInstance()
{CWinApp::InitInstance();AfxEnableControlContainer();BOOL bol = AfxOleInit();//初始化控件环境 AfxEnableControlContainer(); HRESULT rs = CoInitialize(NULL);m_hHook = ::SetWindowsHookEx(WH_GETMESSAGE,GetMessageProc,AfxGetInstanceHandle(),GetCurrentThreadId());return TRUE;
}int CTestApp::ExitInstance()
{// TODO:  在此添加专用代码和/或调用基类UnhookWindowsHookEx((HHOOK)m_hHook);return CWinApp::ExitInstance();
}

在实际对话框代码中先定义:

CToolTipCtrl m_ToolTip;

在适当的地方初始化

if (m_ToolTip.m_hWnd == NULL)
{m_ToolTip.Create(this);m_ToolTip.Activate(TRUE);m_ToolTip.SetTipBkColor(RGB(255, 255, 255));m_ToolTip.AddTool(GetDlgItem(IDC_ALG_TOOL_COMBO), _T(""));m_ToolTip.AddTool(GetDlgItem(IDC_COMBO_IMAGE), _T(""));
}

重写PreTranslateMessage

BOOL CTestDialog::PreTranslateMessage(MSG* pMsg)
{// TODO:  在此添加专用代码和/或调用基类switch (pMsg->message){case WM_MOUSEMOVE:m_ToolTip.RelayEvent(pMsg);break;default:break;}// 不要对消息拦截,按实际情况处理return FALSE;
}

http://www.mrgr.cn/news/18368.html

相关文章:

  • 仿论坛项目--第二部分习题
  • 【Next.js 入门指南】5分钟创建你的第一个 Next.js 应用
  • 华为云征文 | 华为云Flexus云服务器X实例之Docker环境下部署JmalCloud个人网盘
  • Linux运维--Firewall防火墙命令以及规则等详解(全)
  • 奉加微PHY6233进入DTM模式;TX单音信号;
  • 【高校科研前沿】三峡大学黄进副教授等人在环境科学Top期刊JCP发文:人类活动如何在气候变化下影响和降低生态敏感性:以中国长江经济带为例
  • 基于Python实现AES加密与解密
  • CNN中的注意力机制综合指南:从理论到Pytorch代码实现
  • 大数据系列之:查看Centos服务器用户可以创建的最大线程数、查看系统内核支持的最大线程数、查看系统支持的最大进程数、设置最大线程数限制、查看进程使用的线程数
  • C++系列-STL容器中的for循环遍历方式
  • 华为云征文|基于华为云Flexus X实例部署Redis及案例实践详解
  • MySQL主从同步
  • 沉浸式体验亚马逊云科技上私有化部署零一万物AI大模型
  • 2222. 分糖果(candy)
  • 深度解析MFT损坏:原因、恢复策略与预防措施
  • 监控平台之批量上报
  • 新员工一口气写完了这些C语言例子,领导给他转正了!
  • mysql(查询)
  • 【C++】N卡无法录制,如何下载C++
  • 【软件测试专栏】软件测试 — 用例篇