The following code works for querying all records in a tree structure but
USHORT usParentCmd = CMA_FIRST, usChildCmd; PUSERREC purParent = NULL, purChild; for( ; ; ) { purParent = (PUSERREC) WinSendMsg( hwndCnr, CM_QUERYRECORD, MPFROMP( purParent ), MPFROM2SHORT( usParentCmd, CMA_ITEMORDER ) ); if( !purParent ) break; DoWhatever( purParent ); usChildCmd = CMA_FIRSTCHILD; purChild = NULL; for( ; ; ) { purChild = (PUSERREC) WinSendMsg( hwndCnr, CM_QUERYRECORD, MPFROMP( purChild ), MPFROM2SHORT( usChildCmd, CMA_ITEMORDER )); if( !purChild ) break; DoWhatever( purChild ); usChildCmd = CMA_NEXT; } usCmdParent = CMA_NEXT; }
Credit: Rick Fishman