自定义控件,OnPaint没有被调用
自定义了一个控件,下面是部分代码:
控件类注册:
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没有被调用。
不知道原因,难道还需要其他的地方需要处理么?
[解决办法]
wndcls.style= CS_DBLCLKS| CS_HREDRAW | CS_VREDRAW;
[解决办法]
你在哪里获取消息?