+ -
当前位置:首页 → 问答吧 → 自定义控件,OnPaint没有被调用

自定义控件,OnPaint没有被调用

时间:2011-12-01

来源:互联网

自定义了一个控件,下面是部分代码:
控件类注册:
CMyWnd::CMyWnd()
{
  WNDCLASS wls;
  wls.lpszClassName = className;
  wls.style = CS_OWNDC;
  wls.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 1);
  wls.hCursor = LoadCursor(NULL, IDC_ARROW);
  wls.hIcon = NULL;
  wls.hInstance = AfxGetInstanceHandle();
  wls.lpfnWndProc = ::DefWindowProc;
  wls.lpszMenuName = NULL;
   
  RegisterClass(&wls);
}

创建接口:
HRESULT CMyWnd::Create(CWnd *pParent, CRect rc,UINT uID)
{
  return CWnd::Create(className, m_csTitle, WS_VISIBLE| WS_CHILD, rc, pParent, uID);
}
在对话框的OnInitialDialog接口中调用Create接口创建对象:
m_myWnd.Create(this, rcClient, IDC_CUSTOM1);

另外重载了控件的OnPaint接口:
void CMyWnd::OnPaint() 
{
  CPaintDC dc(this); // device context for painting

  CRect rc;
  GetClientRect(rc);

  CBrush br(RGB(0,255,0));  
  FillRect(dc, rc, br);
}
运行后控件并没有显示,调试后发现控件的OnPaint没有被调用。
不知道原因,难道还需要其他的地方需要处理么?

作者: fendouzhe   发布时间: 2011-12-01

wndcls.style = CS_DBLCLKS| CS_HREDRAW | CS_VREDRAW;

作者: shen_wei   发布时间: 2011-12-01