EnumChildWindows的用法?

realsweat 2001-02-13 04:10:00
各位,请教一下EnumChildWindows函数的用法
...全文
1461 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
babysloth 2001-02-13
  • 打赏
  • 举报
回复
最简单的办法就是照抄MSDN,在第二个参数前面加个WNDENUMPROC强制类型转换就可以了.
YuHao 2001-02-13
  • 打赏
  • 举报
回复
按标准来说应该是(LPARAM)htm,因为这个函数第三个参数要求是LPARAM(实际就是long类型,换种说法而已).第二个参数也应该用强制类型转换,如EnumChildWindows(hwnd,(ENUMCHILDPROC)EnumChild,(LPARAM)htm)就应该可以通过.
我也不知道htm究竟是什么?我觉得如果是递归的话,一般应该是把参数列表里的lParam继续传递下一层去,除非有特殊需要.
lkzyy 2001-02-13
  • 打赏
  • 举报
回复
而且EnumChildWindows(hwnd, EnumChild, (long)htm);第二个参数是编译通不过的。
它的类型?
lkzyy 2001-02-13
  • 打赏
  • 举报
回复
(long)htm是什麽东东?
随风bj 2001-02-13
  • 打赏
  • 举报
回复
//-------------------------------------
//描述:枚举指定窗口的所有子窗口的回调函数
//-------------------------------------
BOOL CALLBACK EnumChild(HWND hwnd, LPARAM lParam)
{
if(::GetParent(hwnd) != hParentWnd)
return TRUE;
CString strWndName, strHandle, strCaption;
CFindIEDlg *pDlg = (CFindIEDlg *)AfxGetMainWnd();
::GetClassName(hwnd, strWndName.GetBuffer(50), 100);
_itoa((int)hwnd, strHandle.GetBuffer(20), 16); //得到窗口的类名
::GetWindowText(hwnd, strCaption.GetBuffer(50), 50);
strCaption.ReleaseBuffer();
strWndName.ReleaseBuffer();
strHandle.ReleaseBuffer();
strHandle.MakeUpper();
strHandle += "[" + strCaption + "]"+ strWndName;
//-------------------------------------递归算法
hParentWnd = hwnd;
EnumChildWindows(hwnd, EnumChild, (long)htm);
hParentWnd = ::GetParent(hwnd);
//------------------------------------
return TRUE;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