|  | /* | 
|  | * Win16 BiDi functions | 
|  | * Copyright 2000 Erez Volk | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | * | 
|  | * NOTE: Right now, most of these functions do nothing. | 
|  | */ | 
|  |  | 
|  | #include <stdarg.h> | 
|  | #include <string.h> | 
|  | #include "windef.h" | 
|  | #include "winbase.h" | 
|  | #include "wingdi.h" | 
|  | #include "wine/winuser16.h" | 
|  | #include "winerror.h" | 
|  | #include "wine/debug.h" | 
|  |  | 
|  | WINE_DEFAULT_DEBUG_CHANNEL(relay); | 
|  |  | 
|  | /*********************************************************************** | 
|  | *		ChangeDialogTemplate   (USER.905) | 
|  | * FIXME: The prototypes of this function have not been found yet. | 
|  | */ | 
|  | LONG WINAPI ChangeDialogTemplate16(void) { FIXME("stub (no prototype)\n"); return 0; } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *		BiDiMessageBoxEx   (USER.910) | 
|  | * FIXME: The prototypes of this function have not been found yet. | 
|  | */ | 
|  | LONG WINAPI BiDiMessageBoxEx16(void) { FIXME("stub (no prototype)\n"); return 0; } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    ChangeKeyboardCodePage [USER.924] | 
|  | * Change the keyboard layouts to a new pair. | 
|  | * If the language IDs are set to -1, the language is not to be changed. | 
|  | */ | 
|  | DWORD WINAPI ChangeKeyboardCodePage16( UINT16 iLangLeft, UINT16 iLangRight ) | 
|  | { | 
|  | FIXME( "( %hu, %hu ): stub\n", iLangLeft, iLangRight ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    ChangeKeyboardLanguage [USER.912] | 
|  | * Change the keyboard layouts to a new pair. | 
|  | * | 
|  | * RETURNS | 
|  | *    The old keyboard layout pair. | 
|  | */ | 
|  | DWORD WINAPI ChangeKeyboardLanguage16( UINT16 iLangLeft, UINT16 iLangRight ) | 
|  | { | 
|  | FIXME( "( %hu, %hu ): stub\n", iLangLeft, iLangRight ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    CreateDialogIndirectParamML [USER.916] | 
|  | */ | 
|  | HWND16 WINAPI CreateDialogIndirectParamML16( HINSTANCE16 hinstWnd, | 
|  | const void * lpvDlgTmp, | 
|  | HWND16 hwndOwner, | 
|  | DLGPROC16 dlgProc, | 
|  | LPARAM lParamInit, | 
|  | UINT16 iCodePage, UINT16 iLang, | 
|  | LPCSTR lpDlgName, | 
|  | HINSTANCE16 hinstLoad ) | 
|  | { | 
|  | FIXME( "( %04hx, %p, %04hx, %p, %08lx, %hu, %hu, %p, %04hx ): stub\n", | 
|  | hinstWnd, lpvDlgTmp, hwndOwner, dlgProc, lParamInit, | 
|  | iCodePage, iLang, lpDlgName, hinstLoad ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    DialogBoxIndirectParamML [USER.918] | 
|  | */ | 
|  | HWND16 WINAPI DialogBoxIndirectParamML16( HINSTANCE16 hinstWnd, | 
|  | HGLOBAL16 hglbDlgTemp, | 
|  | HWND16 hwndOwner, | 
|  | DLGPROC16 dlgprc, | 
|  | LPARAM lParamInit, | 
|  | UINT16 iCodePage, UINT16 iLang, | 
|  | LPCSTR lpDlgName, | 
|  | HINSTANCE16 hinstLoad ) | 
|  | { | 
|  | FIXME( "( %04hx, %04hx, %04hx, %p, %08lx, %hu, %hu, %p, %04hx ): stub\n", | 
|  | hinstWnd, hglbDlgTemp, hwndOwner, dlgprc, lParamInit, | 
|  | iCodePage, iLang, lpDlgName, hinstLoad ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    FindLanguageResource [USER.923] | 
|  | */ | 
|  | HRSRC16 WINAPI FindLanguageResource16( HINSTANCE16 hinst, LPCSTR lpRes, | 
|  | LPCSTR lpResType, UINT16 iLang ) | 
|  | { | 
|  | FIXME( "( %04hx, %p, %p, %hu ): stub\n", hinst, lpRes, lpResType, iLang ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetAppCodePage [USER.915] | 
|  | * Returns the code page and language of the window | 
|  | * | 
|  | * RETURNS | 
|  | *    The low word contains the code page, the high word contains the resource language. | 
|  | */ | 
|  | DWORD WINAPI GetAppCodePage16( HWND16 hwnd ) | 
|  | { | 
|  | FIXME( "( %04hx ): stub\n", hwnd ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetBaseCodePage [USER.922] | 
|  | * Returns the base code page and resource language. | 
|  | * For example, Hebrew windows will return HebrewCodePage in the low word | 
|  | * and English in the high word. | 
|  | */ | 
|  | DWORD WINAPI GetBaseCodePage16( void ) | 
|  | { | 
|  | FIXME( ": stub\n" ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetCodePageSystemFont [USER.913] | 
|  | * Returns the stock font for the requested code page. | 
|  | */ | 
|  | HFONT16 WINAPI GetCodePageSystemFont16( UINT16 iFont, UINT16 iCodePage ) | 
|  | { | 
|  | FIXME( "( %hu, %hu ): stub\n", iFont, iCodePage ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetLanguageName [USER.907] | 
|  | * Returns the name of one language in (possibly) a different language. | 
|  | * Currently only handles language 0 (english). | 
|  | * | 
|  | * RETURNS | 
|  | *    Success: The number of bytes copied to the buffer, not including the null. | 
|  | *    Failure: 0 | 
|  | */ | 
|  | UINT WINAPI GetLanguageName16( UINT16 iLang, UINT16 iName, | 
|  | LPSTR lpszName, UINT16 cbBuffer ) | 
|  | { | 
|  | if ( (iLang == 0) && (iName == 0) ) { | 
|  | if ( !lpszName || cbBuffer < 8 ) { | 
|  | SetLastError( ERROR_INVALID_PARAMETER ); | 
|  | return 0; | 
|  | } | 
|  | strcpy( lpszName, "English" ); | 
|  | return 7; | 
|  | } | 
|  |  | 
|  | FIXME( "( %hu, %hu, %p, %hu ): No BiDi16\n", iLang, iName, lpszName, cbBuffer ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetNumLanguages [USER.906] | 
|  | * Returns the number of languages in the system. | 
|  | */ | 
|  | UINT WINAPI GetNumLanguages16( void ) | 
|  | { | 
|  | FIXME( ": No Bidi16\n" ); | 
|  | return 1; | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    GetProcessDefaultLayout [USER.1001] | 
|  | * | 
|  | * Gets the default layout for parentless windows. | 
|  | * Right now, just returns 0 (left-to-right). | 
|  | * | 
|  | * RETURNS | 
|  | *    Success: Nonzero | 
|  | *    Failure: Zero | 
|  | */ | 
|  | BOOL16 WINAPI GetProcessDefaultLayout16( DWORD *pdwDefaultLayout ) | 
|  | { | 
|  | FIXME( "( %p ): no BiDi16\n", pdwDefaultLayout ); | 
|  | return GetProcessDefaultLayout( pdwDefaultLayout ); | 
|  | } | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                   LoadLanguageString [USER.919] | 
|  | * Loads a string for a specific language. | 
|  | * | 
|  | * RETURNS | 
|  | *    SUCCESS: The length of the string loaded. | 
|  | *    FAILURE: Zero. | 
|  | */ | 
|  | UINT16 WINAPI LoadLanguageString16( HINSTANCE16 hinst, UINT16 id, UINT16 iLang, | 
|  | LPSTR lpszText, INT16 nBytes ) | 
|  | { | 
|  | FIXME( "( %04hx, %hu, %hu, %p, %hd ): stub\n", hinst, id, iLang, lpszText, nBytes ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                   LoadSystemLanguageString [USER.902] | 
|  | * Loads a string which is in one of the system language modules. | 
|  | * | 
|  | * RETURNS | 
|  | *    Success: The length of the string loaded | 
|  | *    Failure: Zero | 
|  | */ | 
|  | UINT WINAPI LoadSystemLanguageString16( HINSTANCE16 hinstCaller, UINT16 id, | 
|  | LPSTR lpszText, INT16 nBytes, UINT16 iLang ) | 
|  | { | 
|  | FIXME( "( %04hx, %hu, %p, %hd, %hu ): stub\n", hinstCaller, id, lpszText, nBytes, iLang ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           MessageBoxEx [USER.930] | 
|  | * The multilingual version of MessageBox. | 
|  | */ | 
|  | INT16 WINAPI MessageBoxEx16( HWND16 hwndParent, LPCSTR lpszText, | 
|  | LPCSTR lpszTitle, UINT16 fuStyle, UINT16 iLang ) | 
|  | { | 
|  | FIXME( "( %04hx, %p, %p, %hu, %hu ): stub\n", hwndParent, lpszText, lpszTitle, | 
|  | fuStyle, iLang ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           QueryCodePage   [USER.914] | 
|  | * Query code page specific data. | 
|  | */ | 
|  | LRESULT WINAPI QueryCodePage16( UINT16 idxLang, UINT16 msg, | 
|  | WPARAM16 wParam, LPARAM lParam ) | 
|  | { | 
|  | FIXME( "( %hu, %hu, %04hx, %08lx ): stub\n", idxLang, msg, wParam, lParam ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           SetAppCodePage   [USER.920] | 
|  | * Set the code page and language of the window to new values. | 
|  | * | 
|  | * RETURNS | 
|  | *    The low word contains the old code page, the high word contains | 
|  | *       the old resource language. | 
|  | */ | 
|  | DWORD WINAPI SetAppCodePage16( HWND16 hwnd, UINT16 iCodePage, UINT16 iLang, | 
|  | UINT16 fRedraw ) | 
|  | { | 
|  | FIXME( "( %04hx, %hu, %hu, %hu ): stub\n", hwnd, iCodePage, iLang, fRedraw ); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           SetDlgItemTextEx   [USER.911] | 
|  | * Sets the title or text of a control in a dialog box. | 
|  | * Currently only works for language 0 (english) | 
|  | */ | 
|  | void WINAPI SetDlgItemTextEx16( HWND16 hwnd, INT16 id, | 
|  | LPCSTR lpszText, UINT16 iLang ) | 
|  | { | 
|  | FIXME( "( %04hx, %hd, %p, %hu ): stub\n", hwnd, id, lpszText, iLang ); | 
|  | } | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    SetProcessDefaultLayout [USER.1000] | 
|  | * | 
|  | * Sets the default layout for parentless windows. | 
|  | * Right now, only accepts 0 (left-to-right). | 
|  | * | 
|  | * RETURNS | 
|  | *    Success: Nonzero | 
|  | *    Failure: Zero | 
|  | */ | 
|  | BOOL16 WINAPI SetProcessDefaultLayout16( DWORD dwDefaultLayout ) | 
|  | { | 
|  | FIXME( "( %08x ): No BiDi16\n", dwDefaultLayout ); | 
|  | return SetProcessDefaultLayout( dwDefaultLayout ); | 
|  | } | 
|  |  | 
|  | /****************************************************************************** | 
|  | *                    SetWindowTextEx [USER.909] | 
|  | * Sets the given window's title to the specified text in the specified language. | 
|  | */ | 
|  | void WINAPI SetWindowTextEx16( HWND16 hwnd, LPCSTR lpsz, UINT16 iLang ) | 
|  | { | 
|  | FIXME( "( %04hx, %p, %hu ): stub\n", hwnd, lpsz, iLang ); | 
|  | } |