MFC新建内部消息

这篇具有很好参考价值的文章主要介绍了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类中分别加了,

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++按钮,

MFC新建内部消息,C++,c++,mfc

然后进入spy++菜单

MFC新建内部消息,C++,c++,mfc

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

现在可以触发消息了。

MFC新建内部消息,C++,c++,mfc


总结

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

到了这里,关于MFC新建内部消息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微软MFC技术中消息的分类

     我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊MFC技术中消息的分类。 微软Windows中的消息虽然很多,但是种类并不繁杂,大体上有3种:窗口消息、命令消息和控件通知消息。 窗口消息是系统中最为常见的消息,它是指由操作系统和控制其他窗口所使用的消息。

    2024年02月13日
    浏览(24)
  • 微软MFC技术中的消息循环

     我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊微软MFC技术中的消息循环。 在很多windows程序中,都有如下代码: 在上面代码的第30行中,提到了循环。只有消息不断地被循环。才会实时得到窗口的当前状态。否则按照程序的顺序执行结构,此窗口只会闪下就被

    2024年02月13日
    浏览(24)
  • MFC动态创建控件与建立消息响应

    以动态创建按钮为例,新建MFC工程 在解决方案管理器,Resource.h中编辑,添加一个IDC_BUTTON0的资源ID

    2024年02月14日
    浏览(31)
  • 微软MFC技术中的消息队列及消息处理(下)

      我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊微软MFC技术中的消息队列及消息处理。 MFC应用程序中由Windows 系统以消息的形式发送给应用程序的窗口。窗口接收和处理消息之后,把控制返回给Windows。Windows系统在同一时间可显示多个窗口。此系统利用消息队列

    2024年02月16日
    浏览(33)
  • 微软MFC技术中的消息队列及消息处理(上)

    我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊微软MFC技术中的消息队列及消息处理。 MFC应用程序中由Windows 系统以消息的形式发送给应用程序的窗口。窗口接收和处理消息之后,把控制返回给Windows。Windows系统在同一时间可显示多个窗口。此系统利用消息队列来

    2024年02月16日
    浏览(27)
  • MFC与QT的消息机制的区别

    Windows 的消息系统由以下 3 部分组成:          消息队列 :Windows 能够为所有的应用程序维护一个消息队列,应用程序必须从消息队列中获去消息, 然后分派给某个窗体。          消息循环 :通过这个循环机制,应用程序从消息队列中检索消息,再把它分派给适当的

    2024年02月05日
    浏览(27)
  • MFC - 给系统菜单(About Dialog)发消息

    做了一个对话框程序, 在系统菜单(在程序上面的标题栏右击)中有\\\"关于\\\"的菜单. 这个是程序框架自带的, 自己没写代码. 这个Dlg程序, 因为简单, 没加啥菜单. 将授权也放到\\\"关于\\\"对话框中一并处理. 怕用户看不到咋进入\\\"关于\\\"菜单, 在UI上加了一个\\\"关于\\\"的按钮. 在这个按钮实现中

    2024年02月03日
    浏览(27)
  • MFC - 控件的消息和控件的事件(命令)有什么区别?

    MFC的控件都能添加事件处理程序( 类向导称事件为命令 ) 控件的 消息 和控件的**事件(命令)**有什么区别? 事件 可能由多个消息组成, 事件是消息的封装 。控件的事件也是通过消息机制来处理的,所以这两者在 本质上是一样的。函数本身没什么太大区别只不过函数的

    2023年04月13日
    浏览(25)
  • MFC为资源对话框添加消息处理函数和初始化控件

    现在我VC6新建了一个对话框工程;又在资源添加了一个新的对话框,并为新的对话框添加了名为CTestDlg的类; 在主对话框的cpp文件包含#include \\\"TestDlg.h\\\"; 在主对话框的cpp文件的OnInitDialog()成员函数中,添加2句,     CTestDlg tdlg;     tdlg.DoModal(); 就可以弹出这个对话框; 在新

    2024年01月18日
    浏览(36)
  • MFC 简单的SendMessage子窗口调用主窗口函数(消息映射)的实现

    只说实现,不讲原理 环境:VS2022 community版 0.先建立一个全局调用的主对话框的指针g_pMainThis; 1.建立一个基于对话框的MFC工程; 2.在预编译头文件“phc.h”或“stdafx.h”定义消息调用的宏,其值要“WM_USER+100”以上; 3.在主对话框类建立消息映射的功能实现函数; 4.建立一个子

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包