4

我用 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
}
4

1 回答 1

0

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

于 2012-11-09T10:07:54.513 回答