More ownerdrawn stuff

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
2001-03-22 04:41:37 +00:00
parent d8408fc65f
commit 7172b423aa
2 changed files with 94 additions and 75 deletions

View File

@@ -106,83 +106,22 @@ bool wxOwnerDrawn::OnDrawItem(
{
//
// We do nothing on focus change
//
if (eAction == wxODFocusChanged )
return TRUE;
//
// WxWinGdi_CColour <-> RGB
//
#define ToRGB(col) OS2RGB(col.Red(), col.Green(), col.Blue())
#define UnRGB(col) GetRValue(col), GetGValue(col), GetBValue(col)
CHARBUNDLE vCbndText;
CHARBUNDLE vCbndBack;
HPS hPS= rDC.GetHPS();
ULONG lColBack;
ULONG lColText;
if (eStatus & wxODSelected)
{
lColBack = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENUHILITEBGND // Light gray
,0L
);
lColText = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENUTEXT // Black
,0L
);
}
else if (eStatus & wxODDisabled)
{
lColBack = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENU // Light gray
,0L
);
lColText = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENUDISABLEDTEXT // dark gray
,0L
);
}
else
{
//
// Fall back to default colors if none explicitly specified
//
lColBack = m_colBack.Ok() ? ToRGB(m_colBack) : ::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENU // we are using gray for all our window backgrounds in wxWindows
,0L
);
lColText = m_colText.Ok() ? ToRGB(m_colText) : ::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_WINDOWTEXT // Black
,0L
);
}
vCbndText.lColor = (LONG)lColText;
vCbndBack.lColor = (LONG)lColBack;
::GpiSetAttrs( hPS
,PRIM_CHAR
,CBB_BACK_COLOR
,0
,&vCbndBack
);
::GpiSetAttrs( hPS
,PRIM_CHAR
,CBB_COLOR
,0
,&vCbndText
);
//
// Determine where to draw and leave space for a check-mark.
//
int nX = rRect.x + GetMarginWidth();
//
// Select the font and draw the text
// ---------------------------------
//
CHARBUNDLE vCbnd;
HPS hPS= rDC.GetHPS();
wxColour vColBack;
wxColour vColText;
COLORREF vRef;
char zMsg[128];
//
// Use default font if no font set
//
@@ -194,6 +133,82 @@ bool wxOwnerDrawn::OnDrawItem(
{
::GpiSetCharSet(hPS, LCID_DEFAULT);
}
if (eStatus & wxODSelected)
{
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENUHILITEBGND // Light gray
,0L
);
vColBack.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
vColText = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENUTEXT);
}
else if (eStatus & wxODDisabled)
{
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENU // Light gray
,0L
);
vColBack.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
vRef = (ULONG)::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENUDISABLEDTEXT // dark gray
,0L
);
vColText.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
}
else
{
//
// Fall back to default colors if none explicitly specified
//
vRef = ::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_MENU // we are using gray for all our window backgrounds in wxWindows
,0L
);
vColBack.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
vRef = ::WinQuerySysColor( HWND_DESKTOP
,SYSCLR_WINDOWTEXT // Black
,0L
);
vColText.Set( GetRValue(vRef)
,GetGValue(vRef)
,GetBValue(vRef)
);
}
vRef = vColBack.GetPixel();
vCbnd.lBackColor = (LONG)vRef;
vRef = vColText.GetPixel();
vCbnd.lColor = (LONG)vRef;
sprintf(zMsg, "Color: %ld", vRef);
wxMessageBox( "wxWindows Menu Sample"
,zMsg
,wxICON_INFORMATION
);
::GpiSetAttrs( hPS
,PRIM_CHAR
,CBB_COLOR | CBB_BACK_COLOR
,0
,&vCbnd
);
//
// Determine where to draw and leave space for a check-mark.
//
int nX = rRect.x + GetMarginWidth();
//
// Unfortunately, unlike Win32, PM has no owner drawn specific text
@@ -217,9 +232,14 @@ bool wxOwnerDrawn::OnDrawItem(
if (nIndex != -1)
m_strName.Replace(sTgt.c_str(), "", TRUE);
rDC.DrawText( m_strName
,nX
,rRect.y + 4
POINTL vPoint;
vPoint.x = nX;
vPoint.y = rRect.y + 4;
::GpiCharStringAt( hPS
,&vPoint
,m_strName.length()
,(PCH)m_strName.c_str()
);
#if 0

View File

@@ -1984,7 +1984,6 @@ MRESULT wxWindow::OS2WindowProc(
case WM_MEASUREITEM:
{
int nIdCtrl = (UINT)wParam;
char zMsg[128];
if ( uMsg == WM_DRAWITEM )
{