Author: tretiakov
Date: Wed Jan 3 14:16:47 2007
New Revision: 25281
URL:
http://svn.reactos.org/svn/reactos?rev=25281&view=rev
Log:
Test application for loading and switching keyboard layouts
Added:
trunk/reactos/base/applications/testsets/user32/kbdlayout/
trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.c
trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.dsp
trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rbuild
trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rc
trunk/reactos/base/applications/testsets/user32/kbdlayout/resource.h
Modified:
trunk/reactos/base/applications/testsets/user32/user32.rbuild
Added: trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.c (added)
+++ trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.c Wed Jan 3
14:16:47 2007
@@ -1,0 +1,352 @@
+/*
+ * PROJECT: ReactOS
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/testset/user32/kbdlayout/kbdlayout.c
+ * PURPOSE: Keyboard layout testapp
+ * COPYRIGHT: Copyright 2007 Saveliy Tretiakov
+ */
+
+#define UNICODE
+#include<wchar.h>
+#include <windows.h>
+#include "resource.h"
+
+
+
+LRESULT MainDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
+
+
+HINSTANCE hInst;
+HWND hMainDlg;
+
+
+typedef struct {
+ WNDPROC OrigProc;
+ WCHAR WndName[25];
+} WND_DATA;
+
+INT WINAPI WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+
+
+ hInst = hInstance;
+
+ DialogBoxParam(hInst,
+ MAKEINTRESOURCE(IDD_MAINDIALOG),
+ NULL,
+ (DLGPROC)MainDialogProc,
+ (LPARAM)NULL);
+
+ return 0;
+}
+
+
+int GetKlList(HKL **list)
+{
+ HKL *ret;
+ int n;
+
+ n = GetKeyboardLayoutList(0, NULL);
+ ret = HeapAlloc(GetProcessHeap(), 0, sizeof(HKL)*n);
+ GetKeyboardLayoutList(n, ret);
+ *list = ret;
+ return n;
+}
+
+void FreeKlList(HKL *list)
+{
+ HeapFree(GetProcessHeap(), 0, list);
+}
+
+
+void UpdateData(HWND hDlg)
+{
+ WCHAR buf[KL_NAMELENGTH];
+ WCHAR buf2[512];
+
+ HWND hList;
+ HKL *klList, hKl;
+ int n, i,j;
+
+ GetKeyboardLayoutName(buf);
+ swprintf(buf2, L"Active layout: %s (%x)", buf, GetKeyboardLayout(0));
+ SetWindowText(GetDlgItem(hDlg, IDC_ACTIVE), buf2);
+
+ hList = GetDlgItem(hDlg, IDC_LIST);
+ SendMessage(hList, LB_RESETCONTENT, 0, 0);
+
+ n = GetKlList(&klList);
+ hKl = GetKeyboardLayout(0);
+ for(i = 0; i < n; i++)
+ {
+ swprintf(buf, L"%x", klList[i] );
+ j = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM) buf);
+ SendMessage(hList, LB_SETITEMDATA, j, (LPARAM) klList[i]);
+ if(klList[i] == hKl) SendMessage(hList, LB_SETCURSEL, j, 0);
+ }
+
+ FreeKlList(klList);
+}
+
+void FormatMsg(WCHAR *format, ...)
+{
+ WCHAR buf[255];
+ va_list argptr;
+ va_start(argptr, format);
+ _vsnwprintf(buf, sizeof(buf)-1, format, argptr);
+ MessageBox(0, buf, L"msg", 0);
+ va_end(argptr);
+}
+
+void FormatBox(HWND hWnd, DWORD Flags, WCHAR *Caption, WCHAR *Format, ...)
+{
+ WCHAR buf[255];
+ va_list argptr;
+ va_start(argptr, Format);
+ _vsnwprintf(buf, sizeof(buf)-1, Format, argptr);
+ MessageBox(hWnd, buf, Caption, Flags);
+ va_end(argptr);
+}
+
+
+LRESULT CALLBACK WndSubclassProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ WND_DATA *data = (WND_DATA*)GetWindowLong(hwnd, GWL_USERDATA);
+
+ if(uMsg == WM_INPUTLANGCHANGE)
+ {
+ FormatMsg(L"%s: WM_INPUTLANGCHANGE lParam=%x wParam=%x\n", data->WndName,
lParam, wParam);
+ UpdateData(hMainDlg);
+ //Pass message to defwindowproc
+ }
+ else if(uMsg == WM_INPUTLANGCHANGEREQUEST)
+ {
+ FormatMsg(L"%s: WM_INPUTLANGCHANGEREQUEST lParam=%x wParam=%x\n",
data->WndName, lParam, wParam);
+ UpdateData(hMainDlg);
+ //Pass message to defwindowproc
+ }
+
+ return ( CallWindowProc( data->OrigProc, hwnd, uMsg, wParam, lParam) );
+}
+
+void SubclassWnd(HWND hWnd, WCHAR* Name)
+{
+ WND_DATA *data = HeapAlloc(GetProcessHeap(), 0, sizeof(WND_DATA));
+ data->OrigProc = (WNDPROC)SetWindowLong( hWnd, GWL_WNDPROC, (LONG)WndSubclassProc);
+ wcsncpy(data->WndName, Name, 25);
+ SetWindowLong(hWnd, GWL_USERDATA, (LONG)data);
+ return;
+}
+
+DWORD GetActivateFlags(HWND hDlg)
+{
+ DWORD ret = 0;
+
+ if(IsDlgButtonChecked(hDlg, IDC_KLF_REORDER))
+ ret |= KLF_REORDER;
+
+/* if(IsDlgButtonChecked(hDlg, IDC_KLF_RESET))
+ ret |= KLF_RESET;
+
+ if(IsDlgButtonChecked(hDlg, IDC_KLF_SHIFTLOCK))
+ ret |= KLF_SHIFTLOCK;*/
+
+ if(IsDlgButtonChecked(hDlg, IDC_KLF_SETFORPROCESS))
+ ret |= KLF_SETFORPROCESS;
+
+ return ret;
+
+}
+
+DWORD GetLoadFlags(HWND hDlg)
+{
+ DWORD ret = 0;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_ACTIVATE))
+ ret |= KLF_ACTIVATE;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_NOTELLSHELL))
+ ret |= KLF_NOTELLSHELL;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_REORDER))
+ ret |= KLF_REORDER;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_REPLACELANG))
+ ret |= KLF_REPLACELANG;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_SUBSTITUTE_OK))
+ ret |= KLF_SUBSTITUTE_OK;
+
+ if(IsDlgButtonChecked(hDlg, IDL_KLF_SETFORPROCESS))
+ ret |= KLF_SETFORPROCESS;
+
+ return ret;
+}
+
+HKL GetSelectedLayout(HWND hDlg)
+{
+ int n;
+ HWND hList;
+ hList = GetDlgItem(hDlg, IDC_LIST);
+ if((n = SendMessage(hList, LB_GETCURSEL, 0, 0)) != LB_ERR)
+ return (HKL) SendMessage(hList, LB_GETITEMDATA, n, 0);
+ else return INVALID_HANDLE_VALUE;
+}
+
+HKL GetActivateHandle(HWND hDlg)
+{
+
+ if(IsDlgButtonChecked(hDlg, IDC_FROMLIST))
+ return GetSelectedLayout(hDlg);
+ else if(IsDlgButtonChecked(hDlg, IDC_FROMEDIT))
+ {
+ WCHAR buf[25];
+ ULONG kl;
+ GetWindowText(GetDlgItem(hDlg, IDC_HANDLE), buf, 25);
+ swscanf(buf, L"%x", &kl);
+ return (HKL) kl;
+ }
+ else if(IsDlgButtonChecked(hDlg, IDC_HKL_NEXT))
+ return (HKL)HKL_NEXT;
+
+ return (HKL)HKL_PREV;
+
+}
+
+
+/***************************************************
+ * MainDialogProc *
+ ***************************************************/
+
+LRESULT MainDialogProc(HWND hDlg,
+ UINT Msg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ HKL hKl;
+
+ switch (Msg)
+ {
+ case WM_INITDIALOG:
+ {
+ UpdateData(hDlg);
+ hMainDlg = hDlg;
+
+ SubclassWnd(GetDlgItem(hDlg, IDC_LIST), L"List");
+ SubclassWnd(GetDlgItem(hDlg, IDC_EDIT1), L"Edit1");
+ SubclassWnd(GetDlgItem(hDlg, IDC_EDIT2), L"Edit2");
+ SubclassWnd(GetDlgItem(hDlg, IDC_KLID), L"Klid");
+ SubclassWnd(GetDlgItem(hDlg, IDC_HANDLE), L"Handle");
+ SubclassWnd(GetDlgItem(hDlg, ID_CANCEL), L"Button");
+
+ CheckRadioButton(hDlg, IDC_FROMLIST, IDC_FROMEDIT, IDC_FROMLIST);
+ SetWindowText(GetDlgItem(hDlg, IDC_KLID), L"00000419");
+
+ return 0;
+ } /* WM_INITDIALOG */
+
+ case WM_COMMAND:
+ {
+ switch(LOWORD(wParam))
+ {
+ case ID_CANCEL:
+ {
+ EndDialog(hDlg, ERROR_CANCELLED);
+ break;
+ }
+
+ case IDC_ACTIVATE:
+ {
+ if((hKl = GetActivateHandle(hDlg)) != INVALID_HANDLE_VALUE)
+ {
+ if(!ActivateKeyboardLayout(hKl, GetActivateFlags(hDlg)))
+ FormatBox(hDlg, MB_ICONERROR, L"Error",
+ L"ActivateKeyboardLayout() failed. %d", GetLastError());
+ else UpdateData(hDlg);
+ }
+ else MessageBox(hDlg, L"No item selected", L"Error",
MB_ICONERROR);
+ break;
+ }
+
+ case IDC_UNLOAD:
+ {
+ if((hKl = GetSelectedLayout(hDlg)) != INVALID_HANDLE_VALUE)
+ {
+ if(!UnloadKeyboardLayout(hKl))
+ FormatBox(hDlg, MB_ICONERROR, L"Error",
+ L"UnloadKeyboardLayout() failed. %d",
+ GetLastError());
+ else UpdateData(hDlg);
+ }
+ else MessageBox(hDlg, L"No item selected", L"Error",
MB_ICONERROR);
+ break;
+ }
+
+ case IDC_LOAD:
+ {
+ WCHAR buf[255];
+ GetWindowText(GetDlgItem(hDlg, IDC_KLID), buf, sizeof(buf));
+ if(!LoadKeyboardLayout(buf, GetLoadFlags(hDlg)))
+ FormatBox(hDlg, MB_ICONERROR, L"Error",
+ L"LoadKeyboardLayout() failed. %d",
+ GetLastError());
+ else UpdateData(hDlg);
+ break;
+ }
+
+ case IDC_REFRESH:
+ {
+ UpdateData(hDlg);
+ break;
+ }
+
+ case IDC_LIST:
+ {
+ if(HIWORD(wParam) == LBN_SELCHANGE)
+ {
+ WCHAR buf[25];
+ if((hKl = GetSelectedLayout(hDlg)) != NULL)
+ {
+ swprintf(buf, L"%x", hKl);
+ SetWindowText(GetDlgItem(hDlg, IDC_HANDLE), buf);
+ }
+ }
+ break;
+ }
+
+ }
+
+ return TRUE;
+ } /* WM_COMMAND */
+
+
+ case WM_INPUTLANGCHANGE:
+ {
+ FormatMsg(L"dlg WM_INPUTLANGCHANGE lParam=%x wParam=%x\n", lParam, wParam);
+ return FALSE;
+ }
+
+ case WM_INPUTLANGCHANGEREQUEST:
+ {
+ FormatMsg(L"dlg WM_INPUTLANGCHANGEREQUEST lParam=%x wParam=%x\n", lParam,
wParam);
+ return FALSE;
+ }
+
+ case WM_CLOSE:
+ {
+ EndDialog(hDlg, ERROR_CANCELLED);
+ return TRUE;
+ } /* WM_CLOSE */
+
+ default:
+ return FALSE;
+ }
+
+}
+
+
+
+
Added: trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.dsp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.dsp (added)
+++ trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.dsp Wed Jan 3
14:16:47 2007
@@ -1,0 +1,98 @@
+# Microsoft Developer Studio Project File - Name="kbdlayout" - Package
Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=kbdlayout - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "kbdlayout.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "kbdlayout.mak" CFG="kbdlayout - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "kbdlayout - Win32 Release" (based on "Win32 (x86) Console
Application")
+!MESSAGE "kbdlayout - Win32 Debug" (based on "Win32 (x86) Console
Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "kbdlayout - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D
"_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D
"_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x419 /d "NDEBUG"
+# ADD RSC /l 0x419 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "kbdlayout - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x419 /d "_DEBUG"
+# ADD RSC /l 0x419 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo
/subsystem:windows /debug /machine:I386 /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "kbdlayout - Win32 Release"
+# Name "kbdlayout - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\kbdlayout.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\kbdlayout.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# End Target
+# End Project
Added: trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rbuild (added)
+++ trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rbuild Wed Jan 3
14:16:47 2007
@@ -1,0 +1,13 @@
+<module name="kbdlayout" type="win32gui"
installbase="system32" installname="kbdlayout.exe">
+ <include base="kbdlayout">.</include>
+ <define name="__USE_W32API" />
+ <define name="_UNICODE" />
+ <define name="_WIN32_IE">0x0500</define>
+ <define name="_WIN32_WINNT">0x0600</define>
+ <define name="WINVER">0x0600</define>
+ <library>kernel32</library>
+ <library>user32</library>
+ <library>gdi32</library>
+ <file>kbdlayout.c</file>
+ <file>kbdlayout.rc</file>
+</module>
Added: trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rc (added)
+++ trunk/reactos/base/applications/testsets/user32/kbdlayout/kbdlayout.rc Wed Jan 3
14:16:47 2007
@@ -1,0 +1,141 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Russian resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+#ifdef _WIN32
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_MAINDIALOG DIALOG DISCARDABLE 0, 0, 403, 223
+STYLE DS_CENTER | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
+CAPTION "Keyboard layout test"
+FONT 8, "MS Sans Serif"
+BEGIN
+ PUSHBUTTON "Exit",ID_CANCEL,138,202,121,14
+ EDITTEXT IDC_EDIT1,7,140,195,58,ES_MULTILINE | ES_AUTOHSCROLL
+ LISTBOX IDC_LIST,185,17,101,87,LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
+ WS_TABSTOP
+ LTEXT "Loaded layouts",IDC_STATIC,190,7,49,8
+ LTEXT "Active layout:",IDC_ACTIVE,7,127,173,10,SS_SUNKEN
+ EDITTEXT IDC_EDIT2,206,140,190,58,ES_MULTILINE | ES_AUTOHSCROLL
+ PUSHBUTTON "Unload",IDC_UNLOAD,186,105,48,14
+ PUSHBUTTON "Activate",IDC_ACTIVATE,237,121,47,14
+ GROUPBOX "Activate Flags",IDC_STATIC,293,7,103,67
+ CONTROL
"KLF_REORDER",IDC_KLF_REORDER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,299,22,69,10
+ CONTROL
"KLF_RESET",IDC_KLF_RESET,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,299,34,66,12
+ CONTROL
"KLF_SETFORPROCESS",IDC_KLF_SETFORPROCESS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,299,48,95,10
+ CONTROL "KLF_SHIFTLOCK",IDC_KLF_SHIFTLOCK,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,299,60,72,10
+ GROUPBOX "Activate layout",IDC_STATIC,294,77,101,60
+ CONTROL "From
list",IDC_FROMLIST,"Button",BS_AUTORADIOBUTTON |
+ WS_GROUP,298,90,41,10
+ CONTROL
"HKL_NEXT",IDC_HKL_NEXT,"Button",BS_AUTORADIOBUTTON,298,
+ 101,53,10
+ CONTROL
"HKL_PREV",IDC_HKL_PREV,"Button",BS_AUTORADIOBUTTON,298,
+ 112,53,10
+ CONTROL "From
edit",IDC_FROMEDIT,"Button",BS_AUTORADIOBUTTON,298,
+ 124,45,10
+ GROUPBOX "Load layout",IDC_STATIC,7,7,173,118
+ CONTROL
"KLF_ACTIVATE",IDL_KLF_ACTIVATE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,15,42,67,10
+ CONTROL "KLF_NOTELLSHELL",IDL_KLF_NOTELLSHELL,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,15,55,83,10
+ LTEXT "pwszKLID:",IDC_STATIC,15,22,35,8
+ EDITTEXT IDC_KLID,53,21,64,14,ES_AUTOHSCROLL | ES_NUMBER
+ CONTROL
"KLF_REORDER",IDL_KLF_REORDER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,15,68,69,10
+ CONTROL "KLF_REPLACELANG",IDL_KLF_REPLACELANG,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,15,81,85,10
+ CONTROL
"KLF_SUBSTITUTE_OK",IDL_KLF_SUBSTITUTE_OK,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,15,94,92,10
+ CONTROL
"KLF_SETFORPROCESS",IDL_KLF_SETFORPROCESS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,15,107,95,10
+ PUSHBUTTON "Load",IDC_LOAD,125,21,50,14
+ PUSHBUTTON "Refresh",IDC_REFRESH,237,106,48,14
+ EDITTEXT IDC_HANDLE,185,122,49,14,ES_AUTOHSCROLL
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_MAINDIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 396
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 216
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+#endif // Russian resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
Added: trunk/reactos/base/applications/testsets/user32/kbdlayout/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/kbdlayout/resource.h (added)
+++ trunk/reactos/base/applications/testsets/user32/kbdlayout/resource.h Wed Jan 3
14:16:47 2007
@@ -1,0 +1,43 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by lab17.rc
+//
+#define IDD_MAINDIALOG 101
+#define ID_CANCEL 1000
+#define IDC_EDIT1 1021
+#define IDC_LIST 1022
+#define IDC_ACTIVE 1023
+#define IDC_EDIT2 1024
+#define IDC_UNLOAD 1025
+#define IDC_ACTIVATE 1026
+#define IDC_KLF_REORDER 1027
+#define IDC_KLF_RESET 1028
+#define IDC_KLF_SETFORPROCESS 1029
+#define IDC_KLF_SHIFTLOCK 1030
+#define IDC_FROMLIST 1032
+#define IDC_HKL_NEXT 1033
+#define IDC_HKL_PREV 1034
+#define IDL_KLF_ACTIVATE 1035
+#define IDL_KLF_NOTELLSHELL 1036
+#define IDC_KLID 1037
+#define IDL_KLF_REORDER 1038
+#define IDL_KLF_REPLACELANG 1039
+#define IDL_KLF_SUBSTITUTE_OK 1040
+#define IDL_KLF_SETFORPROCESS 1041
+#define IDC_HKL_PREV2 1042
+#define IDC_FROMEDIT 1042
+#define IDC_LOAD 1043
+#define IDC_REFRESH 1044
+#define IDC_HANDLE 1046
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_NEXT_RESOURCE_VALUE 105
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1049
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
Modified: trunk/reactos/base/applications/testsets/user32/user32.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/testsets…
==============================================================================
--- trunk/reactos/base/applications/testsets/user32/user32.rbuild (original)
+++ trunk/reactos/base/applications/testsets/user32/user32.rbuild Wed Jan 3 14:16:47
2007
@@ -7,4 +7,7 @@
<directory name="sysicon">
<xi:include href="sysicon/sysicon.rbuild" />
</directory>
+<directory name="kbdlayout">
+ <xi:include href="kbdlayout/kbdlayout.rbuild" />
+</directory>
</group>