CWindow和CWnd类的SendMessage是直接将消息发送给该类所代表的窗口。SDK的SendMessage有一个hWnd的参数,应用这个参数可以将消息发给任何窗口。后两个问题均可使用SDK的函数。

解决方案 »

  1.   

    直接使用SDK中的函数就可以了。
      

  2.   

    只要有消息接收窗口的窗口句柄,都可以使用SDK的SendMessage函数来发送消息。CWindow和CWnd类,自身包含了窗口句柄,它的SendMessage是发送消息给类所表示的窗口的。
      

  3.   

    CWindow类是用在ATL应用中的在正规的MFC程序中并不使用,在CWnd类中,SendMessage是指在同一个窗口中不同控制之间相互发送消息,所以,CWnd类中的SendMessage与Win32SDK中的SendMessage相比,缺少一个窗口句柄参数。因为CWnd默认使用了自己当前窗口的句柄。如果,在MFC应用中,同一进程内,不同窗口之间发送消息,就应使用Win32SDK中的SendMessage,注意在使用时加:域作用符::。进程间通信是Windows中的一个热门话题,叫做IPC机制,一般来讲不使用直接消息传递,如要使用的话也应用PostMessage将消息发到Windows的系统消息队列中。IPC机制应用类型很多,较常用的有DDE(动态数据交换);OLE(对象连接与嵌入);SOCKET(TCP/IP,SPX/IPX插座);PIPE(有名管道。注意,匿名管道是进程内通信用的);MAILSLOT邮件槽;等等。祝你愉快!
      

  4.   


      简单地说,当在CWindow或CWnd派生出来的类内部传递消息,用它们各自的SendMessage就最方便,只要SendMessage(WM_XXXXXX)就行了,就算是在别的类,只要获得其CWnd(CWindow)指针,就可以方便地使用SendMessage。至于SDK的SendMessage,如果你获得了窗口的HWND,你就可以向这个窗口发送消息了。
      也就是说,如果你获得了窗口的指针,当然就使用CWnd(CWindow)的SendMessage。如果你获得了窗口的句柄(HWND),当然就使用SDK的SendMessage。
      

  5.   

    你为何不看一下MFC的源代码,CWnd的SendMessage就是封装的SDK的::SendMessage;