wxFrame::~wxFrame()
{
m_isBeingDeleted = TRUE;
+
wxTopLevelWindows.DeleteObject(this);
DeleteAllBars();
if (wxTheApp->GetExitOnFrameDelete())
{
- ::WinPostMsg(m_hFrame, WM_QUIT, 0, 0);
+ ::WinPostMsg(GetHWND(), WM_QUIT, 0, 0);
}
}
wxModelessWindows.DeleteObject(this);
::WinQueryWindowRect(GetHwnd(), &vRect);
- ::WinQueryWindowRect(m_hFrame, &vRect2);
+ ::WinQueryWindowRect(GetHWND(), &vRect2);
//
// Find the difference between the entire window (title bar and all)
{
RECTL vRect;
- ::WinQueryWindowRect(m_hFrame, &vRect);
+ ::WinQueryWindowRect(GetHWND(), &vRect);
*pWidth = vRect.xRight - vRect.xLeft;
*pHeight = vRect.yTop - vRect.yBottom;
} // end of wxFrame::DoGetSize
RECTL vRect;
POINTL vPoint;
- ::WinQueryWindowRect(m_hFrame, &vRect);
+ ::WinQueryWindowRect(GetHWND(), &vRect);
vPoint.x = vRect.xLeft;
//
int bShowCmd
)
{
- ::WinShowWindow(m_hFrame, (BOOL)bShowCmd);
+ ::WinShowWindow(GetHWND(), (BOOL)bShowCmd);
m_bIconized = bShowCmd == SWP_MINIMIZE;
} // end of wxFrame::DoShowWindow
{
wxActivateEvent vEvent(wxEVT_ACTIVATE, TRUE, m_windowId);
- ::WinQueryWindowPos(m_hFrame, &vSwp);
+ ::WinQueryWindowPos(GetHWND(), &vSwp);
m_bIconized = vSwp.fl & SWP_MINIMIZE;
- ::WinEnableWindow(m_hFrame, TRUE);
+ ::WinEnableWindow(GetHWND(), TRUE);
vEvent.SetEventObject(this);
GetEventHandler()->ProcessEvent(vEvent);
}
SWP vSwp;
bool bIconic;
- ::WinQueryWindowPos(m_hFrame, &vSwp);
+ ::WinQueryWindowPos(GetHWND(), &vSwp);
return (vSwp.fl & SWP_MAXIMIZE);
} // end of wxFrame::IsMaximized
if ((m_icon.GetHICON()) != NULLHANDLE)
{
- ::WinSendMsg( m_hFrame
+ ::WinSendMsg( GetHWND()
,WM_SETICON
,(MPARAM)((HPOINTER)m_icon.GetHICON())
,NULL
);
- ::WinSendMsg( m_hFrame
+ ::WinSendMsg( GetHWND()
,WM_UPDATEFRAME
,(MPARAM)FCF_ICON
,(MPARAM)0
// so we have to set the parent to actually be the Frame.
//
hWnd = pStatusBar->GetHWND();
- if (!::WinSetParent(hWnd, m_hFrame, FALSE))
+ if (!::WinSetParent(hWnd, GetHWND(), FALSE))
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
//
// Now resize the client to fit the new frame
//
- WinQueryWindowPos(m_hFrame, &vSwp);
- hTitlebar = WinWindowFromID(m_hFrame, FID_TITLEBAR);
+ WinQueryWindowPos(GetHWND(), &vSwp);
+ hTitlebar = WinWindowFromID(GetHWND(), FID_TITLEBAR);
WinQueryWindowPos(hTitlebar, &vSwpTitlebar);
- hHScroll = WinWindowFromID(m_hFrame, FID_HORZSCROLL);
+ hHScroll = WinWindowFromID(GetHWND(), FID_HORZSCROLL);
WinQueryWindowPos(hHScroll, &vSwpHScroll);
- hVScroll = WinWindowFromID(m_hFrame, FID_VERTSCROLL);
+ hVScroll = WinWindowFromID(GetHWND(), FID_VERTSCROLL);
WinQueryWindowPos(hVScroll, &vSwpVScroll);
- hMenuBar = WinWindowFromID(m_hFrame, FID_MENU);
+ hMenuBar = WinWindowFromID(GetHWND(), FID_MENU);
WinQueryWindowPos(hMenuBar, &vSwpMenu);
WinSetWindowPos( GetHwnd()
,HWND_TOP
//
// Set the parent and owner of the menubar to be the frame
//
- if (!::WinSetParent(m_hMenu, m_hFrame, FALSE))
+ if (!::WinSetParent(m_hMenu, GetHWND(), FALSE))
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Error setting parent for submenu. Error: %s\n", sError);
}
- if (!::WinSetOwner(m_hMenu, m_hFrame))
+ if (!::WinSetOwner(m_hMenu, GetHWND()))
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
wxLogError("Error setting parent for submenu. Error: %s\n", sError);
}
- WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
+ WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
} // end of wxFrame::InternalSetMenuBar
//
if (lStyle & wxFULLSCREEN_NOMENUBAR)
{
- ::WinSetParent(m_hMenu, m_hFrame, FALSE);
- ::WinSetOwner(m_hMenu, m_hFrame);
- ::WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
+ ::WinSetParent(m_hMenu, GetHWND(), FALSE);
+ ::WinSetOwner(m_hMenu, GetHWND());
+ ::WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
}
//
if ((m_lFsStyle & wxFULLSCREEN_NOMENUBAR) && (m_hMenu != 0))
{
- ::WinSetParent(m_hMenu, m_hFrame, FALSE);
- ::WinSetOwner(m_hMenu, m_hFrame);
- ::WinSendMsg((HWND)m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
+ ::WinSetParent(m_hMenu, GetHWND(), FALSE);
+ ::WinSetOwner(m_hMenu, GetHWND());
+ ::WinSendMsg((HWND)GetHWND(), WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0);
}
Maximize(m_bFsIsMaximized);
//
// Create the frame window
//
- if ((m_hFrame = ::WinCreateWindow( hParent // Frame is parent
- ,WC_FRAME // standard frame class
- ,(PSZ)zTitle // Window title
- ,0 // No styles
- ,0, 0, 0, 0 // Window position
- ,NULLHANDLE // Owner
- ,HWND_TOP // Sibling
- ,(ULONG)nId // ID
- ,(PVOID)&vFrameCtlData // Creation data
- ,NULL // Window Pres Params
- )) == 0L)
- {
- return FALSE;
- }
- if (!wxWindow::OS2Create( m_hFrame
- ,wxFrameClassName
- ,NULL
- ,0L
- ,0L
- ,0L
- ,0L
- ,0L
- ,m_hFrame
+ if (!wxWindow::OS2Create( hParent
+ ,WC_FRAME
+ ,(PSZ)zTitle
+ ,0
+ ,0, 0, 0, 0
+ ,NULLHANDLE
,HWND_TOP
- ,(unsigned long)FID_CLIENT
- ,NULL
+ ,(ULONG)nId
+ ,(PVOID)&vFrameCtlData
,NULL
))
{
//
// Now size everything. If adding a menu the client will need to be resized.
//
- if (!::WinSetWindowPos( m_hFrame
+
+ if (!::WinSetWindowPos( GetHWND()
,HWND_TOP
,nX
,nY
))
return FALSE;
- uCtlCount = SHORT1FROMMP(::WinSendMsg(m_hFrame, WM_FORMATFRAME, (MPARAM)vSwp, (MPARAM)vRect));
+ uCtlCount = SHORT1FROMMP(::WinSendMsg(GetHWND(), WM_FORMATFRAME, (MPARAM)vSwp, (MPARAM)vRect));
for (int i = 0; i < uCtlCount; i++)
{
- if (vSwp[i].hwnd == m_hFrame)
+ if (vSwp[i].hwnd == GetHWND())
memcpy(&m_vSwp, &vSwp[i], sizeof(SWP));
else if (vSwp[i].hwnd == m_hVScroll)
memcpy(&m_vSwpVScroll, &vSwp[i], sizeof(SWP));
return FALSE;
const wxAcceleratorTable& rAcceleratorTable = pMenuBar->GetAccelTable();
- return rAcceleratorTable.Translate(m_hFrame, pMsg);
+ return rAcceleratorTable.Translate(GetHWND(), pMsg);
} // end of wxFrame::OS2TranslateMessage
// ---------------------------------------------------------------------------
{
RECTL vRect;
- if (::WinQueryUpdateRect(GetHwnd(), &vRect))
+ if (::WinQueryUpdateRect(GetHWND(), &vRect))
{
if (m_bIconized)
{
HPOINTER hIcon;
if (m_icon.Ok())
- hIcon = (HPOINTER)::WinSendMsg(m_hFrame, WM_QUERYICON, 0L, 0L);
+ hIcon = (HPOINTER)::WinSendMsg(GetHWND(), WM_QUERYICON, 0L, 0L);
else
hIcon = (HPOINTER)m_hDefaultIcon;
}
else
{
+/* DosBeep(500,500);
HPS hPS;
RECTL vRect;
hPS = WinBeginPaint(GetHwnd(), 0L, &vRect);
WinFillRect(hPS, &vRect, SYSCLR_WINDOW);
- WinEndPaint(hPS);
+ WinEndPaint(hPS);*/
return wxWindow::HandlePaint();
}
, WXHMENU hMenu
)
{
- int nMenuItem;
+// int nMenuItem;
+/* This is wrong section according to IBM's documentation
if (nFlags == 0xFFFF && hMenu == 0)
{
//
//
return FALSE;
}
- wxMenuEvent vEvent(wxEVT_MENU_HIGHLIGHT, nMenuItem);
+*/
- vEvent.SetEventObject(this);
- return GetEventHandler()->ProcessEvent(vEvent);
+ if( !nFlags )
+ {
+ MENUITEM mItem;
+ MRESULT rc;
+
+ rc = WinSendMsg(hMenu, MM_QUERYITEM, MPFROM2SHORT(nItem, TRUE), (MPARAM)&mItem);
+
+ if(rc && !(mItem.afStyle & (MIS_SUBMENU | MIS_SEPARATOR)))
+ {
+ wxMenuEvent vEvent(wxEVT_MENU_HIGHLIGHT, nItem);
+
+ vEvent.SetEventObject(this);
+ GetEventHandler()->ProcessEvent(vEvent); // return value would be ignored by PM
+ }
+ }
+ return TRUE;
} // end of wxFrame::HandleMenuSelect
// ---------------------------------------------------------------------------
,wFlags
,hMenu
);
+ mRc = (MRESULT)TRUE;
}
break;
HPOINTER hIcon;
if (m_icon.Ok())
- hIcon = (HPOINTER)::WinSendMsg(m_hFrame, WM_QUERYICON, 0L, 0L);
+ hIcon = (HPOINTER)::WinSendMsg(GetHWND(), WM_QUERYICON, 0L, 0L);
else
hIcon = (HPOINTER)m_hDefaultIcon;
mRc = (MRESULT)hIcon;
,wParam
,lParam
);
- return (MRESULT)0;
+ return (MRESULT)mRc;
} // wxFrame::OS2WindowProc
if (m_parent)
m_parent->RemoveChild(this);
DestroyChildren();
+
if (m_hWnd)
{
+// UnsubclassWin();
+
if(!::WinDestroyWindow(GetHWND()))
wxLogLastError(wxT("DestroyWindow"));
//
,NULLHANDLE
,m_windowId
);
+
return(TRUE);
} // end of wxWindow::Create
wxCHECK_RET(::WinIsWindow(vHabmain, hwnd), wxT("invalid HWND in SubclassWin") );
- wxAssociateWinWithHandle(hwnd, this);
+// wxAssociateWinWithHandle(hwnd, this);
m_fnOldWndProc = (WXFARPROC) ::WinSubclassWindow(hwnd, (PFNWP)wxWndProc);
- ::WinSetWindowULong(hwnd, QWS_USER, (ULONG)wxWndProc);
+// ::WinSetWindowULong(hwnd, QWL_USER, (ULONG)wxWndProc);
} // end of wxWindow::SubclassWin
void wxWindow::UnsubclassWin()
{
- wxRemoveHandleAssociation(this);
+// wxRemoveHandleAssociation(this);
//
// Restore old Window proc
//
- HWND hwnd = GetHwnd();
+ HWND hwnd = GetHWND();
- if (hwnd)
+ if (m_hWnd)
{
- m_hWnd = 0;
+// m_hWnd = 0;
wxCHECK_RET( ::WinIsWindow(vHabmain, hwnd), wxT("invalid HWND in UnsubclassWin") );
- PFNWP fnProc = (PFNWP)::WinQueryWindowULong(hwnd, QWS_USER);
+ PFNWP fnProc = (PFNWP)::WinQueryWindowPtr(hwnd, QWP_PFNWP);
if ( (m_fnOldWndProc != 0) && (fnProc != (PFNWP) m_fnOldWndProc))
{
WinSubclassWindow(hwnd, (PFNWP)m_fnOldWndProc);
)
{
if (m_fnOldWndProc)
- return ((MRESULT)m_fnOldWndProc());
+ return (MRESULT)m_fnOldWndProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam);
else
- return (::WinDefWindowProc(GetHwnd(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam));
+ return ::WinDefWindowProc(GetHWND(), (ULONG)uMsg, (MPARAM)wParam, (MPARAM)lParam);
} // end of wxWindow::OS2DefWindowProc
bool wxWindow::OS2ProcessMessage(
pWnd->SetHWND((WXHWND)hWnd);
}
- MRESULT rc;
+ MRESULT rc = (MRESULT)FALSE;
+
//
// Stop right here if we don't have a valid handle in our wxWindow object.
{
if (pWnd)
rc = pWnd->OS2WindowProc(ulMsg, wParam, lParam);
- if (!rc)
+ else
rc = ::WinDefWindowProc(hWnd, ulMsg, wParam, lParam);
}
return rc;
// Did we process the uMsg?
//
bool bProcessed = FALSE;
+ bool bAllow;
+ MRESULT mResult;
+ WXHICON hIcon;
+ WXHBRUSH hBrush;
//
// The return value
//
- union
- {
- bool bAllow;
- MRESULT mResult;
- WXHICON hIcon;
- WXHBRUSH hBrush;
- } vRc;
+// union
+// {
+// bool bAllow;
+// MRESULT mResult;
+// WXHICON hIcon;
+// WXHBRUSH hBrush;
+// } vRc;
//
// For most messages we should return 0 when we do process the message
//
- vRc.mResult = (MRESULT)0;
+ mResult = (MRESULT)0;
switch (uMsg)
{
//
// Return 0 to bAllow window creation
//
- vRc.mResult = (MRESULT)(bMayCreate ? 0 : -1);
+ mResult = (MRESULT)(bMayCreate ? 0 : -1);
}
}
break;
case WM_DESTROY:
- bProcessed = HandleDestroy();
- break;
+ HandleDestroy();
+ bProcessed = TRUE;
+ delete this;
+ break;
case WM_MOVE:
bProcessed = HandleMove( LOWORD(lParam)
bProcessed = HandleActivate( wState
,(WXHWND)hWnd
);
+ bProcessed = FALSE;
}
break;
// ourselves in ~wxWindow
//
bProcessed = TRUE;
- vRc.mResult = (MRESULT)TRUE;
+ mResult = (MRESULT)TRUE;
break;
case WM_SHOW:
}
if ( bProcessed )
- vRc.mResult = (MRESULT)TRUE;
+ mResult = (MRESULT)TRUE;
}
break;
case WM_QUERYDLGCODE:
if ( m_lDlgCode )
{
- vRc.mResult = (MRESULT)m_lDlgCode;
+ mResult = (MRESULT)m_lDlgCode;
bProcessed = TRUE;
}
//
#if defined(__VISAGECPP__) && (__IBMCPP__ >= 400)
case WM_CTLCOLORCHANGE:
{
- bProcessed = HandleCtlColor(&vRc.hBrush);
+ bProcessed = HandleCtlColor(&hBrush);
}
break;
#endif
//
// We processed the message, i.e. erased the background
//
- vRc.mResult = (MRESULT)TRUE;
+ mResult = (MRESULT)TRUE;
}
break;
if ( bProcessed )
{
// we never set focus from here
- vRc.mResult = FALSE;
+ mResult = FALSE;
}
break;
case WM_SYSVALUECHANGED:
// TODO: do something
- vRc.mResult = (MRESULT)TRUE;
+ mResult = (MRESULT)TRUE;
break;
//
// processing this message - exactly what we need because we've
// just set the cursor.
//
- vRc.mResult = (MRESULT)TRUE;
+ mResult = (MRESULT)TRUE;
}
break;
}
wxLogTrace(wxTraceMessages, wxT("Forwarding %s to DefWindowProc."),
wxGetMessageName(uMsg));
#endif // __WXDEBUG__
- vRc.mResult = OS2DefWindowProc(uMsg, wParam, lParam);
+ mResult = OS2DefWindowProc(uMsg, wParam, lParam);
}
- return vRc.mResult;
+ return mResult;
} // end of wxWindow::OS2WindowProc
//
wxAssociateWinWithHandle((HWND)m_hWnd
,this
);
+ //
+ // Now need to subclass window.
+ //
+
+ SubclassWin(GetHWND());
+
return TRUE;
} // end of wxWindow::OS2Create
return FALSE;
}
m_updateRegion = wxRegion(hRgn);
-
- hPS = WinBeginPaint(GetHwnd(), 0L, &vRect);
+/*
+ hPS = WinBeginPaint(GetHWND(), 0L, &vRect);
WinFillRect(hPS, &vRect, SYSCLR_WINDOW);
WinEndPaint(hPS);
-
+*/
vEvent.SetEventObject(this);
return (GetEventHandler()->ProcessEvent(vEvent));
} // end of wxWindow::HandlePaint