首页
社区
课程
招聘
[求助]c++6.0的动态数组如何加入多个句柄?
发表于: 2008-3-10 00:09 6286

[求助]c++6.0的动态数组如何加入多个句柄?

2008-3-10 00:09
6286
c++6.0中如何用EnumWindows?  关键是在回调函数中的句柄存放问题.

BOOL CALLBACK EnumWindowsProc(
  HWND hwnd,      // handle to parent window
  LPARAM lParam   // application-defined value
)
{

////////////////////
  在这个地方如何动态加入句柄????

if (hwnd>0) {
   动态数组加入数组(hwnd);
    }


↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

以上示例该怎么在C++中写代码??? 需要c++6.0通过
}

  EnumWindows(( WNDENUMPROC ),0);

请求大家的帮助....我是c++初学者.只要大侠您能给我个简单的提示代码就行.

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
/* 全局变量 */
HWND ahWnd[256];
int i;

BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lParam)
{
    if (hWnd)
    {
      ahWnd[i] = hWnd;
      i++;
      return TRUE;
    }else
        return FALSE;
}
2008-3-10 09:22
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢 小虾版主...非常感谢!~
2008-3-10 10:38
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cxd
4
既然是在用C++,那尽量不要用全局变量吧。

还是吧HWND ahWnd[256]; int i; 封装到自定义结构体中,通过LPARAM lParam参数传递比较好。

既然是用C++了,我觉得用标准C++库的类比如vector来代替数组比较好。
2008-3-10 13:09
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
HWND aHwnd[256];
int i;

BOOL CALLBACK EnumWindowsProc(
                                                          HWND hwnd,      // handle to parent window
                                                          LPARAM lParam   // application-defined value
)
{
        if (hwnd)
        {
                aHwnd[i]=hwnd;
                printf("%d\n",aHwnd[i]);
                i++;
                return TRUE;
        }else
        {
                return FALSE;
        }

       
}

::EnumWindows((WNDENUMPROC)EnumWindowsProc,0);

--------------------Configuration: hwnd - Win32 Debug--------------------
Compiling...
hwnd.cpp
C:\Documents and Settings\cd\桌面\C++\hwnd\hwnd.cpp(5) : error C2146: syntax error : missing ';' before identifier 'aHwnd'
C:\Documents and Settings\cd\桌面\C++\hwnd\hwnd.cpp(5) : error C2501: 'HWND' : missing storage-class or type specifiers
C:\Documents and Settings\cd\桌面\C++\hwnd\hwnd.cpp(5) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

hwnd.exe - 3 error(s), 0 warning(s)

求版主和各位大大再帮帮忙。。。。
2008-3-10 18:37
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
6
你没有包含#include <windows.h>文件?

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#pragma comment(lib,"user32.lib");

HWND g_ahWnd[256];
int i;

BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
        if (hWnd)
        {
                 g_ahWnd[i] = hWnd;
                 printf("%08X\n",g_ahWnd[i]);
                 i++;
                 return TRUE;
        }else
                return FALSE;
}

int main()
{
        EnumWindows(&EnumWindowsProc,0);
        system("pause");
        return 0;
}
2008-3-10 20:15
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
小虾版主。。。。为什么在 Debug 调试模式会出现一个错误   而Release 却不会?

#include <stdio.h>
#include <windows.h>

HWND *aHwnd=new HWND[256];
int i=1;
char *tit=new char[256];

BOOL CALLBACK EnumWindowsProc(
                                                          HWND hwnd,      // handle to parent window
                                                          LPARAM lParam   // application-defined value
)
{
        if (hwnd)
        {
               
                aHwnd[i]=hwnd;
                GetWindowTextA(aHwnd[i],(LPSTR)tit,255);
                printf("%d: %s\n",aHwnd[i],tit);
               
                i++;
               
                return TRUE;
        }else
        {
                delete tit;
                delete aHwnd;
                return FALSE;
        }

       
}

int main()
{
::EnumWindows((WNDENUMPROC)EnumWindowsProc,0);
delete aHwnd;
delete tit;

return 0;
}
2008-3-10 23:28
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
将你的代码调试了一下,没发现什么错误。你的错误代码发上来看一看?
2008-3-10 23:47
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
--------------------Configuration: hwnd - Win32 Debug--------------------

hwnd.exe - 0 error(s), 0 warning(s)

编译时没有错误,但是运行的时候却出现错误,Release模式没有这个问题。

谢谢小虾版主的热心指导。
上传的附件:
2008-3-11 00:08
0
雪    币: 8209
活跃值: (4458)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
10
256个太小了吧,估计是会越界的
2008-3-11 09:35
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
恩...谢谢   果然是数组越界  定义HWND *ahwnd=new HWND[1000]; 就没有问题了
2008-3-11 11:42
0
雪    币: 161
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PFC
12
[QUOTE=cxd;426326]既然是在用C++,那尽量不要用全局变量吧。

还是吧HWND ahWnd[256]; int i; 封装到自定义结构体中,通过LPARAM lParam参数传递比较好。

既然是用C++了,我觉得用标准C++库的类比如vector来代替数组比较好。[/QUOTE]

我也这么认为,调用灵活好的

我的网站关于CSP的打算开始开张了请多多捧场呀
2008-3-18 22:02
0
游客
登录 | 注册 方可回帖
返回
//