如何创建从CWnd POP UP Window派生的?
Posted
技术标签:
【中文标题】如何创建从CWnd POP UP Window派生的?【英文标题】:How Create derived from CWnd POP UP Window? 【发布时间】:2013-04-04 09:42:40 【问题描述】:我通过类向导从 CWnd 创建了类 CSurfaceWnd。我试图创建窗口但出现错误。 这是我的创建代码:
if(!m_pSurfaceWnd)
CString m_NameClass = AfxRegisterWndClass(
CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH) ::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
m_pSurfaceWnd = new CSurfaceWnd;
CRect rcTemp;
GetWindowRect(rcTemp);
VERIFY(m_pSurfaceWnd->CreateEx(WS_EX_CLIENTEDGE, m_NameClass, NULL, WS_POPUP | WS_VISIBLE, rcTemp, mpWnd, 1));
//DWORD dw =GetLastError();
m_pSurfaceWnd->ShowWindow(SW_SHOW);
else
m_pSurfaceWnd->ShowWindow(SW_SHOW);
你怎么能看到我正在创建弹出窗口,这就是我使用 CreateEx 的原因。我已经注册了类,在调试模式下,我在 m_NameClass 中看到了许多新类。但是 CreateEx 返回 false。 请帮我。可能您会看到一些我看不到的错误。请不要将我发送到 MSDN 我已经阅读了很多次。 谢谢
【问题讨论】:
【参考方案1】:首先,你必须检查 mpWnd 是否为合法对象。
BOOL isValid = ::IsWindow(mpWnd->GetSafeHwnd());
如果 mpWnd 是无效值,由于 WS_POPUP 样式,CreateEx 函数将返回 0。
【讨论】:
以上是关于如何创建从CWnd POP UP Window派生的?的主要内容,如果未能解决你的问题,请参考以下文章