applied fixes to make a user32.dll

code is based on wine.

svn path=/trunk/; revision=1120
This commit is contained in:
Boudewijn Dekker 2000-04-13 20:59:11 +00:00
parent 99fb26fc8b
commit 4542601468
9 changed files with 65 additions and 57 deletions

View file

@ -82,7 +82,7 @@ static LRESULT COMBO_NCCreate(WND* wnd, LPARAM lParam)
if ( wnd && COMBO_Init() &&
(lphc = HeapAlloc(GetProcessHeap(), 0, sizeof(HEADCOMBO))) )
{
LPCREATESTRUCTA lpcs = (CREATESTRUCTA*)lParam;
LPCREATESTRUCT lpcs = (CREATESTRUCT*)lParam;
memset( lphc, 0, sizeof(HEADCOMBO) );
*(LPHEADCOMBO*)wnd->wExtra = lphc;

View file

@ -216,7 +216,7 @@ static void EDIT_WM_Char(WND *wnd, EDITSTATE *es, CHAR c, DWORD key_data);
static void EDIT_WM_Command(WND *wnd, EDITSTATE *es, INT code, INT id, HWND conrtol);
static void EDIT_WM_ContextMenu(WND *wnd, EDITSTATE *es, HWND hwnd, INT x, INT y);
static void EDIT_WM_Copy(WND *wnd, EDITSTATE *es);
static LRESULT EDIT_WM_Create(WND *wnd, EDITSTATE *es, LPCREATESTRUCTA cs);
static LRESULT EDIT_WM_Create(WND *wnd, EDITSTATE *es, LPCREATESTRUCT cs);
static void EDIT_WM_Destroy(WND *wnd, EDITSTATE *es);
static LRESULT EDIT_WM_EraseBkGnd(WND *wnd, EDITSTATE *es, HDC dc);
static INT EDIT_WM_GetText(WND *wnd, EDITSTATE *es, INT count, LPSTR text);
@ -227,7 +227,7 @@ static LRESULT EDIT_WM_LButtonDblClk(WND *wnd, EDITSTATE *es, DWORD keys, INT x,
static LRESULT EDIT_WM_LButtonDown(WND *wnd, EDITSTATE *es, DWORD keys, INT x, INT y);
static LRESULT EDIT_WM_LButtonUp(WND *wnd, EDITSTATE *es, DWORD keys, INT x, INT y);
static LRESULT EDIT_WM_MouseMove(WND *wnd, EDITSTATE *es, DWORD keys, INT x, INT y);
static LRESULT EDIT_WM_NCCreate(WND *wnd, LPCREATESTRUCTA cs);
static LRESULT EDIT_WM_NCCreate(WND *wnd, LPCREATESTRUCT cs);
static void EDIT_WM_Paint(WND *wnd, EDITSTATE *es);
static void EDIT_WM_Paste(WND *wnd, EDITSTATE *es);
static void EDIT_WM_SetFocus(WND *wnd, EDITSTATE *es, HWND window_losing_focus);
@ -313,7 +313,7 @@ LRESULT WINAPI EditWndProc( HWND hwnd, UINT msg,
case WM_NCCREATE:
DPRINTF_EDIT_MSG("WM_NCCREATE");
return EDIT_WM_NCCreate(wnd, (LPCREATESTRUCTA)lParam);
return EDIT_WM_NCCreate(wnd, (LPCREATESTRUCT)lParam);
}
if (!es)
@ -591,7 +591,7 @@ LRESULT WINAPI EditWndProc( HWND hwnd, UINT msg,
case WM_CREATE:
DPRINTF_EDIT_MSG("WM_CREATE");
result = EDIT_WM_Create(wnd, es, (LPCREATESTRUCTA)lParam);
result = EDIT_WM_Create(wnd, es, (LPCREATESTRUCT)lParam);
break;
case WM_CUT:
@ -2720,7 +2720,7 @@ static void EDIT_WM_Copy(WND *wnd, EDITSTATE *es)
* WM_CREATE
*
*/
static LRESULT EDIT_WM_Create(WND *wnd, EDITSTATE *es, LPCREATESTRUCTA cs)
static LRESULT EDIT_WM_Create(WND *wnd, EDITSTATE *es, LPCREATESTRUCT cs)
{
/*
* To initialize some final structure members, we call some helper
@ -3231,7 +3231,7 @@ static LRESULT EDIT_WM_MouseMove(WND *wnd, EDITSTATE *es, DWORD keys, INT x, INT
* WM_NCCREATE
*
*/
static LRESULT EDIT_WM_NCCreate(WND *wnd, LPCREATESTRUCTA cs)
static LRESULT EDIT_WM_NCCreate(WND *wnd, LPCREATESTRUCT cs)
{
EDITSTATE *es;

View file

@ -2498,7 +2498,7 @@ LRESULT WINAPI ComboLBWndProc( HWND hwnd, UINT msg,
switch( msg )
{
case WM_CREATE:
#define lpcs ((LPCREATESTRUCTA)lParam)
#define lpcs ((LPCREATESTRUCT)lParam)
DPRINT( "\tpassed parent handle = 0x%08x\n",
(UINT)lpcs->lpCreateParams);

View file

@ -855,7 +855,7 @@ LRESULT STDCALL ScrollBarWndProc( HWND hwnd, UINT message, WPARAM wParam,
{
case WM_CREATE:
{
CREATESTRUCTA *lpCreat = (CREATESTRUCTA *)lParam;
CREATESTRUCT *lpCreat = (CREATESTRUCT *)lParam;
if (lpCreat->style & SBS_SIZEBOX)
{
DPRINT( "FIXME Unimplemented style SBS_SIZEBOX.\n" );

View file

@ -32,15 +32,12 @@ BOOL WIN_CreateDesktopWindow(void)
DPRINT("Creating desktop window\n");
#if 0
if (!ICONTITLE_Init() ||
!WINPOS_CreateInternalPosAtom() ||
!(class = CLASS_FindClassByAtom( STRING2ATOM(DESKTOP_CLASS_NAME) , 0 )))
class = CLASS_FindClassByAtom( STRING2ATOMW(DESKTOP_CLASS_NAME) , 0 );
if ( class == NULL )
return FALSE;
#else
WINPOS_CreateInternalPosAtom();
class = CLASS_FindClassByAtom( STRING2ATOMW(DESKTOP_CLASS_NAME) , 0 );
#endif
hwndDesktop = HeapAlloc(GetProcessHeap(),0, sizeof(WND)+class->cbWndExtra );
if (!hwndDesktop) return FALSE;
pWndDesktop = (WND *) ( hwndDesktop );
@ -72,7 +69,7 @@ BOOL WIN_CreateDesktopWindow(void)
pWndDesktop->dwStyle = WS_VISIBLE | WS_CLIPCHILDREN |
WS_CLIPSIBLINGS;
pWndDesktop->dwExStyle = 0;
pWndDesktop->dce = NULL;
pWndDesktop->dce = DCE_AllocDCE(pWndDesktop,DCE_WINDOW_DC);
pWndDesktop->pVScroll = NULL;
pWndDesktop->pHScroll = NULL;
pWndDesktop->pProp = NULL;
@ -96,7 +93,7 @@ BOOL WIN_CreateDesktopWindow(void)
HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
{
HANDLE hWnd;
WND *wndPtr;
STARTUPINFO StartupInfo;
CLASS *classPtr = NULL;
@ -137,7 +134,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
wndPtr->class = classPtr;
wndPtr->hwndSelf = wndPtr;
hWnd = wndPtr->hwndSelf;
/* Fill the window structure */
@ -152,8 +149,8 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
}
else
{
wndPtr->parent = pWndDesktop;
if (!cs->hwndParent || (cs->hwndParent == pWndDesktop->hwndSelf))
wndPtr->parent = WIN_GetDesktop();
if (!cs->hwndParent || (cs->hwndParent == WIN_GetDesktop()->hwndSelf))
wndPtr->owner = NULL;
else
{
@ -167,8 +164,8 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
/*
else
{
wndPtr->parent = pWndDesktop;
if (!cs->hWndParent || (cs->hWndParent == pWndDesktop->hwndSelf))
wndPtr->parent = WIN_GetDesktop();
if (!cs->hWndParent || (cs->hWndParent == WIN_GetDesktop()->hwndSelf))
wndPtr->owner = NULL;
else
wndPtr->owner = WIN_GetTopParentPtr(WIN_FindWndPtr(cs->hWndParent));
@ -177,7 +174,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
wndPtr->winproc = classPtr->winproc;
wndPtr->dwMagic = WND_MAGIC;
//wndPtr->hwndSelf = hWnd;
wndPtr->hInstance = cs->hInstance;
wndPtr->text = NULL;
wndPtr->hmemTaskQ = GetFastQueue();
@ -193,7 +190,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
wndPtr->pProp = NULL;
wndPtr->userdata = 0;
wndPtr->hSysMenu = (wndPtr->dwStyle & WS_SYSMENU)
? MENU_GetSysMenu( hWnd, 0 ) : 0;
? MENU_GetSysMenu( wndPtr->hwndSelf, 0 ) : 0;
if (classPtr->cbWndExtra)
HEAP_memset( wndPtr->wExtra, 0, classPtr->cbWndExtra);
@ -210,7 +207,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
cbtc.lpcs = cs;
cbtc.hwndInsertAfter = hWndLinkAfter;
ret = HOOK_CallHooks(WH_CBT, HCBT_CREATEWND, (INT)hWnd, (LPARAM)&cbtc, classPtr->bUnicode);
ret = HOOK_CallHooks(WH_CBT, HCBT_CREATEWND, (INT)wndPtr->hwndSelf, (LPARAM)&cbtc, classPtr->bUnicode);
if (ret)
{
@ -331,7 +328,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
if ((wndPtr->dwStyle & (WS_CAPTION | WS_CHILD)) == WS_CAPTION )
{
if (cs->hMenu)
SetMenu(hWnd, cs->hMenu);
SetMenu(wndPtr->hwndSelf, cs->hMenu);
else
{
if (classPtr->menuName) {
@ -364,9 +361,9 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
/* Insert the window in the linked list */
WIN_LinkWindow( hWnd, hWndLinkAfter );
WIN_LinkWindow( wndPtr->hwndSelf, hWndLinkAfter );
WINPOS_SendNCCalcSize( hWnd, FALSE, &wndPtr->rectWindow,
WINPOS_SendNCCalcSize( wndPtr->hwndSelf, FALSE, &wndPtr->rectWindow,
NULL, NULL, 0, &wndPtr->rectClient );
OffsetRect(&wndPtr->rectWindow, maxPos.x - wndPtr->rectWindow.left,
maxPos.y - wndPtr->rectWindow.top);
@ -374,7 +371,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
if( (MSG_SendMessage( wndPtr, WM_CREATE, 0, (LPARAM)cs)) == -1 )
{
WIN_UnlinkWindow( hWnd );
WIN_UnlinkWindow( wndPtr->hwndSelf );
WIN_DestroyWindow( wndPtr );
return NULL;
}
@ -405,7 +402,7 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
swFlag = ((wndPtr->dwStyle & WS_CHILD) || GetActiveWindow())
? SWP_NOACTIVATE | SWP_NOZORDER | SWP_FRAMECHANGED
: SWP_NOZORDER | SWP_FRAMECHANGED;
SetWindowPos( hWnd, 0, newPos.left, newPos.top,
SetWindowPos( wndPtr->hwndSelf, 0, newPos.left, newPos.top,
newPos.right, newPos.bottom, swFlag );
}
@ -414,19 +411,19 @@ HANDLE WIN_CreateWindowEx( CREATESTRUCT *cs, ATOM classAtom)
/* Notify the parent window only */
MSG_SendMessage( wndPtr->parent, WM_PARENTNOTIFY,
MAKEWPARAM(WM_CREATE, wndPtr->wIDmenu), (LPARAM)hWnd );
if( !IsWindow(hWnd) ) return 0;
MAKEWPARAM(WM_CREATE, wndPtr->wIDmenu), (LPARAM)wndPtr->hwndSelf );
if( !IsWindow(wndPtr->hwndSelf) ) return 0;
}
if (cs->style & WS_VISIBLE)
ShowWindow( hWnd, SW_SHOW );
ShowWindow( wndPtr->hwndSelf, SW_SHOW );
/* Call WH_SHELL hook */
if (!(wndPtr->dwStyle & WS_CHILD) && !wndPtr->owner)
HOOK_CallHooks( WH_SHELL, HSHELL_WINDOWCREATED, (INT)hWnd, 0L, classPtr->bUnicode);
HOOK_CallHooks( WH_SHELL, HSHELL_WINDOWCREATED, (INT)wndPtr->hwndSelf, 0L, classPtr->bUnicode);
return hWnd;
return wndPtr->hwndSelf;
}
@ -445,14 +442,14 @@ WINBOOL WIN_IsWindow(HANDLE hWnd)
HWND WIN_FindWinToRepaint( HWND hwnd, HQUEUE hQueue )
{
HWND hwndRet;
WND *pWnd = pWndDesktop;
WND *pWnd = WIN_GetDesktop();
/* Note: the desktop window never gets WM_PAINT messages
* The real reason why is because Windows DesktopWndProc
* does ValidateRgn inside WM_ERASEBKGND handler.
*/
pWnd = hwnd ? WIN_FindWndPtr( hwnd ) : pWndDesktop->child;
pWnd = hwnd ? WIN_FindWndPtr( hwnd ) : WIN_GetDesktop()->child;
for ( ; pWnd ; pWnd = pWnd->next )
{

View file

@ -41,7 +41,10 @@ HWND WINPOS_GetActiveWindow(void)
WINBOOL WINPOS_CreateInternalPosAtom()
{
LPSTR str = "SysIP";
atomInternalPos = (LPCSTR)(DWORD)GlobalAddAtomA(str);
atomInternalPos ="SysIP";
// atomInternalPos = (LPCSTR)(DWORD)GlobalAddAtomA(str);
//if ( atomInternalPos == NULL )
// atomInternalPos = (LPCSTR)(DWORD)GlobalFindAtom(str);
return (atomInternalPos) ? TRUE : FALSE;
}

View file

@ -27,6 +27,13 @@ DllMain(
case DLL_PROCESS_ATTACH:
//WinStation = CreateWindowStationA(NULL,0,GENERIC_ALL,NULL);
//Desktop = CreateDesktopA(NULL,NULL,NULL,0,0,NULL);
WINPOS_CreateInternalPosAtom();
SYSCOLOR_Init();
WIDGETS_Init();
ICONTITLE_Init();
DIALOG_Init();
COMBO_Init();
MENU_Init();
break;
case DLL_THREAD_ATTACH:
break;

View file

@ -10,9 +10,10 @@ int main(int argc, char **argv)
{
WINPOS_CreateInternalPosAtom();
SYSCOLOR_Init();
WIDGETS_Init();
ICONTITLE_Init();
DIALOG_Init();
COMBO_Init();
MENU_Init();

View file

@ -6,8 +6,8 @@
//#include <user32/heapdup.h>
#define MDICREATESTRUCTA MDICREATESTRUCT
#define MDICREATESTRUCTW MDICREATESTRUCT
#define MDICREATESTRUCT MDICREATESTRUCT
#define MDICREATESTRUCT MDICREATESTRUCT
/**********************************************************************
@ -124,7 +124,7 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam,
{
case WM_NCCREATE:
{
CREATESTRUCTA *cs = (CREATESTRUCTA *)lParam;
CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
if (cs->lpszName) DEFWND_SetTextA( wndPtr, cs->lpszName );
result = 1;
}
@ -191,7 +191,7 @@ LRESULT WINAPI DefWindowProcW( HWND hwnd, UINT msg, WPARAM wParam,
{
case WM_NCCREATE:
{
CREATESTRUCTW *cs = (CREATESTRUCTW *)lParam;
CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
if (cs->lpszName) DEFWND_SetTextW( wndPtr, cs->lpszName );
result = 1;
}
@ -303,10 +303,10 @@ INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM *plparam
case WM_NCCREATE:
case WM_CREATE:
{
CREATESTRUCTW *cs = (CREATESTRUCTW *)HeapAlloc( GetProcessHeap(), 0,
CREATESTRUCT *cs = (CREATESTRUCT *)HeapAlloc( GetProcessHeap(), 0,
sizeof(*cs) );
if (!cs) return -1;
*cs = *(CREATESTRUCTW *)*plparam;
*cs = *(CREATESTRUCT *)*plparam;
if (HIWORD(cs->lpszName))
cs->lpszName = HEAP_strdupAtoW( GetProcessHeap(), 0,
(LPCSTR)cs->lpszName );
@ -318,7 +318,7 @@ INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM *plparam
return 1;
case WM_MDICREATE:
{
MDICREATESTRUCTW *cs = HeapAlloc( GetProcessHeap(), 0, sizeof(MDICREATESTRUCT) );
MDICREATESTRUCT *cs = HeapAlloc( GetProcessHeap(), 0, sizeof(MDICREATESTRUCT) );
if (!cs) return -1;
*cs = *(MDICREATESTRUCT *)*plparam;
if (HIWORD(cs->szClass))
@ -410,7 +410,7 @@ void WINPROC_UnmapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
case WM_NCCREATE:
case WM_CREATE:
{
CREATESTRUCTW *cs = (CREATESTRUCTW *)lParam;
CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
if (HIWORD(cs->lpszName))
HeapFree( GetProcessHeap(), 0, (LPVOID)cs->lpszName );
if (HIWORD(cs->lpszClass))
@ -421,7 +421,7 @@ void WINPROC_UnmapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
case WM_MDICREATE:
{
MDICREATESTRUCTW *cs = (MDICREATESTRUCTW *)lParam;
MDICREATESTRUCT *cs = (MDICREATESTRUCT *)lParam;
if (HIWORD(cs->szTitle))
HeapFree( GetProcessHeap(), 0, (LPVOID)cs->szTitle );
if (HIWORD(cs->szClass))
@ -522,10 +522,10 @@ INT WINPROC_MapMsg32WTo32A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM *plparam
case WM_NCCREATE:
case WM_CREATE:
{
CREATESTRUCTA *cs = (CREATESTRUCTA *)HeapAlloc( GetProcessHeap(), 0,
CREATESTRUCT *cs = (CREATESTRUCT *)HeapAlloc( GetProcessHeap(), 0,
sizeof(*cs) );
if (!cs) return -1;
*cs = *(CREATESTRUCTA *)*plparam;
*cs = *(CREATESTRUCT *)*plparam;
if (HIWORD(cs->lpszName))
cs->lpszName = HEAP_strdupWtoA( GetProcessHeap(), 0,
(LPCWSTR)cs->lpszName );
@ -537,10 +537,10 @@ INT WINPROC_MapMsg32WTo32A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM *plparam
return 1;
case WM_MDICREATE:
{
MDICREATESTRUCTA *cs =
(MDICREATESTRUCTA *)HeapAlloc( GetProcessHeap(), 0, sizeof(*cs) );
MDICREATESTRUCT *cs =
(MDICREATESTRUCT *)HeapAlloc( GetProcessHeap(), 0, sizeof(*cs) );
if (!cs) return -1;
*cs = *(MDICREATESTRUCTA *)*plparam;
*cs = *(MDICREATESTRUCT *)*plparam;
if (HIWORD(cs->szTitle))
cs->szTitle = HEAP_strdupWtoA( GetProcessHeap(), 0,
(LPCWSTR)cs->szTitle );
@ -643,7 +643,7 @@ void WINPROC_UnmapMsg32WTo32A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
case WM_NCCREATE:
case WM_CREATE:
{
CREATESTRUCTA *cs = (CREATESTRUCTA *)lParam;
CREATESTRUCT *cs = (CREATESTRUCT *)lParam;
if (HIWORD(cs->lpszName))
HeapFree( GetProcessHeap(), 0, (LPVOID)cs->lpszName );
if (HIWORD(cs->lpszClass))
@ -654,7 +654,7 @@ void WINPROC_UnmapMsg32WTo32A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
case WM_MDICREATE:
{
MDICREATESTRUCTA *cs = (MDICREATESTRUCTA *)lParam;
MDICREATESTRUCT *cs = (MDICREATESTRUCT *)lParam;
if (HIWORD(cs->szTitle))
HeapFree( GetProcessHeap(), 0, (LPVOID)cs->szTitle );
if (HIWORD(cs->szClass))