MFC新建内部消息

2023-11-11

提示:记录一下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类中分别加了,

BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)

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

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

    return 0;
}

 和

afx_msg LRESULT AddNum(WPARAM w, LPARAM l);

但是,

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

二、第二阶段

1.看bilibili视频

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

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

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

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

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);
		}

现在可以触发消息了。


总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC新建内部消息 的相关文章

  • 混合 MFC 和 WPF:模态对话框

    我使用 C CLI 界面层将 C WPF 对话框添加到现有的 C MFC 应用程序 我一切正常 只是我遇到了形式问题 例如 MFC 应用程序使用 ShowDialog 显示 WPF 对话框 按预期工作 该 WPF 对话框显示使用 DoMod
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • 第四节 LVGL部件使用

    LVGL的编程思想 LVGL采用的是面向对象的编程思想 以抽象的类来实例化不同的对象 部件 C语言中没有 类 的概念 LVGL以结构体的形式来实现 类 的思维 LVGL 基础对象 基础对象简介 基础对象 lv obj 可以作为父对象 来创建
  • L2-2 病毒溯源PTA

    病毒容易发生变异 某种病毒可以通过突变产生若干变异的毒株 而这些变异的病毒又可能被诱发突变产生第二代变异 如此继续不断变化 现给定一些病毒之间的变异关系 要求你找出其中最长的一条变异链 在此假设给出的变异都是由突变引起的 不考虑复杂的基因重
  • SAS(十二)PROC步

    SAS 十二 PROC步 Proc 用在proc步的开头并规定用户使用的SAS过程名字及其他信息 Var 规定用这个过程分析的一些变量 Model 规定在模型中类似表示因变量 左 和自变量 右 的这样一些变量及其他信息 Weight 规定一
  • 【Token+Vue3】token无感刷新

    token刷新介绍 单token 用于登录判断 toekn过期自动刷新 拒绝一切前端判断token 数据库存储token最后刷新时间与刷新次数 刷新次数上限20次 未登录3天需重新登录来刷新token token刷新规则 token过期自动
  • git命令行提交代码至仓库

    欢迎关注 无量测试之道 公众号 回复 领取资源 Python编程学习资源干货 Python Appium框架APP的UI自动化 Python Selenium框架Web的UI自动化 Python Unittest框架API自动化 资源和代码
  • 任务3 实现用户和物品的相似性计算

    任务3 实现用户和物品的相似性计算 根据协同过滤基础资料当中的相似度的定义 主要有以下几种 由于下面三种相似度的计算涉及到大量的矩阵运算 我采用了pytorch来实现 物品和用户计算相似度其实是一样的 只需要将打分矩阵转置一下即可 下面我就
  • SpringBoot 整合 Shiro 常见配置

    目录 一 Shiro 基础解释 过滤器 AOP 实现安全认证权限管理逻辑 了解 Shiro 的组织架构 二 SpringBoot 整合 Shiro 1 在项目中使用 Shiro 需要配置的地方 2 代码示例 引入依赖 请求接口 自定义 Re
  • 为什么要专门出现GPU来处理图形工作?

    GPU英文名称为Graphic Processing Unit GPU中文全称为计算机图形处理器 1999年由NVIDIA公司提出 一 GPU概述 GPU这一概念也是相对于计算机系统中的CPU而言的 由于人们对图形的需求越来越大 尤其是在家
  • Fsm3s

    See also State transition logic for this FSM The following is the state transition table for a Moore state machine with
  • 关于input type = "file" 样式的美化

    首先
  • 【原创】图像处理第5弹:面部表情识别--微笑

    一 前言 mediapipe模块还提供了面部468个特征点的检测 所以拿来试试做一个面部表情的检测 这次要实现两个目标 1 面部检测 2 微笑表情检测 二 算法原理 1 面部检测 依旧是采用谷歌的mediapipe模块来获取面部的468个特
  • group discussion群面技巧

    群面 又叫无领导小组面试 是企业现在常用的一种面试形式 顾名思义 小组中 每一个面试者都是平等的 需要通过自己的努力 争取到小组公认的角色 并为小组讨论结果 贡献自己的力量 在这个过程中 展示给面试官的是你各方面的能力和素质 分析问题能力
  • MATLAB 绘图基础

    1 设置图片大小 MATLAB中分别用gcf和gca表示 如 set gcf unit centimeters position a b c d 对图形的位置及大小进行设置 单位为厘米 大小为c 厘米 d 厘米 图形起点坐标为 a厘米 b厘
  • 用python写个手势识别功能

    我可以提供一些指导 但是具体的实现还是要看你自己 首先 可以使用OpenCV来获取视频图像 然后使用机器学习技术 如深度学习 来识别手势 接下来 可以使用Python中的各种库 如NumPy SciPy等 来实现图像处理功能 以便实现手势识
  • Arduino智能小车——拼装篇

    Arduino智能小车 拼装篇 Arduino智能小车系列教程时空门 Arduino智能小车 拼装篇 点击跳转 Arduino智能小车 测试篇 点击跳转 Arduino智能小车 调速篇 点击跳转 Arduino智能小车 超声波避障 点击跳转
  • vue js-table2excel 导出excel 可带多张图片

    1 安装js table2excel插件 npm install js table2excel 2 使用 2 1 引入 import table2excel from js table2excel 2 2 导出函数 function exp
  • Docker部署skywalking9.2版本

    注意使用docker部署skywalking和使用tar包部署有点不一样OAP和UI需要分别部署原因是 SkyWalking UI 和 OAP 是 SkyWalking 的两个主要组件 它们之间的关系是前端和后端的关系 SkyWalking
  • windows下环境变量配置后没生效,不重启电脑的解决办法

    本篇文章主要讲解windows配置了环境变量但没有生效的原因及不重启电脑的解决办法 作者 任聪聪 配置环境变量后显示命令不存在 找不到 现象如下 主要原因 windows配置完毕环境变量 由于某种原因没有即时的同步更新 这可能是注册表没有即
  • 解决conda无法创建环境

    想用Python36的环境来做另一个项目 结果创建一直报错 试过在命令台创建 在anaconda界面里面创建 在Pycharm里面创建都失败了 后来查询才发现可能是镜像源的问题 报错情况 解决方法 更改在C Users 16340的 con
  • MFC新建内部消息

    提示 记录一下MFC新建内部消息的成功过程 文章目录 前言 一 第一阶段 二 第二阶段 三 第三阶段 总结 前言 先说一下基本情况 因为要在mapview上增加一个显示加载时间的功能 然后发现是要等加载完再显示时间 显示在主窗口 所以就是在