zoukankan      html  css  js  c++  java
  • SendMessage原理初探

    今天跟踪一下SendMessage的实现。

    用向导先创建一个Windows application。

    向导生成了一个简单的窗口,如下。

    在File菜单添加SendMessage,顺便添加一个PostMessage,点击菜单打开关于对话框,加入已下代码。

    用WinDbg调试,点击SendMessage,程序断在IDM_ABOUT的时候查看堆栈。

    原来SendMessage是通过内部调用SendMessageWorker通过InternalCallWinProc直接调用的WndProc!!

    跟踪到调用InternalCallWinProc的地方看一下。

    0x111就是WM_COMMAND,果然是直接把参数传给了InternalCallWinProc

     

    不用说,InternalCallWinProc肯定是调用了WndProc

    。。。。大概就是这么个流程,所以以后有人问SendMessage怎么实现,简单回单一句话就是直接调用WndProc,如下图。

    注:只针对同线程调用。

    所以将代码这样修改后,功能和SendMessage看起来并没有区别。

  • 相关阅读:
    构建之法阅读笔记02
    学习进度条
    构建之法阅读笔记01
    c++ 与C的区别
    c++ 菜单动态效果
    c++ 方框中绘制菜单代码
    c++ 绘制方框
    c++ 条件编译
    c++ 预处理和多重替换
    c++ 文件共享打开
  • 原文地址:https://www.cnblogs.com/cartler/p/3495990.html
Copyright © 2011-2022 走看看