函数CWnd :: CreateControl成功,但m_hWnd为NULL

时间:2012-10-26 07:37:26

标签: c++ windows visual-studio-2010 visual-c++ mfc

我用VC ++ 6.0运行代码,一切正常。但是当在Visual C ++ 2010下运行相同的代码时,wnd(即m_hWnd)的句柄始终为NULL。此外,返回值bRet为TRUE(即成功)。

这是我的代码:

BOOL CDemoDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here
    CRect rect;
    GetClientRect(rect);
    CWnd wnd;
    BOOL bRet = wnd.CreateControl(_T("WMPlayer.OCX"), NULL, WS_VISIBLE, rect, this, 19089);

    return TRUE;  // return TRUE  unless you set the focus to a control
}

1 个答案:

答案 0 :(得分:0)

wnd对象超出范围 - 尝试将其作为成员并检查当时会发生什么。此外,如果您尝试为对话框m_hWnd对象分配不同的句柄,那么您犯了一个错误,因为在调用OnInitDialog时(响应Create调用),m_hWnd应该对您的对话框有效,所以你不应该重新分配对话框成员窗口句柄,而是为它创建一个单独的成员。希望这会有所帮助。