特殊窗口

以前我们有时候会创建一个隐藏的窗口, 然后让他们和其他窗口进行通信. 确实有这种需求啊. 今天在看某软件的时候发现一个办法. 当然这个办法在MSDN里面
就有的. 只是以前没有用过. 也没听人说起过.

CreateWindowExW(0, L”WndClass”, L”WndName”, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);

父窗体指定为HWND_MESSAGE常量,它可以收发消息,没z-order,,不可遍历且不无能接收到广播消息仅做简单的消息分发.我们可以在创建窗体时指定其父窗体为HWND_MESSAGE常量也可以将现有窗体通过SetParent将父窗体设为HWND_MESSAGE常量从而达到变成消息窗体的目的.

结论: 消息窗体窗体是不可见,在SPY++窗体中可以找到, 但同步不到也就是说没有被遍历到.发出广播消息(RegisterWindowMessage注册的消息)后没有收到.WM_COPYDATA 消息必须由SendMessage 函数发送(同步方式,系统为了确保数据有效)

以后创建背后通信的窗口就使用这个了!

网友评论:

  1. hiu 说:

    不可以发线程消息吗

  2. 特殊窗口 | 小陈's blog 说:

    […] [原文地址] 标签: 编程 关于本文 […]

  3. 小色 说:

    原来有专用的呀,以后就用这个啦,之前一直觉得后台有个窗口不舒服。

发表评论


Verify Code   If you cannot see the CheckCode image,please refresh the page again!