Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » Owner-draw CExtGridCell Collapse All
Subject Author Date
Krustys Donuts Mar 2, 2009 - 1:36 PM

Dear Support,


I would like to create an owner-draw CExtGridCell. I have overridden the OnPaintForeground method, but cannot seem to get anything in this cell. The code is below. Any suggestions would be much appriciated.



class

{

string m_strErrorWarningTooltip;

string m_strAoTooltip;

VRApproOrientation::ERROR_TYPE m_nErrType;

 

CExtBitmap m_bmpAoNoError;

CExtBitmap m_bmpAoWarning;

CExtBitmap m_bmpAoError;

CExtBitmap m_bmpLandscapeA1Away;

CExtBitmap m_bmpLandscapeA1Toward;

CExtBitmap m_bmpPortraitA1Away;

CExtBitmap m_bmpPortraitA1Toward;

CExtBitmap m_bmpRighty;

CExtBitmap m_bmpLefty;

VRCellErrWarnAndAo : public CExtGridCellint m_nAoId;

public

DECLARE_SERIAL( VRCellErrWarnAndAo );

IMPLEMENT_ExtGridCell_Clone( VRCellErrWarnAndAo, CExtGridCell );

VRCellErrWarnAndAo(CExtGridDataProvider * pDataProvider = NULL);

 

:// virtual methods

 

CExtGridWnd & wndGrid,

 

CExtPopupMenuTipWnd & _ATTW,

RECT & rcArea

);

 

 

CDC & dc,

LONG nVisibleColNo,

LONG nVisibleRowNo,

LONG nColNo,

LONG nRowNo,

INT nColType,

INT nRowType,

 

 

 

DWORD dwAreaFlags,

DWORD dwHelperPaintFlags

)

 

{m_nErrType = nErrType;}

 

 

 

};

virtual bool OnInitAdvancedTip(const CExtGridHitTestInfo & htInfo,virtual void OnPaintForeground(const CExtGridWnd & wndGrid,const RECT & rcCellExtra,const RECT & rcCell,const RECT & rcVisibleRange,const;void SetErrorType(VRApproOrientation::ERROR_TYPE nErrType)void SetErrorWarningTooltip(const string& strTT) {m_strErrorWarningTooltip = strTT;}void SetAoId(int nAoId) {m_nAoId = nAoId;}void SetAoTooltip(const string& strTT) {m_strAoTooltip = strTT;}// class VRCellErrWarnAndAo

 

/////////////////////////////////////////////////////////////////////////////

// VRCellErrWarnAndAo

IMPLEMENT_SERIAL( VRCellErrWarnAndAo, CExtGridCell, VERSIONABLE_SCHEMA|1 );

extern

HINSTANCE GlobalInstance;

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////

VRCellErrWarnAndAo::VRCellErrWarnAndAo(CExtGridDataProvider * pDataProvider

: CExtGridCell ( pDataProvider )

{

VERIFY( m_bmpAoNoError.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpBlank), RT_BITMAP, GlobalInstance));

m_bmpAoNoError.Make32();

m_bmpAoNoError.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpAoWarning.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpWarning), RT_BITMAP, GlobalInstance));

m_bmpAoWarning.Make32();

m_bmpAoWarning.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpAoError.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpError), RT_BITMAP, GlobalInstance));

m_bmpAoError.Make32();

m_bmpAoError.AlphaColor( RGB(0,255,0), RGB(0,0,0), 0);

VERIFY( m_bmpLandscapeA1Away.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpLandscapeA1Away), RT_BITMAP, GlobalInstance));

m_bmpLandscapeA1Away.Make32();

m_bmpLandscapeA1Away.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpLandscapeA1Toward.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpLandscapeA1Toward), RT_BITMAP, GlobalInstance));

m_bmpLandscapeA1Toward.Make32();

m_bmpLandscapeA1Toward.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpPortraitA1Away.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpPortraitA1Away), RT_BITMAP, GlobalInstance));

m_bmpPortraitA1Away.Make32();

m_bmpPortraitA1Away.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpPortraitA1Toward.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpPortraitA1Toward), RT_BITMAP, GlobalInstance));

m_bmpPortraitA1Toward.Make32();

m_bmpPortraitA1Toward.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpRighty.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpRighty), RT_BITMAP, GlobalInstance));

m_bmpRighty.Make32();

m_bmpRighty.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

VERIFY( m_bmpLefty.LoadBMP_Resource (MAKEINTRESOURCE( IDB_bmpLefty), RT_BITMAP, GlobalInstance));

m_bmpLefty.Make32();

