用SPY++观察:
这是个MDI程序,最外层MDI主框架的窗口名称已知-“MDIMainFrame” ---A
然后,其下有个 Class Name 为:MDIClient 的窗口 -----------B
然后,其下有个 标题为:“hSDIClient”的窗口  ------------C
然后,其下有个 Class Name 为:AfxFrameOrView70 的窗口  -------D
然后,其下有个 Class Name 为:SysListView32 的窗口 ---------E
现在有两个问题:
1、如何准确地获取该 SysListView32 窗口E的句柄???
2、在 “hSDIClient” C窗口的焦点在它的父窗口B之下时(即我点击了其父窗口B后,再FindWindowEx、MoveWindow),我无法对其C进行MoveWindw,所以,我怀疑,我使用FindWindwEx并没有正确得到其C句柄。测试通过马上给分。

解决方案 »

  1.   

    [email protected]
    方便的话给我看看
      

  2.   

    楼上知道:AfxFrameOrView70 是什么玩意吗?另,我自己编个单文档,派生自CListView的程序,可以通过发送消息来添加List中的项。
    但是,上面所说的程序却似乎不行。难道程序会有什么保护不成?还有,上述问题2更加严重了,当B在顶层时,我居然无法获得A B C D的句柄。
      

  3.   

    还有,是不是可以通过EnumWindow的方法来,哪位可以具体讲一下用法,
    EnumWindow可以找到CListView(CListCtrl)吗???
      

  4.   

    用FindWindowEx()应该没问题,你可以看看每个找到的窗口的句柄跟SPY++查到的对应的句柄是否一致,哪个不一样就是哪里出问题了。
      

  5.   

    hTemp=FindWindowEx(GetDesktopWindow(),0,"MDIMainFrame","");
    hTemp=FindWindowEx(hTemp,0,"MDIClient","");
    hTemp=FindWindowEx(hTemp,0,NULL,"hSDIClient");
    hTemp=FindWindowEx(hTemp,0,"AfxFrameOrView70","");
    hTemp=FindWindowEx(hTemp,0,"SysListView32","");
    试试看!
    正如hyamw(林锋)所说,用SPY++监视,完全可以找到问题出在哪
      

  6.   

    AfxFrameOrView70是Class Name.你不是说的很明白吗?
    就是注册的类名,就如你看到cedit控件类名为edit一样.
    可能有其他含义(比如显示一些额外的信息,由代码作者决定)
    当然你也可以自己做一个.
      

  7.   

    多谢各位,已经解决,
    妈的,这个破程序,主窗口标题会变。
    所以,只有EnumWindows啦。
      

  8.   

    各位可以到
    http://community.csdn.net/Expert/topic/3785/3785172.xml?temp=.3952906
    多拿分。以后还请各位多多捧场。
      

  9.   

    试试indWindowEx()和EnumWindows()