mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:12:57 +00:00
- Fixed passing of integer named controls in dialogs. Previously an integer was passed directly to CreateWindowEx, but that could not work, because it treats it as a string. After reading Microsoft documentation the correct way is to pass a string in form "#num".
- Fixed getting of integer names in STATIC control. Is this the right place? - Fixed icon support in STATIC control. svn path=/trunk/; revision=6478
This commit is contained in:
parent
c3b4b58a78
commit
65a44fd9e2
3 changed files with 49 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: static.c,v 1.7 2003/09/11 22:10:16 gvg Exp $
|
/* $Id: static.c,v 1.8 2003/10/31 16:25:08 navaraf Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS User32
|
* PROJECT: ReactOS User32
|
||||||
|
@ -93,8 +93,27 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
|
||||||
}
|
}
|
||||||
return prevIcon;
|
return prevIcon;
|
||||||
#else
|
#else
|
||||||
OutputDebugStringA("STATIC_SetIcon not implemented\n");
|
HICON prevIcon;
|
||||||
return NULL;
|
|
||||||
|
if ((style & SS_TYPEMASK) != SS_ICON) return 0;
|
||||||
|
prevIcon = (HICON)SetWindowLongA( hwnd, HICON_GWL_OFFSET, (LONG)hicon );
|
||||||
|
if (hicon)
|
||||||
|
{
|
||||||
|
ICONINFO info;
|
||||||
|
SIZE bitmapSize;
|
||||||
|
|
||||||
|
if (!GetIconInfo(hicon, &info))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!GetBitmapDimensionEx(info.hbmColor, &bitmapSize))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
SetWindowPos( hwnd, 0, 0, 0, bitmapSize.cx, bitmapSize.cy,
|
||||||
|
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER );
|
||||||
|
}
|
||||||
|
return prevIcon;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,6 +256,17 @@ static LRESULT CALLBACK StaticWndProcW( HWND hwnd, UINT uMsg, WPARAM wParam, LPA
|
||||||
lParam = (LPARAM)(((LPCREATESTRUCTW)lParam)->lpszName);
|
lParam = (LPARAM)(((LPCREATESTRUCTW)lParam)->lpszName);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case WM_SETTEXT:
|
case WM_SETTEXT:
|
||||||
|
if ((LPWSTR)lParam != NULL && ((LPWSTR)lParam)[0] == '#')
|
||||||
|
{
|
||||||
|
ULONG resource = 0, i;
|
||||||
|
LPWSTR name = (LPWSTR)lParam;
|
||||||
|
for (i = 1; name[i] != 0; ++i)
|
||||||
|
{
|
||||||
|
resource *= 10;
|
||||||
|
resource += name[i] - '0';
|
||||||
|
}
|
||||||
|
name = (LPWSTR)resource;
|
||||||
|
}
|
||||||
switch (style) {
|
switch (style) {
|
||||||
case SS_ICON:
|
case SS_ICON:
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: dialog.c,v 1.19 2003/09/20 19:52:23 gvg Exp $
|
/* $Id: dialog.c,v 1.20 2003/10/31 16:25:08 navaraf Exp $
|
||||||
*
|
*
|
||||||
* PROJECT: ReactOS user32.dll
|
* PROJECT: ReactOS user32.dll
|
||||||
* FILE: lib/user32/windows/dialog.c
|
* FILE: lib/user32/windows/dialog.c
|
||||||
|
@ -84,6 +84,7 @@ typedef struct
|
||||||
UINT id;
|
UINT id;
|
||||||
LPCWSTR className;
|
LPCWSTR className;
|
||||||
LPCWSTR windowName;
|
LPCWSTR windowName;
|
||||||
|
BOOL windowNameFree;
|
||||||
LPCVOID data;
|
LPCVOID data;
|
||||||
} DLG_CONTROL_INFO;
|
} DLG_CONTROL_INFO;
|
||||||
|
|
||||||
|
@ -267,12 +268,15 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info,
|
||||||
|
|
||||||
if (GET_WORD(p) == 0xffff) /* Is it an integer id? */
|
if (GET_WORD(p) == 0xffff) /* Is it an integer id? */
|
||||||
{
|
{
|
||||||
info->windowName = (LPCWSTR)(UINT)GET_WORD(p + 1);
|
info->windowName = HeapAlloc( GetProcessHeap(), 0, 10 );
|
||||||
|
swprintf((LPWSTR)info->windowName, L"#%d", GET_WORD(p + 1));
|
||||||
|
info->windowNameFree = TRUE;
|
||||||
p += 2;
|
p += 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
info->windowName = (LPCWSTR)p;
|
info->windowName = (LPCWSTR)p;
|
||||||
|
info->windowNameFree = FALSE;
|
||||||
p += wcslen( info->windowName ) + 1;
|
p += wcslen( info->windowName ) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,6 +357,12 @@ static BOOL DIALOG_CreateControls32( HWND hwnd, LPCSTR template, const DLG_TEMPL
|
||||||
if (HIWORD(class)) HeapFree( GetProcessHeap(), 0, class );
|
if (HIWORD(class)) HeapFree( GetProcessHeap(), 0, class );
|
||||||
if (HIWORD(caption)) HeapFree( GetProcessHeap(), 0, caption );
|
if (HIWORD(caption)) HeapFree( GetProcessHeap(), 0, caption );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (info.windowNameFree)
|
||||||
|
{
|
||||||
|
HeapFree( GetProcessHeap(), 0, (LPVOID)info.windowName );
|
||||||
|
}
|
||||||
|
|
||||||
if (!hwndCtrl)
|
if (!hwndCtrl)
|
||||||
{
|
{
|
||||||
if (dlgTemplate->style & DS_NOFAILCREATE) continue;
|
if (dlgTemplate->style & DS_NOFAILCREATE) continue;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: messagebox.c,v 1.20 2003/10/12 10:05:22 weiden Exp $
|
/* $Id: messagebox.c,v 1.21 2003/10/31 16:25:08 navaraf Exp $
|
||||||
*
|
*
|
||||||
* PROJECT: ReactOS user32.dll
|
* PROJECT: ReactOS user32.dll
|
||||||
* FILE: lib/user32/windows/messagebox.c
|
* FILE: lib/user32/windows/messagebox.c
|
||||||
|
@ -737,13 +737,13 @@ MessageBoxIndirectA(
|
||||||
|
|
||||||
ret = MessageBoxTimeoutIndirectW(&msgboxW, (UINT)-1);
|
ret = MessageBoxTimeoutIndirectW(&msgboxW, (UINT)-1);
|
||||||
|
|
||||||
if (HIWORD(textW.Buffer))
|
if (HIWORD((UINT)lpMsgBoxParams->lpszText))
|
||||||
RtlFreeUnicodeString(&textW);
|
RtlFreeUnicodeString(&textW);
|
||||||
|
|
||||||
if (HIWORD(captionW.Buffer))
|
if (HIWORD((UINT)lpMsgBoxParams->lpszCaption))
|
||||||
RtlFreeUnicodeString(&captionW);
|
RtlFreeUnicodeString(&captionW);
|
||||||
|
|
||||||
if (HIWORD(iconW.Buffer))
|
if (HIWORD((UINT)lpMsgBoxParams->lpszIcon))
|
||||||
RtlFreeUnicodeString(&iconW);
|
RtlFreeUnicodeString(&iconW);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue