[commit] r2771 - trunk/GME/Gme
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Jul 8 13:30:35 CDT 2019
Author: ksmyth
Date: Mon Jul 8 13:30:35 2019
New Revision: 2771
Log:
GMEView: recreate offscreen buffer to new SM_CXMAXTRACK dimensions after WM_DISPLAYCHANGE. Fixes bug where right side of model editor wasn't rendered after increasing screen resolution
Modified:
trunk/GME/Gme/GME.rc
trunk/GME/Gme/GMEChildFrameWrapper.h
trunk/GME/Gme/GMEView.cpp
trunk/GME/Gme/GMEView.h
trunk/GME/Gme/MainFrm.cpp
trunk/GME/Gme/MainFrm.h
Modified: trunk/GME/Gme/GME.rc
==============================================================================
--- trunk/GME/Gme/GME.rc Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/GME.rc Mon Jul 8 13:30:35 2019 (r2771)
@@ -1450,7 +1450,7 @@
STRINGTABLE
BEGIN
IDR_MAINFRAME "GME"
- IDR_GMETYPE "\nGME\nGME\n\n\nGME.Project\nGME Project"
+ IDR_GMETYPE "GMEChildFrame\nGME\nGME\n\n\nGME.Project\nGME Project"
ID_WINDOW_MANAGER """Manages the currently open windows\nWindow List"""
END
Modified: trunk/GME/Gme/GMEChildFrameWrapper.h
==============================================================================
--- trunk/GME/Gme/GMEChildFrameWrapper.h Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/GMEChildFrameWrapper.h Mon Jul 8 13:30:35 2019 (r2771)
@@ -37,8 +37,10 @@
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
- { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
- pPersist, bStorage, bstrLicKey); }
+ {
+ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
+ pPersist, bStorage, bstrLicKey);
+ }
// Attributes
public:
Modified: trunk/GME/Gme/GMEView.cpp
==============================================================================
--- trunk/GME/Gme/GMEView.cpp Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/GMEView.cpp Mon Jul 8 13:30:35 2019 (r2771)
@@ -564,6 +564,7 @@
ON_COMMAND(ID_MULTIUSER_SHOWOWNER, OnViewMultiUserShowObjectOwner)
ON_UPDATE_COMMAND_UI( ID_MULTIUSER_SHOWOWNER, OnUpdateViewMultiUserShowObjectOwner)
ON_WM_KILLFOCUS()
+ ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
ON_COMMAND(ID_VIEW_SHOWCONNECTEDPORTSONLY, &CGMEView::OnViewShowconnectedportsonly)
ON_UPDATE_COMMAND_UI(ID_VIEW_SHOWCONNECTEDPORTSONLY, &CGMEView::OnUpdateViewShowconnectedportsonly)
@@ -698,10 +699,7 @@
// update & disable some components
theApp.UpdateCompList4CurrentKind( CGMEApp::m_no_model_open_string);
- ::RestoreDC(*offScreen, offScreenCreated);
- delete offScreen;
- delete ofsbmp;
- offScreenCreated = 0;
+ DeleteOffScreen();
if( CMainFrame::theInstance != NULL ) {
CMainFrame::theInstance->SetPartBrowserMetaModel(NULL);
CMainFrame::theInstance->SetPartBrowserBg(::GetSysColor(COLOR_APPWORKSPACE));
@@ -837,6 +835,7 @@
onScreen->GetClipBox(&onScreenClipBox);
if (onScreenClipBox.IsRectEmpty()) // empty check is enough: windows may never overlap, since they don't float
return;
+ CreateOffScreen(pDC);
pDC = offScreen;
OnPrepareDC(pDC);
}
@@ -2928,10 +2927,8 @@
offScreen = new CDC;
BOOL success = offScreen->CreateCompatibleDC(dc);
ASSERT(success);
- ASSERT(::GetSystemMetrics(SM_SAMEDISPLAYFORMAT));
// In multi-monitor systems a window can bigger than just one screen, monitor resolutions can be different, etc.
// TODO: Maybe we should calculate with SM_CXMAXTRACK,SM_CYMAXTRACK? A window can be larger than the displays!!!
- // TODO: handle run-time resolution changes!
int offScreenWidth = GetSystemMetrics(SM_CXMAXTRACK);
int offScreenHeight = GetSystemMetrics(SM_CYMAXTRACK);
// int offScreenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
@@ -2945,6 +2942,15 @@
offScreen->SelectObject(ofsbmp);
}
+void CGMEView::DeleteOffScreen() {
+ if (offScreenCreated) {
+ ::RestoreDC(*offScreen, offScreenCreated);
+ delete offScreen;
+ delete ofsbmp;
+ offScreenCreated = 0;
+ }
+}
+
void CGMEView::SetScroll()
{
CRect objext, annext, extent;
@@ -4639,6 +4645,7 @@
BOOL CGMEView::OnEraseBkgnd(CDC* pDC)
{
if (!pDC->IsPrinting() && !IsPreview()) {
+ CreateOffScreen(pDC);
OnPrepareDC(offScreen);
CRect r;
GetClientRect(&r);
@@ -11086,3 +11093,9 @@
{
pCmdUI->SetCheck(showConnectedPortsOnly);
}
+
+LRESULT CGMEView::OnDisplayChange(WPARAM wParam, LPARAM lParam)
+{
+ DeleteOffScreen();
+ return TRUE;
+}
Modified: trunk/GME/Gme/GMEView.h
==============================================================================
--- trunk/GME/Gme/GMEView.h Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/GMEView.h Mon Jul 8 13:30:35 2019 (r2771)
@@ -275,6 +275,7 @@
void ResetParent(bool doInvalidate = false);
void InitSets();
void CreateOffScreen(CDC* dc);
+ void DeleteOffScreen();
void Invalidate(bool thorough = false);
void SetProperties();
void SetTypeNameProperty();
@@ -433,6 +434,7 @@
virtual void OnActivateFrame( UINT nState, CFrameWnd* pFrameWnd );
//}}AFX_VIRTUAL
afx_msg void OnKillFocus(CWnd* pNewWnd);
+ LRESULT OnDisplayChange(WPARAM wParam, LPARAM lParam);
// Implementation
public:
Modified: trunk/GME/Gme/MainFrm.cpp
==============================================================================
--- trunk/GME/Gme/MainFrm.cpp Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/MainFrm.cpp Mon Jul 8 13:30:35 2019 (r2771)
@@ -113,6 +113,8 @@
ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullScreen)
ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, OnToolbarCreateNew)
//}}AFX_MSG_MAP
+ ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
+
// By making the Menu IDs that same as the ToolBar IDs
// we can leverage off of code that is already provided
// in MFCs implementation of CFrameWnd to check, uncheck
@@ -1636,3 +1638,16 @@
}
return;
}
+
+LRESULT CMainFrame::OnDisplayChange(WPARAM wParam, LPARAM lParam) {
+ CDocument* pDocument = CGMEDoc::theInstance;
+ POSITION pos = pDocument->GetFirstViewPosition();
+ if (pos) {
+ while (pos != NULL) {
+ CGMEChildFrame* pView = (CGMEChildFrame*)pDocument->GetNextView(pos);
+ pView->SendMessage(WM_DISPLAYCHANGE, wParam, lParam);
+ }
+ }
+
+ return TRUE;
+}
Modified: trunk/GME/Gme/MainFrm.h
==============================================================================
--- trunk/GME/Gme/MainFrm.h Fri Dec 28 14:27:16 2018 (r2770)
+++ trunk/GME/Gme/MainFrm.h Mon Jul 8 13:30:35 2019 (r2771)
@@ -209,6 +209,8 @@
afx_msg LRESULT OnGetTabTooltip(WPARAM wp, LPARAM lp);
//}}AFX_MSG
+ LRESULT OnDisplayChange(WPARAM wParam, LPARAM lParam);
+
DECLARE_MESSAGE_MAP()
private:
BOOL InitStatusBar(UINT *pIndicators, int nSize, int nSeconds);
More information about the gme-commit
mailing list