CreateWindowEx32[AW] now creates an MDI chils when the WM_EX_MDICHILD

extended style is specified. Also implemented CreateMDIWindow32A()
call - single thread only -.
This commit is contained in:
Rein Klazes 1998-11-01 14:50:06 +00:00 committed by Alexandre Julliard
parent 0d3f09f3a4
commit 5c6fc1bb91
5 changed files with 98 additions and 11 deletions

View File

@ -37,5 +37,9 @@ typedef struct
HWND32 self;
} MDICLIENTINFO;
extern HWND32 MDI_CreateMDIWindow32A(LPCSTR,LPCSTR,DWORD,INT32,INT32,
INT32,INT32,HWND32,HINSTANCE32,LPARAM);
extern HWND32 MDI_CreateMDIWindow32W(LPCWSTR,LPCWSTR,DWORD,INT32,INT32,
INT32,INT32,HWND32,HINSTANCE32,LPARAM);
#endif /* __WINE_MDI_H */

View File

@ -7557,6 +7557,11 @@ HWND32 WINAPI CreateWindowEx32A(DWORD,LPCSTR,LPCSTR,DWORD,INT32,INT32,
HWND32 WINAPI CreateWindowEx32W(DWORD,LPCWSTR,LPCWSTR,DWORD,INT32,INT32,
INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID);
#define CreateWindowEx WINELIB_NAME_AW(CreateWindowEx)
HWND32 WINAPI CreateMDIWindow32A(LPCSTR,LPCSTR,DWORD,INT32,INT32,
INT32,INT32,HWND32,HINSTANCE32,LPARAM);
HWND32 WINAPI CreateMDIWindow32W(LPCWSTR,LPCWSTR,DWORD,INT32,INT32,
INT32,INT32,HWND32,HINSTANCE32,LPARAM);
#define CreateMDIWindow WINELIB_NAME_AW(CreateMDIWindow)
LRESULT WINAPI DefDlgProc16(HWND16,UINT16,WPARAM16,LPARAM);
LRESULT WINAPI DefDlgProc32A(HWND32,UINT32,WPARAM32,LPARAM);
LRESULT WINAPI DefDlgProc32W(HWND32,UINT32,WPARAM32,LPARAM);

View File

@ -79,8 +79,8 @@ type win32
76 stdcall CreateIconFromResource (ptr long long long) CreateIconFromResource32
77 stdcall CreateIconFromResourceEx(ptr long long long long long long) CreateIconFromResourceEx32
78 stdcall CreateIconIndirect(ptr) CreateIconIndirect
79 stdcall CreateMDIWindowA(ptr ptr long long long long long long long long) CreateMDIWindowA
80 stdcall CreateMDIWindowW(ptr ptr long long long long long long long long) CreateMDIWindowW
79 stdcall CreateMDIWindowA(ptr ptr long long long long long long long long) CreateMDIWindow32A
80 stdcall CreateMDIWindowW(ptr ptr long long long long long long long long) CreateMDIWindow32W
81 stdcall CreateMenu() CreateMenu32
82 stdcall CreatePopupMenu() CreatePopupMenu32
83 stdcall CreateWindowExA(long str str long long long long long long long long ptr) CreateWindowEx32A

View File

@ -1527,9 +1527,36 @@ LRESULT WINAPI DefMDIChildProc32W( HWND32 hwnd, UINT32 message,
/**********************************************************************
* CreateMDIWindowA [USER32.79]
* CreateMDIWindowA [USER32.79] Creates a MDI child in new thread
* FIXME: its in the same thread now
*
* RETURNS
* Success: Handle to created window
* Failure: NULL
*/
HWND32 WINAPI CreateMDIWindowA(
HWND32 CreateMDIWindow32A(
LPCSTR lpClassName, /* [in] Pointer to registered child class name */
LPCSTR lpWindowName, /* [in] Pointer to window name */
DWORD dwStyle, /* [in] Window style */
INT32 X, /* [in] Horizontal position of window */
INT32 Y, /* [in] Vertical position of window */
INT32 nWidth, /* [in] Width of window */
INT32 nHeight, /* [in] Height of window */
HWND32 hWndParent, /* [in] Handle to parent window */
HINSTANCE32 hInstance, /* [in] Handle to application instance */
LPARAM lParam) /* [in] Application-defined value */
{
WARN(mdi,"is only single threaded!\n");
return MDI_CreateMDIWindow32A(lpClassName, lpWindowName, dwStyle, X, Y,
nWidth, nHeight, hWndParent, hInstance, lParam);
}
/**********************************************************************
* MDI_CreateMDIWindowA
* single threaded version of CreateMDIWindowA
* called by CreateWindowEx32A
*/
HWND32 MDI_CreateMDIWindow32A(
LPCSTR lpClassName,
LPCSTR lpWindowName,
DWORD dwStyle,
@ -1541,20 +1568,65 @@ HWND32 WINAPI CreateMDIWindowA(
HINSTANCE32 hInstance,
LPARAM lParam)
{
FIXME(mdi, "(%s,%s,%ld,...): stub\n",debugstr_a(lpClassName),
debugstr_a(lpWindowName),dwStyle);
return (HWND32)NULL;
MDICLIENTINFO* pCi;
MDICREATESTRUCT32A cs;
WND *pWnd=WIN_FindWndPtr(hWndParent);
TRACE(mdi, "(%s,%s,%ld,%d,%d,%d,%d,%x,%d,%ld)\n",
debugstr_a(lpClassName),debugstr_a(lpWindowName),dwStyle,X,Y,
nWidth,nHeight,hWndParent,hInstance,lParam);
if(!pWnd){
ERR(mdi," bad hwnd for MDI-client: %d\n",hWndParent);
return 0;
}
cs.szClass=lpClassName;
cs.szTitle=lpWindowName;
cs.hOwner=hInstance;
cs.x=X;
cs.y=Y;
cs.cx=nWidth;
cs.cy=nHeight;
cs.style=dwStyle;
cs.lParam=lParam;
pCi=(MDICLIENTINFO *)pWnd->wExtra;
return MDICreateChild(pWnd,pCi,hWndParent,&cs);
}
/******************************************************************************
* CreateMDIWindowW [USER32.80] Creates a MDI child window
/***************************************
* CreateMDIWindow32W [USER32.80] Creates a MDI child in new thread
*
* RETURNS
* Success: Handle to created window
* Failure: NULL
*/
HWND32 WINAPI CreateMDIWindowW(
HWND32 CreateMDIWindow32W(
LPCWSTR lpClassName, /* [in] Pointer to registered child class name */
LPCWSTR lpWindowName, /* [in] Pointer to window name */
DWORD dwStyle, /* [in] Window style */
INT32 X, /* [in] Horizontal position of window */
INT32 Y, /* [in] Vertical position of window */
INT32 nWidth, /* [in] Width of window */
INT32 nHeight, /* [in] Height of window */
HWND32 hWndParent, /* [in] Handle to parent window */
HINSTANCE32 hInstance, /* [in] Handle to application instance */
LPARAM lParam) /* [in] Application-defined value */
{
FIXME(mdi, "(%s,%s,%ld,%d,%d,%d,%d,%x,%d,%ld): stub\n",
debugstr_w(lpClassName),debugstr_w(lpWindowName),dwStyle,X,Y,
nWidth,nHeight,hWndParent,hInstance,lParam);
return (HWND32)NULL;
}
/******************************************************************************
* CreateMDIWindow32W [USER32.80] Creates a MDI child window
* single threaded version of CreateMDIWindow
* called by CreateWindowEx32W().
*/
HWND32 MDI_CreateMDIWindow32W(
LPCWSTR lpClassName, /* [in] Pointer to registered child class name */
LPCWSTR lpWindowName, /* [in] Pointer to window name */
DWORD dwStyle, /* [in] Window style */

View File

@ -32,6 +32,7 @@
#include "process.h"
#include "debug.h"
#include "winerror.h"
#include "mdi.h"
/* Desktop window */
static WND *pWndDesktop = NULL;
@ -885,6 +886,8 @@ HWND32 WINAPI CreateWindowEx32A( DWORD exStyle, LPCSTR className,
ATOM classAtom;
CREATESTRUCT32A cs;
if(exStyle & WS_EX_MDICHILD)
return MDI_CreateMDIWindow32A(className, windowName, style, x, y, width, height, parent, instance, data);
/* Find the class atom */
if (!(classAtom = GlobalFindAtom32A( className )))
@ -925,6 +928,9 @@ HWND32 WINAPI CreateWindowEx32W( DWORD exStyle, LPCWSTR className,
ATOM classAtom;
CREATESTRUCT32W cs;
if(exStyle & WS_EX_MDICHILD)
return MDI_CreateMDIWindow32W(className, windowName, style, x, y, width, height, parent, instance, data);
/* Find the class atom */
if (!(classAtom = GlobalFindAtom32W( className )))