Files
Work/mdiwin/MDIWIN.CPP
2024-08-07 09:16:27 -04:00

41 lines
925 B
C++

#include <mdiwin/mdiwin.hpp>
MDIWindow::MDIWindow()
: mhWnd(0)
{
}
MDIWindow::~MDIWindow()
{
if(GetHandle())::DestroyWindow(GetHandle());
}
long FAR PASCAL _export MDIWindow::MDIWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
MDIWindow *pWindow=MDIWindow::GetPointer(hWnd);
if(pWindow)
{
long retCode=pWindow->WndProc(message,wParam,lParam);
if(WM_NCDESTROY==message)
{
MDIWindow::SetPointer(hWnd,0);
pWindow->SetHandle(0);
}
return retCode;
}
if(message==WM_NCCREATE)
{
::DefMDIChildProc(hWnd,message,wParam,lParam);
LPCREATESTRUCT lpcs=(LPCREATESTRUCT)lParam;
LPMDICREATESTRUCT lpcm=(LPMDICREATESTRUCT)lpcs->lpCreateParams;
pWindow=(MDIWindow *)lpcm->lParam;
if(!pWindow)return FALSE;
MDIWindow::SetPointer(hWnd,pWindow);
pWindow->SetHandle(hWnd);
return pWindow->WndProc(message,wParam,lParam);
}
else return ::DefMDIChildProc(hWnd,message,wParam,lParam);
}