Initial
This commit is contained in:
57
mdiwin/DWINDOW.CPP
Normal file
57
mdiwin/DWINDOW.CPP
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <mdiwin/dwindow.hpp>
|
||||
|
||||
DWindow::DWindow()
|
||||
: mhWnd(0)
|
||||
{
|
||||
}
|
||||
|
||||
DWindow::~DWindow()
|
||||
{
|
||||
if(GetHandle())::DestroyWindow(GetHandle());
|
||||
}
|
||||
|
||||
LONG FAR PASCAL DWindow::DialogProcedure(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
|
||||
{
|
||||
int returnCode;
|
||||
DWindow *pDWindow=DWindow::GetPointer(hWnd);
|
||||
if(0==pDWindow)
|
||||
{
|
||||
if(WM_INITDIALOG==message)
|
||||
{
|
||||
pDWindow=(DWindow*)lParam;
|
||||
DWindow::SetPointer(hWnd,pDWindow);
|
||||
pDWindow->SetHandle(hWnd);
|
||||
return pDWindow->DlgProc(message,wParam,lParam);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
returnCode=pDWindow->DlgProc(message,wParam,lParam);
|
||||
if(WM_NCDESTROY==message)
|
||||
{
|
||||
#if defined (__LARGE__) || defined (__COMPACT__)
|
||||
::RemoveProp(hWnd,"HIWORD");
|
||||
#endif
|
||||
::RemoveProp(hWnd,(LPSTR)"LOWORD");
|
||||
pDWindow->SetHandle(0);
|
||||
}
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
#if defined (__LARGE__) || defined (__COMPACT__)
|
||||
DWindow *DWindow::GetPointer(HWND hWnd)
|
||||
{
|
||||
HANDLE handleSegment;
|
||||
HANDLE handleOffset;
|
||||
|
||||
handleSegment=::GetProp(hWnd,(LPSTR)"HIWORD");
|
||||
handleOffset=::GetProp(hWnd,(LPSTR)"LOWORD");
|
||||
return (DWindow*)(MK_FP(handleSegment,handleOffset));
|
||||
}
|
||||
|
||||
void DWindow::SetPointer(HWND hWnd,DWindow *pDWindow)
|
||||
{
|
||||
::SetProp(hWnd,"HIWORD",(HANDLE)FP_SEG(pDWindow));
|
||||
::SetProp(hWnd,"LOWORD",(HANDLE)FP_OFF(pDWindow));
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user