CMSFlexGrid
-
Hi Leute,
ich schreib ein Front-End für eine Datenbank. Die Daten kommen in eine Tabelle (CMSFlexGrid m_ctlGrid). Wenn die Dialogbox (CQuery20Dlg) mit dem FlexGrid maximiert bzw. minimiert wird, muss ich die Größe von dem FlexGrid anpassenvoid CQuery20Dlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if(nType==SIZE_MAXIMIZED) { CRect clientRect; ::GetClientRect(this->m_hWnd,&clientRect); m_ctlGrid.SetWindowPos(&wndTop,20,80,clientRect.right-40,clientRect.bottom-80, SWP_SHOWWINDOW|SWP_NOOWNERZORDER |SWP_FRAMECHANGED); } else if(nType==SIZE_RESTORED && this->IsWindowVisible()) { RECT clientRect; ::GetClientRect(this->m_hWnd,&clientRect); m_ctlGrid.SetWindowPos(&wndTop,20,80,clientRect.right-40,clientRect.bottom-80, SWP_SHOWWINDOW|SWP_NOOWNERZORDER |SWP_FRAMECHANGED); } }
In der Releaseversion funktioniert das auch. In der Debugversion gibt es einen Programmabbruch und er zeigt einen Fehler an der folgenden Stelle. (Der Fehler tritt manchmal sofort auf, manchmal erst nach dreimaligem Maximieren.)
void CHandleMap::RemoveHandle(HANDLE h) { // make sure the handle entry is consistent before deleting CObject* pTemp = LookupTemporary(h); if (pTemp != NULL) { // temporary objects must have correct handle values HANDLE* ph = (HANDLE*)((BYTE*)pTemp + m_nOffset); // after CObject ASSERT(ph[0] == h || ph[0] == NULL); if (m_nHandles == 2) ASSERT(ph[1] == h); } pTemp = LookupPermanent(h); if (pTemp != NULL) { HANDLE* ph = (HANDLE*)((BYTE*)pTemp + m_nOffset); // after CObject ASSERT(ph[0] == h); ///// :rage: :rage: :rage: // permanent object may have secondary handles that are different } // remove only from permanent map -- temporary objects are removed // at idle in CHandleMap::DeleteTemp, always! m_permanentMap.RemoveKey((LPVOID)h); }
Hat jemand Ahnung???
-
Probier mal so:
void CQuery20Dlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if( IsWindow()) if( IsWindowVisible() && (nType==SIZE_MAXIMIZED || nType==SIZE_RESTORED)) { CRect clientRect; GetClientRect( clientRect); m_ctlGrid.MoveWindow( 20,80,clientRect.right-40,clientRect.bottom-80); } }
[ Dieser Beitrag wurde am 09.10.2002 um 10:11 Uhr von RenéG editiert. ]
-
Danke für den Tip erstmal,
ich muss aber leider sagen, dass ich genau die gleiche Fehlermeldung bekomme.
es muss an was anderem liegen.