m_bmpLefty.AlphaColor( RGB(255,0,0), RGB(0,0,0), 0);

}

/* = NULL*/)

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////

bool

CExtGridWnd & wndGrid,

 

CExtPopupMenuTipWnd & _ATTW,

RECT & rcArea)

{

ASSERT_VALID(

ASSERT_VALID( (&wndGrid) );

ASSERT( ! htInfo.IsHoverEmpty() );

ASSERT( htInfo.IsValidRect() );

 

VRCellErrWarnAndAo::OnInitAdvancedTip(const CExtGridHitTestInfo & htInfo,this );//if there is a valid tooltip for this cell.

 

 

{

_ATTW.SetText(m_strAoTooltip.c_str());

bValidTooltip =

}

 

}

bool bValidTooltip = false;if (!m_strAoTooltip.empty())true;return bValidTooltip;

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////

void

 

CDC & dc,

LONG nVisibleColNo,

LONG nVisibleRowNo,

LONG nColNo,

LONG nRowNo,

INT nColType,

INT nRowType,

 

 

 

DWORD dwAreaFlags,

DWORD dwHelperPaintFlags

)

VRCellErrWarnAndAo::OnPaintForeground(const CExtGridWnd & wndGrid,const RECT & rcCellExtra,const RECT & rcCell,const RECT & rcVisibleRange,const

{

 

//Draw the marker to show this AO is subordinate to the TP row.

dc.MoveTo(0,0);

dc.LineTo(5,5);

 

/* CSize szErrBmp = m_bmpAoError.GetSize();

dc.DPtoLP(&szErrBmp);

if (m_nErrType == VRApproOrientation::kError)

m_bmpAoError.Draw((HDC)dc, 0,0, szErrBmp.cx, szErrBmp.cy);

else if (m_nErrType == VRApproOrientation::kWarning)

m_bmpAoWarning.Draw((HDC)dc, 0,0, szErrBmp.cx, szErrBmp.cy);

else

m_bmpAoNoError.Draw((HDC)dc, 0,0, szErrBmp.cx, szErrBmp.cy);

*/

//If present, draw the error/warning icon.

 

//Draw the plate and A1 orientation icon.

CSize szAoBmp = m_bmpLandscapeA1Away.GetSize();

dc.DPtoLP(&szAoBmp);

 

{

 

m_bmpLandscapeA1Away.Draw(dc.m_hDC, 0,0, szAoBmp.cx, szAoBmp.cy);

 

if (m_nAoId & VRApproOrientation::kLandscape)if (m_nAoId & VRApproOrientation::kA1AwayFromGrippers)else //if (m_nAoId & VRApproOrientation::kA1TowardsGrippers)

m_bmpLandscapeA1Toward.Draw(dc.m_hDC, 0,0, szAoBmp.cx, szAoBmp.cy);

}

 

else //if (m_nAoId & VRApproOrientation::kPortrait)

{

 

m_bmpPortraitA1Away.Draw(dc.m_hDC, 0,0, szAoBmp.cx, szAoBmp.cy);

 

if (m_nAoId & VRApproOrientation::kA1AwayFromGrippers)else //if (m_nAoId & VRApproOrientation::kA1TowardsGrippers)

m_bmpPortraitA1Toward.Draw(dc.m_hDC, 0,0, szAoBmp.cx, szAoBmp.cy);

}

/*

//Draw the arm orientation (righty/lefty) icon.

CSize szArmBmp = m_bmpRighty.GetSize();

dc.DPtoLP(&szArmBmp);

if (m_nAoId & VRApproOrientation::kRighty)

m_bmpRighty.Draw((HDC)dc, 0,0, szArmBmp.cx, szArmBmp.cy);

else //if (m_nAoId & VRApproOrientation::kLefty)

m_bmpLefty.Draw((HDC)dc, 0,0, szArmBmp.cx, szArmBmp.cy);*/

}


 


Thanks,


Gil


Technical Support Mar 4, 2009 - 3:29 AM

The lines of code in your message are messed up. Please do not use MS Word for copying text from and paste it here.

We looked into the source code of the VRCellErrWarnAndAo::OnPaintForeground() method you sent us via e-mail. It uses zero values as top/left corner of the grid cell. This is not correct. Please use the rcCell method parameter. It describes cell location in the client coordinates of the grid window. So, the following code:

   dc.MoveTo(0,0);
            dc.LineTo(5,5);

Should be replaced with the following:
   dc.MoveTo( rcCell.left, rcCell.top );
            dc.LineTo( rcCell.left + 5, rcCell.top + 5 );