Ignore:
Timestamp:
Sep 22, 1999, 10:58:36 AM (26 years ago)
Author:
sandervl
Message:

Rene Pronk's WM_(SYS)KEYUP/DOWN changes + SvL's dialog changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/win32dlg.cpp

    r985 r1005  
    1 /* $Id: win32dlg.cpp,v 1.2 1999-09-19 18:33:31 sandervl Exp $ */
     1/* $Id: win32dlg.cpp,v 1.3 1999-09-22 08:58:35 sandervl Exp $ */
    22/*
    33 * Win32 Dialog Code for OS/2
     
    918918}
    919919//******************************************************************************
    920 //TODO:
     920// GetNextDlgTabItem32   (USER32.276)
    921921//******************************************************************************
    922922HWND Win32Dialog::getNextDlgTabItem(HWND hwndCtrl, BOOL fPrevious)
    923923{
    924     return 0;
    925 }
    926 //******************************************************************************
    927 //TODO
     924 Win32BaseWindow *child, *nextchild, *lastchild;
     925 HWND retvalue;
     926
     927    if (hwndCtrl)
     928    {
     929        child = GetWindowFromHandle(hwndCtrl);
     930        if (!child)
     931        {
     932            retvalue = 0;
     933            goto END;
     934        }
     935        /* Make sure hwndCtrl is a top-level child */
     936        while ((child->getStyle() & WS_CHILD) && (child->getParent() != this))
     937        {
     938            child = child->getParent();
     939            if(child == NULL) break;
     940        }
     941
     942        if (!child || child->getParent() != this)
     943        {
     944            retvalue = 0;
     945            goto END;
     946        }
     947    }
     948    else
     949    {
     950        /* No ctrl specified -> start from the beginning */
     951        child = (Win32BaseWindow *)getFirstChild();
     952        if (!child)
     953        {
     954            retvalue = 0;
     955            goto END;
     956        }
     957
     958        if (!fPrevious)
     959        {
     960            while (child->getNextChild())
     961            {
     962                child = (Win32BaseWindow *)child->getNextChild();
     963            }
     964        }
     965    }
     966
     967    lastchild = child;
     968    nextchild = (Win32BaseWindow *)child->getNextChild();
     969    while (TRUE)
     970    {
     971        if (!nextchild) nextchild = (Win32BaseWindow *)getFirstChild();
     972
     973        if (child == nextchild) break;
     974
     975            if ((nextchild->getStyle() & WS_TABSTOP) && (nextchild->getStyle() & WS_VISIBLE) &&
     976            !(nextchild->getStyle() & WS_DISABLED))
     977            {
     978                lastchild = nextchild;
     979                if (!fPrevious) break;
     980            }
     981            nextchild = (Win32BaseWindow *)nextchild->getNextChild();
     982    }
     983    retvalue = lastchild->getWindowHandle();
     984
     985END:
     986    return retvalue;
     987}
     988//******************************************************************************
    928989//******************************************************************************
    929990Win32BaseWindow *Win32Dialog::getDlgItem(int id)
    930991{
     992    for (Win32BaseWindow *child = (Win32BaseWindow *)getFirstChild(); child; child = (Win32BaseWindow *)child->getNextChild())
     993    {
     994        if (child->getWindowId() == id)
     995        {
     996            return child;
     997        }
     998    }
    931999    return 0;
    9321000}
Note: See TracChangeset for help on using the changeset viewer.