MFC新建内部消息

提示:记录一下MFC新建内部消息的成功过程

文章目录


前言

先说一下基本情况,因为要在mapview上增加一个显示加载时间的功能。然后发现是要等加载完再显示时间,显示在主窗口。所以就是在子线程中发送消息给窗口的问题。查了不好资料,最后实现了。


提示:以下是本篇文章正文内容,下面案例可供参考

一、第一阶段

先是百度的,知道了异步消息postMessage,::PostMessage(hWinHandle, ADD_NUM, 1, 1);决定要postmessage发送消息。一开始的写法是::PostMessage(NULL, ADD_NUM, 0, 0),同时创建了ADD_NUM,即#define ADD_NUM (WM_USER+101)。然后在CMainDlg类中分别加了,

cpp 复制代码
BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)

    ON_COMMAND(ADD_NUM, &CMainDlg::AddNum)
END_MESSAGE_MAP()

cpp 复制代码
LRESULT CMainDlg::AddNum(WPARAM w, LPARAM l)
{
    MessageBox(_T("输入经纬度值不正确!"));

    return 0;
}

cpp 复制代码
afx_msg LRESULT AddNum(WPARAM w, LPARAM l);

但是,

加上以上的代码调试没有用。

二、第二阶段

1.看bilibili视频

下班路上和下班到家看了大衣哥的b站视频,根据他的代码重新确认了一下这个方案的可行性,而且改了一个错误,即这边要改成

cpp 复制代码
BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)

    ON_MESSAGE(ADD_NUM, &CMainDlg::AddNum)
END_MESSAGE_MAP()

第二天早上上班改了试了一下,还是不能触发消息。

但是这时候已经确定是因为没有获取窗口句柄的原因,其他地方都对比了基本和大衣哥视频是一致的。

所以接下来的任务就是找到一个能在子线程获取窗口句柄的方法。

三、第三阶段

1.继续百度

搜到了这个帖子:MFC之使用FindWindow函数获取指定窗口句柄进行窗口操作(实测:关闭Windows的格式化弹窗)_mfc findwindow_kifea的博客-CSDN博客

根据他的代码看了一下差别,最重要的是它提供了一个新的获取句柄的方法。

获取窗口类名或窗口名 的方法(spy++使用方法-百度经验

根据他的方法,是在vs工具菜单栏下,点击spy++按钮,

然后进入spy++菜单

点击 spy++ 工具栏中的 望远镜 图标,弹出一个"窗口搜索"的对话框。在"窗口搜索"对话框中,鼠标左键在 查找程序工具 后面的 图标 处按下不放,将此图标拖移到我们想要知道信息的窗口内,再松开鼠标。

"窗口搜索"对话框内将显示该要查找信息的窗口的句柄、标题和类名。查看完毕后,单击确定。

然后再代码中修改获取句柄的代码

cpp 复制代码
HWND hWinHandle = NULL;
		WNDCLASS m_WindClass1;	//隐藏窗口类
		m_WindClass1.lpszClassName = _T("MapViewer 1.0001(build 0001)");

		::RegisterClass(&m_WindClass1);

		hWinHandle = ::FindWindow(_T("#32770"), _T("MapViewer 1.0001(build 0001)"));
		if (hWinHandle)
		{
			::PostMessage(hWinHandle, ADD_NUM, 1, 1);
		}

现在可以触发消息了。

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
ue星空17 分钟前
UEC++ 创建默认子对象CreateDefaultSubobject
c++
caron419 分钟前
c++ -- 循环依赖解决方案
java·c++·算法
猫头虎43 分钟前
Rust评测案例:Rust、Java、Python、Go、C++ 实现五大排序算法的执行时间效率比较(基于 OnlineGDB 平台)
java·开发语言·c++·python·golang·rust·排序算法
上去我就QWER2 小时前
Qt中的QShortcut:高效键盘快捷方式开发指南
开发语言·c++·qt
QT 小鲜肉3 小时前
【C++基础与提高】第二章:C++数据类型系统——构建程序的基础砖石
开发语言·c++·笔记
卡提西亚9 小时前
C++笔记-25-函数模板
c++·笔记·算法
R&L_2018100110 小时前
C++之内联变量(Inline Variables)
c++·c++新特性
IT阳晨。10 小时前
【QT开发】交叉编译QT程序在ARMLinux平台上运行
c++·qt·交叉编译·armlinux·代码移植
派大星爱吃猫11 小时前
C++隐藏的this指针(详解)
c++·this指针
虾..11 小时前
C++ 哈希
开发语言·c++·哈希算法