码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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类中分别加了,

    1. BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)
    2. ON_COMMAND(ADD_NUM, &CMainDlg::AddNum)
    3. END_MESSAGE_MAP()

    和

    1. LRESULT CMainDlg::AddNum(WPARAM w, LPARAM l)
    2. {
    3.     MessageBox(_T("输入经纬度值不正确!"));
    4.     return 0;
    5. }

     和

    afx_msg LRESULT AddNum(WPARAM w, LPARAM l);

    但是,

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

    二、第二阶段

    1.看bilibili视频

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

    1. BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)
    2.     ON_MESSAGE(ADD_NUM, &CMainDlg::AddNum)
    3. END_MESSAGE_MAP()

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

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

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

    三、第三阶段

    1.继续百度

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

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

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

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

    然后进入spy++菜单

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

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

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

    1. HWND hWinHandle = NULL;
    2. WNDCLASS m_WindClass1; //隐藏窗口类
    3. m_WindClass1.lpszClassName = _T("MapViewer 1.0001(build 0001)");
    4. ::RegisterClass(&m_WindClass1);
    5. hWinHandle = ::FindWindow(_T("#32770"), _T("MapViewer 1.0001(build 0001)"));
    6. if (hWinHandle)
    7. {
    8. ::PostMessage(hWinHandle, ADD_NUM, 1, 1);
    9. }

    现在可以触发消息了。


    总结

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

  • 相关阅读:
    Jetson Xavier NX 试玩 (二)
    Momenta“飞轮式L4”接受夜间长尾场景「像素级」挑战,表现堪比老司机
    第二十一章 源代码文件 REST API 参考(三)
    python经典百题之乒乓球比赛
    ISAC通信感知一体化学习记录
    网络编程day5作业
    4 个 Linux 技巧让工作效率翻倍
    【牛客 - 剑指offer】JZ84 二叉树中和为某一值的路径(三)
    Linux安装与卸载Jenkins
    企业知识库构建:关于企业知识库及知识平台搭建的重要性!
  • 原文地址:https://blog.csdn.net/2301_77560238/article/details/132710120
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号