按钮创建使Direct2dFactory指针无效Windows C ++

时间:2018-08-22 02:23:41

标签: c++ pointers button graphics2d createwindowex

我正在MS Visual Studio 2017中编写Windows应用程序,使用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 个答案:

没有答案