Exemplo n.º 1
0
		void XUI_Wnd::Render(const iRect& clipper)
		{
			if (!m_bVisible)
				return;

			iRect rcWindow = GetWindowRect();
			ClientToScreen( rcWindow );
			// XUI_SetClipping( rcWindow.left, rcWindow.top, rcWindow.Width(), rcWindow.Height() );
			//绘制自己
			if( m_bOwnerDraw )
			{
			}
			else
			{
				RenderSelf( clipper.TopLeft() );
				if( GetFlags(FLAGS_EDIT) )
				{
					// XUI_SetClipping( rcWindow.left-HANDLE_EDGE, rcWindow.top-HANDLE_EDGE, rcWindow.Width()+HANDLE_EDGE*2, rcWindow.Height()+HANDLE_EDGE*2 );
					RenderEdit( clipper.TopLeft() );
				}
			}

			//绘制子控件
			for (_uint32 i=0; i<m_pChildren.size(); i++)
			{
				m_pChildren[i]->Render(rcWindow);
			}
		}
Exemplo n.º 2
0
int RenderWindowAndSubwindow(PWINDOW pWindow)
{
	PLIST_ENTRY pEntry;
	int nContinueRander = 1;
	switch(pWindow->wtWindowType){
		case WINDOW_TYPE_BUTTON:
			nContinueRander = RenderButton((PWINDOW_BUTTON)pWindow);
			break;

		case WINDOW_TYPE_LIST:
			nContinueRander = RenderList((PWINDOW_LIST)pWindow);
			break;

		case WINDOW_TYPE_EDIT:
			nContinueRander = RenderEdit((PWINDOW_EDIT)pWindow);
			break;

		case WINDOW_TYPE_RICHEDIT:
			nContinueRander = RenderRichEdit((PWINDOW_RICHEDIT)pWindow);
			break;

		case WINDOW_TYPE_BMP:
			// nContinueRander = RenderBMP(pWindow);
			break;

		case WINDOW_TYPE_DROP_LIST:
			nContinueRander = RenderDropList((PWINDOW_DROP_LIST)pWindow);
			break;

		case WINDOW_TYPE_SHOW_BOX:
			nContinueRander = RenderShowBox((PWINDOW_SHOW_BOX)pWindow);
			break;

		case WINDOW_TYPE_IME:
			nContinueRander = RenderIMEWindow((PWINDOW_IME)pWindow);
			break;
	}

	if(pWindow->wChildrenHead && nContinueRander){
		RenderWindowAndSubwindow(pWindow->wChildrenHead);
		pEntry = pWindow->wChildrenHead->leEntry.pFlink;
		while(pEntry!=&pWindow->wChildrenHead->leEntry){
			RenderWindowAndSubwindow((PWINDOW)pEntry);
			pEntry = pEntry->pFlink;
		}
	}
	return 1;
}