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看起来并没有区别。

  • 相关阅读:
    cf854B Maxim Buys an Apartment
    Snuke's Coloring 2-1
    P1087 FBI树
    Card Game for Three
    Many Formulas
    排队
    苹果消消乐(尺取法)
    猴子选大王(约瑟夫)
    进制转化
    UIProgress控件的属性和方法
  • 原文地址:https://www.cnblogs.com/cartler/p/3495990.html
Copyright © 2011-2022 走看看