Index: rostests/apitests/user32/CMakeLists.txt =================================================================== --- rostests/apitests/user32/CMakeLists.txt (revision 73455) +++ rostests/apitests/user32/CMakeLists.txt (working copy) @@ -20,6 +20,7 @@ InitializeLpkHooks.c LoadImage.c LookupIconIdFromDirectoryEx.c + NextDlgItem.c RealGetWindowClass.c RegisterHotKey.c ScrollDC.c Index: rostests/apitests/user32/NextDlgItem.c =================================================================== --- rostests/apitests/user32/NextDlgItem.c (nonexistent) +++ rostests/apitests/user32/NextDlgItem.c (working copy) @@ -0,0 +1,421 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Test for GetNextDlgTabItem, GetNextDlgGroupItem + * PROGRAMMERS: Katayama Hirofumi MZ + */ + +#include +#include +#include + +#include +#include +#include +#include + +#define IDC_TEST1 1 +#define IDC_TEST2 2 +#define IDC_TEST3 3 +#define IDC_END 9 + +static BOOL +OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) +{ + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_TEST1, 0), 0); + return TRUE; +} + +static const char * +GetNameFromID(INT ID) +{ + switch (ID) + { + case rad1: return "rad1"; + case rad2: return "rad2"; + case rad3: return "rad3"; + case psh1: return "psh1"; + case rad5: return "rad5"; + case rad6: return "rad6"; + case rad7: return "rad7"; + case IDOK: return "OK button"; + case IDCANCEL: return "Cancel button"; + default: return "(unknown)"; + } +} + +static const char * +GetNameFromHWND(HWND hwnd) +{ + return GetNameFromID(GetDlgCtrlID(hwnd)); +} + +static void +DoTest1(HWND hwnd) +{ + HWND hCtrl; + HWND hRad1, hRad2, hRad3, hPsh1, hRad5, hRad6, hRad7, hOK, hCancel; + + // check control IDs + hCtrl = GetDlgItem(hwnd, rad1); + ok(GetDlgCtrlID(hCtrl) == rad1, "\n"); + hCtrl = GetDlgItem(hwnd, rad2); + ok(GetDlgCtrlID(hCtrl) == rad2, "\n"); + hCtrl = GetDlgItem(hwnd, rad3); + ok(GetDlgCtrlID(hCtrl) == rad3, "\n"); + hCtrl = GetDlgItem(hwnd, psh1); + ok(GetDlgCtrlID(hCtrl) == psh1, "\n"); + hCtrl = GetDlgItem(hwnd, rad5); + ok(GetDlgCtrlID(hCtrl) == rad5, "\n"); + hCtrl = GetDlgItem(hwnd, rad6); + ok(GetDlgCtrlID(hCtrl) == rad6, "\n"); + hCtrl = GetDlgItem(hwnd, rad7); + ok(GetDlgCtrlID(hCtrl) == rad7, "\n"); + hCtrl = GetDlgItem(hwnd, IDOK); + ok(GetDlgCtrlID(hCtrl) == IDOK, "\n"); + hCtrl = GetDlgItem(hwnd, IDCANCEL); + ok(GetDlgCtrlID(hCtrl) == IDCANCEL, "\n"); + + // get dialog items + hRad1 = GetDlgItem(hwnd, rad1); + hRad2 = GetDlgItem(hwnd, rad2); + hRad3 = GetDlgItem(hwnd, rad3); + hPsh1 = GetDlgItem(hwnd, psh1); + hRad5 = GetDlgItem(hwnd, rad5); + hRad6 = GetDlgItem(hwnd, rad6); + hRad7 = GetDlgItem(hwnd, rad7); + hOK = GetDlgItem(hwnd, IDOK); + hCancel = GetDlgItem(hwnd, IDCANCEL); + + // next + hCtrl = GetNextDlgTabItem(hwnd, hRad1, FALSE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, FALSE); + ok(hCtrl == hRad3, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad3, FALSE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, FALSE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, FALSE); + ok(hCtrl == hRad6, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad6, FALSE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, FALSE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, FALSE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, FALSE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + + // prev + hCtrl = GetNextDlgTabItem(hwnd, hRad1, TRUE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, TRUE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad3, TRUE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, TRUE); + ok(hCtrl == hRad3, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, TRUE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad6, TRUE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, TRUE); + ok(hCtrl == hRad6, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, TRUE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, TRUE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + + // hide + ok(ShowWindow(hRad3, SW_HIDE) != 0, "\n"); + ok(ShowWindow(hRad6, SW_HIDE) != 0, "\n"); + + // next with hidden + hCtrl = GetNextDlgTabItem(hwnd, hRad1, FALSE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, FALSE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, FALSE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, FALSE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, FALSE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, FALSE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, FALSE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + + // prev with hidden + hCtrl = GetNextDlgTabItem(hwnd, hRad1, TRUE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, TRUE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, TRUE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, TRUE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, TRUE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, TRUE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, TRUE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + + // show + ShowWindow(hRad3, SW_SHOWNOACTIVATE); + ShowWindow(hRad6, SW_SHOWNOACTIVATE); + + // next again + hCtrl = GetNextDlgTabItem(hwnd, hRad1, FALSE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, FALSE); + ok(hCtrl == hRad3, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad3, FALSE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, FALSE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, FALSE); + ok(hCtrl == hRad6, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad6, FALSE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, FALSE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, FALSE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, FALSE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + + // prev again + hCtrl = GetNextDlgTabItem(hwnd, hRad1, TRUE); + ok(hCtrl == hCancel, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad2, TRUE); + ok(hCtrl == hRad1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad3, TRUE); + ok(hCtrl == hRad2, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hPsh1, TRUE); + ok(hCtrl == hRad3, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad5, TRUE); + ok(hCtrl == hPsh1, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad6, TRUE); + ok(hCtrl == hRad5, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hRad7, TRUE); + ok(hCtrl == hRad6, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hOK, TRUE); + ok(hCtrl == hRad7, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgTabItem(hwnd, hCancel, TRUE); + ok(hCtrl == hOK, "hCtrl was %s\n", GetNameFromHWND(hCtrl)); +} + +static void +DoTest2(HWND hwnd) +{ + HWND hCtrl; + HWND hRad1, hRad2, hRad3, hPsh1, hRad5, hRad6, hRad7, hOK, hCancel; + + // check control IDs + hCtrl = GetDlgItem(hwnd, rad1); + ok(GetDlgCtrlID(hCtrl) == rad1, "\n"); + hCtrl = GetDlgItem(hwnd, rad2); + ok(GetDlgCtrlID(hCtrl) == rad2, "\n"); + hCtrl = GetDlgItem(hwnd, rad3); + ok(GetDlgCtrlID(hCtrl) == rad3, "\n"); + hCtrl = GetDlgItem(hwnd, psh1); + ok(GetDlgCtrlID(hCtrl) == psh1, "\n"); + hCtrl = GetDlgItem(hwnd, rad5); + ok(GetDlgCtrlID(hCtrl) == rad5, "\n"); + hCtrl = GetDlgItem(hwnd, rad6); + ok(GetDlgCtrlID(hCtrl) == rad6, "\n"); + hCtrl = GetDlgItem(hwnd, rad7); + ok(GetDlgCtrlID(hCtrl) == rad7, "\n"); + hCtrl = GetDlgItem(hwnd, IDOK); + ok(GetDlgCtrlID(hCtrl) == IDOK, "\n"); + hCtrl = GetDlgItem(hwnd, IDCANCEL); + ok(GetDlgCtrlID(hCtrl) == IDCANCEL, "\n"); + + // get dialog items + hRad1 = GetDlgItem(hwnd, rad1); + hRad2 = GetDlgItem(hwnd, rad2); + hRad3 = GetDlgItem(hwnd, rad3); + hPsh1 = GetDlgItem(hwnd, psh1); + hRad5 = GetDlgItem(hwnd, rad5); + hRad6 = GetDlgItem(hwnd, rad6); + hRad7 = GetDlgItem(hwnd, rad7); + hOK = GetDlgItem(hwnd, IDOK); + hCancel = GetDlgItem(hwnd, IDCANCEL); + + // group next + hCtrl = GetNextDlgGroupItem(hwnd, hRad1, FALSE); + ok(hCtrl == hRad2, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad2, FALSE); + ok(hCtrl == hRad3, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad3, FALSE); + ok(hCtrl == hPsh1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hPsh1, FALSE); + ok(hCtrl == hRad5, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad5, FALSE); + ok(hCtrl == hRad6, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad6, FALSE); + ok(hCtrl == hRad7, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad7, FALSE); + ok(hCtrl == hOK, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hOK, FALSE); + ok(hCtrl == hCancel, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hCancel, FALSE); + ok(hCtrl == hRad1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + + // group prev + hCtrl = GetNextDlgGroupItem(hwnd, hRad1, TRUE); + ok(hCtrl == hCancel, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad2, TRUE); + ok(hCtrl == hRad1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad3, TRUE); + ok(hCtrl == hRad2, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hPsh1, TRUE); + ok(hCtrl == hRad3, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad5, TRUE); + ok(hCtrl == hPsh1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad6, TRUE); + ok(hCtrl == hRad5, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad7, TRUE); + ok(hCtrl == hRad6, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hOK, TRUE); + ok(hCtrl == hRad7, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hCancel, TRUE); + ok(hCtrl == hOK, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + + // hide + ok(ShowWindow(hRad3, SW_HIDE) != 0, "\n"); + ok(ShowWindow(hRad6, SW_HIDE) != 0, "\n"); + + // group next with hidden + hCtrl = GetNextDlgGroupItem(hwnd, hRad1, FALSE); + ok(hCtrl == hRad2, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad2, FALSE); + ok(hCtrl == hPsh1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hPsh1, FALSE); + ok(hCtrl == hRad5, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad5, FALSE); + ok(hCtrl == hRad7, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad7, FALSE); + ok(hCtrl == hOK, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hOK, FALSE); + ok(hCtrl == hCancel, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hCancel, FALSE); + ok(hCtrl == hRad1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + + // group prev with hidden + hCtrl = GetNextDlgGroupItem(hwnd, hRad1, TRUE); + ok(hCtrl == hCancel, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad2, TRUE); + ok(hCtrl == hRad1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hPsh1, TRUE); + ok(hCtrl == hRad2, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad5, TRUE); + ok(hCtrl == hPsh1, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hRad7, TRUE); + ok(hCtrl == hRad5, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hOK, TRUE); + ok(hCtrl == hRad7, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + hCtrl = GetNextDlgGroupItem(hwnd, hCancel, TRUE); + ok(hCtrl == hOK, "hCtrl is %s\n", GetNameFromHWND(hCtrl)); + + // show + ShowWindow(hRad3, SW_SHOWNOACTIVATE); + ShowWindow(hRad6, SW_SHOWNOACTIVATE); +} + +static POINT +GetCtrlCenter(HWND hCtrl) +{ + RECT rc; + POINT pt; + + GetClientRect(hCtrl, &rc); + pt.x = (rc.left + rc.right) / 2; + pt.y = (rc.top + rc.bottom) / 2; + return pt; +} + +static void +DoTest3(HWND hwnd) +{ + HWND hCtrl; + POINT pt; + + CheckDlgButton(hwnd, rad1, BST_CHECKED); + CheckDlgButton(hwnd, rad5, BST_CHECKED); + + ok(IsDlgButtonChecked(hwnd, rad1) == BST_CHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad2) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad3) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad5) == BST_CHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad6) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad7) == BST_UNCHECKED, "\n"); + + hCtrl = GetDlgItem(hwnd, rad1); + pt = GetCtrlCenter(hCtrl); + SendMessage(hCtrl, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y)); + SendMessage(hCtrl, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(pt.x, pt.y)); + + ok(IsDlgButtonChecked(hwnd, rad1) == BST_CHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad2) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad3) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad5) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad6) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad7) == BST_UNCHECKED, "\n"); + + hCtrl = GetDlgItem(hwnd, rad5); + pt = GetCtrlCenter(hCtrl); + SendMessage(hCtrl, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y)); + SendMessage(hCtrl, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(pt.x, pt.y)); + + ok(IsDlgButtonChecked(hwnd, rad1) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad2) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad3) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad5) == BST_CHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad6) == BST_UNCHECKED, "\n"); + ok(IsDlgButtonChecked(hwnd, rad7) == BST_UNCHECKED, "\n"); +} + +static void +OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) +{ + switch (id) + { + case IDC_TEST1: + DoTest1(hwnd); + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_TEST2, 0), 0); + break; + case IDC_TEST2: + DoTest2(hwnd); + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_TEST3, 0), 0); + break; + case IDC_TEST3: + DoTest3(hwnd); + PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_END, 0), 0); + break; + case IDC_END: + EndDialog(hwnd, IDOK); + break; + } +} + +INT_PTR CALLBACK +RadioButtonDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) + { + HANDLE_MSG(hwnd, WM_INITDIALOG, OnInitDialog); + HANDLE_MSG(hwnd, WM_COMMAND, OnCommand); + } + return 0; +} + +START_TEST(NextDlgItem) +{ + HMODULE hMod = GetModuleHandle(NULL); + ok(hMod != NULL, "\n"); + DialogBox(hMod, TEXT("NEXTDLGITEM"), NULL, RadioButtonDialogProc); +} Index: rostests/apitests/user32/testlist.c =================================================================== --- rostests/apitests/user32/testlist.c (revision 73455) +++ rostests/apitests/user32/testlist.c (working copy) @@ -22,6 +22,7 @@ extern void func_InitializeLpkHooks(void); extern void func_LoadImage(void); extern void func_LookupIconIdFromDirectoryEx(void); +extern void func_NextDlgItem(void); extern void func_RealGetWindowClass(void); extern void func_RegisterHotKey(void); extern void func_ScrollDC(void); @@ -58,6 +59,7 @@ { "InitializeLpkHooks", func_InitializeLpkHooks }, { "LoadImage", func_LoadImage }, { "LookupIconIdFromDirectoryEx", func_LookupIconIdFromDirectoryEx }, + { "NextDlgItem", func_NextDlgItem }, { "RealGetWindowClass", func_RealGetWindowClass }, { "RegisterHotKey", func_RegisterHotKey }, { "ScrollDC", func_ScrollDC }, Index: rostests/apitests/user32/user32_apitest.rc =================================================================== --- rostests/apitests/user32/user32_apitest.rc (revision 73455) +++ rostests/apitests/user32/user32_apitest.rc (working copy) @@ -1,4 +1,6 @@ #include +#include +#include #include "resource.h" LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL @@ -13,3 +15,19 @@ { PUSHBUTTON "a button", 1, 5,5, 100,20 } + +NEXTDLGITEM DIALOG 0, 0, 281, 135 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "NextDlgItem" +FONT 8, "MS Shell Dlg" +{ + CONTROL "rad1", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 60, 14 + CONTROL "rad2", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 50, 60, 14 + CONTROL "rad3", rad3, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 70, 60, 14 + CONTROL "psh1", psh1, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 93, 60, 60, 14 + CONTROL "rad5", rad5, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 160, 30, 60, 14 + CONTROL "rad6", rad6, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 160, 50, 60, 14 + CONTROL "rad7", rad7, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 160, 70, 60, 14 + CONTROL "OK", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 65, 98, 60, 14 + CONTROL "Cancel", IDCANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 187, 100, 60, 14 +}