Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Проблемы со взятием Хендла окна :(


Автор: rokky05 15.5.2008, 14:41
 У меня есть некая функция которая принимает один из параметров ПарентВинвов:
Код

Create(const RECT& rect, CWnd *parent,UINT nID);


я передаю парент так:

Код

Create(rect,GetParent(),IDC_GRID);



Но тогда выбрасивает Асерт:

Код

ASSERT(pParentWnd->GetSafeHwnd()); 


Если сделать так:

Код

Create(rect,CWnd::FindWindow(NULL,L"SomeWindow"),IDC_GRID);


то тогда выдрасивает такой асерт:

Код

void AFXAPI AfxHookWindowCreate(CWnd* pWnd)
{
    _AFX_THREAD_STATE* pThreadState = _afxThreadState.GetData();
    if (pThreadState->m_pWndInit == pWnd)
        return;

    if (pThreadState->m_hHookOldCbtFilter == NULL)
    {
        pThreadState->m_hHookOldCbtFilter = ::SetWindowsHookEx(WH_CBT,
            _AfxCbtFilterHook, NULL, ::GetCurrentThreadId());
        if (pThreadState->m_hHookOldCbtFilter == NULL)
            AfxThrowMemoryException();
    }
    ASSERT(pThreadState->m_hHookOldCbtFilter != NULL);
    ASSERT(pWnd != NULL);
    ASSERT(pWnd->m_hWnd == NULL);   // only do once // здесь Асерт :(

    ASSERT(pThreadState->m_pWndInit == NULL);   // hook not already in progress
    pThreadState->m_pWndInit = pWnd;
}

Вчом проблема...? 
Вот исходники...

Автор: baldina 15.5.2008, 15:39
а так?
Код

Create(rect,this,IDC_GRID);


исходники лень тащить, может позже...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)