佚名通过本文主要向大家介绍了
高手们:为什么我创建的ATLControl的m_hWnd不能用,WM_CREATE也不响应???等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 高手们:为什么我创建的ATL Control的m_hWnd不能用,WM_CREATE也不响应???
描述:
解决方案1:
描述:
我用向导默认设置创建了一个Control,然后在它的
HRESULT OnDraw(ATL_DRAWINFO& di)中加入一条GetClientRect(&rc);然后非法
报错,原因是m_hWnd不可用!代码如下:
HRESULT OnDraw(ATL_DRAWINFO& di)
{
RECT& rc = *(RECT*)di.prcBounds;
GetClientRect(&rc);
return S_OK;
}
还有我加入了WM_CREATE和WM_MOUSEMOVE处理事件后,但WM_CREATE不应映,
WM_MOUSEMOVE响应!
解决方案1:
m_rcPos可以直接得到客户区位置
解决方案2: 你创建的是Windowless的控件吧(检查一下你的类是否继承了IOleInPlaceObjectWindowlessImpl<...>,这种情况下只有窗口必须被创建时(如它的包容器不支持Windowless窗口时),他才会创建窗口,故它的窗口句柄几乎总是NULL.可见MSDN文章
Q195188