Я думаю, что проблема заключается в следующем.
Поскольку вы создаете устройство самостоятельно (а не через фабрику), любые вызовы, сделанные на фабрику, которую вы создали, ничего не изменят.
Так что либо вы:
a) Создайте фабрику ранее и создайте устройство через нее
ИЛИ
b) Получите фабрику, фактически использованную для создания устройства, с помощью кода ниже.
IDXGIDevice * pDXGIDevice;
HR( md3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice) );
IDXGIAdapter * pDXGIAdapter;
HR( pDXGIDevice->GetParent(__uuidof(IDXGIAdapter), (void **)&pDXGIAdapter) );
IDXGIFactory * pIDXGIFactory;
pDXGIAdapter->GetParent(__uuidof(IDXGIFactory), (void **)&pIDXGIFactory);
И вызов функции через эту фабрику (после создания SwapChain)
pIDXGIFactory->MakeWindowAssociation(mhMainWnd, DXGI_MWA_NO_ALT_ENTER);
MSDN: IDXGIFactory