Создание кнопки аннулирует указатели Direct2dFactory в Windows C++

Я пишу приложение для Windows в MS Visual Studio 2017 и у меня возникли небольшие проблемы с использованием объекта Direct 2D Factory и кнопок. Похоже, что если я сначала создаю прямой 2D-объект Factory, он же запускается:

HRESULT AppObject::CreateDeviceIndependentResources(){
       hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,&m_pDirect2dFactory);
       return hr;
    }

Заводской объект создан правильно с указателем, хранящимся в "m_pDirect2dFactory", как и должно быть. Этот указатель объекта сохраняется при создании главного окна:

m_hwnd = CreateWindowEx(0, ...  

и через создание дочерних окон:

m_hwndRenderView = CreateWindowEx(0, 
                                   L"AppChildWindow", 
                                   L"ChildWinName", WS_CHILD | WS_BORDER | WS_VISIBLE, 
                                   ...   

Однако, когда код создает кнопки:

m_hwndButton = CreateWindow(L"BUTTON", 
                            TEXT("button name"),
                            WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                            m_buttonStart_pixX,
                            cur_button_pixY,
                            button_pix_width,
                            button_pix_height,
                            m_hwnd,
                            (HMENU)(int)(CORE_BUTTON_IDSTART+1),
                            (HINSTANCE)GetWindowLong(m_hwnd, GWL_HINSTANCE),
                            NULL);

Значение указателя "m_pDirect2dFactory" изменяется на явно недопустимое значение, что вызывает ошибку при вызове m_pDirect2dFactory->Release(). Или, другими словами, создание кнопок вмешивается в фабричный объект, созданный D2D1CreateFactory.

Это известная проблема?

0 ответов

Другие вопросы по тегам