"The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window..."
注意: "...all top-level windows...",你说的那种对话框不属于top-level window,所以....。要得到所有窗口,在EnumWindowsProc里再EnumChildWindow

解决方案 »

  1.   

    "The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window..."
    注意: "...all top-level windows...",你说的那种对话框不属于top-level window,所以....。要得到所有窗口,在EnumWindowsProc里再EnumChildWindow
      

  2.   

    sizeof(lpszWindowCaption)求得的应该是char*这个指针所占地址的大小,在WIN32中应该是4,strlen()求的才是字符串的长度,这里你也不能用,你应该把这个参数改为128(或127吧)
      

  3.   

    To CoolHg:
    你错了,这是可以的。
    char lpszWindowCaption[128] = "\0";
    ShowMessage(IntToStr((int)sizeof(lpszWindowCaption)));
    我用的环境是C++Builder.
    应该没问题吧。
    不过,我也有些疑惑,为什么sizeof(lpszWindowCaption)会等于128;
    如果 定义为 char *结果当然是一个32位的指针,占4个字节;可能这个sizeof(数组名)返回的就是数组的大小!
    希望高手深入解析!!!
      

  4.   


    sizeof(lpszWindowCaption)会等于128
    是因为你的这一句:
    char lpszWindowCaption[128] = "\0";
      

  5.   

    TO dingsg:
    再说清楚一点,再深入一点,ok>?
      

  6.   

    你只用定义
    char lpszWindowCaption[128];
    sizeof(lpszWindowCaption)就等于128,因为这是告诉编译器你要定义一有128个元素的字符数组。这样编译器就会分配128个字节的内存而不管你往里放什么东西。
      

  7.   

    谢过leer
    感谢dingsg,coolhg,wjf参与!
      

  8.   


    感谢leer,dingsg,coolhg,wjf参与!