/////////////////////////////////////////////////////////////////////////////
-// Name: dcclient.cpp
+// Name: src/os2/dcclient.cpp
// Purpose: wxClientDC class
// Author: David Webster
// Modified by:
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#include "wx/string.h"
-#include "wx/log.h"
-#include "wx/window.h"
-#include "wx/app.h"
+#include "wx/dcclient.h"
-#include "wx/os2/private.h"
+#ifndef WX_PRECOMP
+ #include "wx/string.h"
+ #include "wx/log.h"
+ #include "wx/app.h"
+ #include "wx/window.h"
+#endif
-#include "wx/dcclient.h"
+#include "wx/os2/private.h"
// ----------------------------------------------------------------------------
// array/list types
#ifdef __WXDEBUG__
// a global variable which we check to verify that wxPaintDC are only
// created in resopnse to WM_PAINT message - doing this from elsewhere is a
- // common programming error among wxWindows programmers and might lead to
+ // common programming error among wxWidgets programmers and might lead to
// very subtle and difficult to debug refresh/repaint bugs.
int g_isPainting = 0;
#endif // __WXDEBUG__
wxWindowDC::wxWindowDC()
{
m_pCanvas = NULL;
+ m_PageSize.cx = m_PageSize.cy = 0;
+
}
wxWindowDC::wxWindowDC(
{
ERRORID vError;
wxString sError;
+ int nWidth, nHeight;
m_pCanvas = pTheCanvas;
+ DoGetSize(&nWidth, &nHeight);
+ m_PageSize.cx = nWidth;
+ m_PageSize.cy = nHeight;
m_hDC = (WXHDC) ::WinOpenWindowDC(GetWinHwnd(pTheCanvas) );
//
,&m_PageSize
,PU_PELS | GPIF_LONG | GPIA_ASSOC
);
+ if (!m_hPS)
+ {
+ vError = ::WinGetLastError(vHabmain);
+ sError = wxPMErrorToStr(vError);
+ wxLogError(_T("Unable to create presentation space. Error: %s\n"), sError.c_str());
+ }
::GpiAssociate(m_hPS, NULLHANDLE);
::GpiAssociate(m_hPS, m_hDC);
//
- // Set the wxWindows color table
+ // Set the wxWidgets color table
//
if (!::GpiCreateLogColorTable( m_hPS
,0L
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
- wxLogError("Unable to set current color table. Error: %s\n", sError);
+ wxLogError(_T("Unable to set current color table (3). Error: %s\n"), sError.c_str());
}
::GpiCreateLogColorTable( m_hPS
,0L
void wxWindowDC::InitDC()
{
- wxColour vColor;
//
// The background mode is only used for text background and is set in
//
SetBackground(wxBrush(m_pCanvas->GetBackgroundColour(), wxSOLID));
- vColor.InitFromName("BLACK");
- m_pen.SetColour(vColor);
- vColor.Set("WHITE");
- m_brush.SetColour(vColor);
+ m_pen.SetColour(*wxBLACK);
+ m_brush.SetColour(*wxWHITE);
InitializePalette();
- wxFont* pFont = new wxFont( 12
- ,wxNORMAL
- ,wxNORMAL
- ,wxBOLD
- );
+ wxFont* pFont = new wxFont( 10, wxMODERN, wxNORMAL, wxBOLD );
SetFont(*pFont);
delete pFont;
//
- // OS/2 default vertical character allignment needs to match the other OS's
+ // OS/2 default vertical character alignment needs to match the other OS's
//
::GpiSetTextAlignment((HPS)GetHPS(), TA_NORMAL_HORIZ, TA_BOTTOM);
,PU_PELS | GPIF_LONG | GPIA_ASSOC
);
- // Set the wxWindows color table
+ // Set the wxWidgets color table
if (!::GpiCreateLogColorTable( m_hPS
,0L
,LCOLF_CONSECRGB
{
vError = ::WinGetLastError(vHabmain);
sError = wxPMErrorToStr(vError);
- wxLogError("Unable to set current color table. Error: %s\n", sError);
+ wxLogError(_T("Unable to set current color table (4). Error: %s\n"), sError.c_str());
}
::GpiCreateLogColorTable( m_hPS
,0L
{
HPS hPS;
+ m_hDC = ::WinOpenWindowDC(GetWinHwnd(m_pCanvas));
hPS = ::WinBeginPaint( GetWinHwnd(m_pCanvas)
,NULLHANDLE
,&g_paintStruct
);
if(hPS)
{
+ ::GpiAssociate(hPS, m_hDC);
m_hOldPS = m_hPS;
m_hPS = hPS;
::GpiCreateLogColorTable( m_hPS
);
}
- m_bIsPaintTime = TRUE;
- m_hDC = (WXHDC) -1; // to satisfy those anonizmous efforts
+ m_bIsPaintTime = true;
ms_cache.Add(new wxPaintDCInfo(m_pCanvas, this));
}
InitDC();
{
::WinEndPaint(m_hPS);
m_hPS = m_hOldPS;
- m_bIsPaintTime = FALSE;
+ m_bIsPaintTime = false;
ms_cache.RemoveAt(nIndex);
}
//else: cached DC entry is still in use
}
return 0;
} // end of wxPaintDC::FindInCache
-