It will be very difficult ... correctly, as it should be handled, IDXGIFactory::MakeWindowAssociation , which, as far as I know, no one was able to use successfully. In any case, you can try.
The "correct" answer is to manually control Alt + Enter. So, disable Alt + Enter with MakeWindowAssociation and get your hands dirty. Firstly, there is no need to capture WM_SIZE . Instead, listen to WM_ENTERSIZEMOVE , WM_CAPTURECHANGED , WM_WINDOWPOSCHANGED and WM_EXITSIZEMOVE . This will not allow you to deal with WM_SIZE and still receive all the relevant window resizing events. (At the same time, also read this question: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE - when using the menu, not always paired )
So, assuming everything went fine, for Alt + Enter you need to do the following: you set your swap chain to full screen using IDXGISwapChain::SetFullscreenState , and then resize your swap chain ( IDXGISwapChain::ResizeBuffers ). By default, you get a swap chain that will be as close as possible to the current resolution of your window before resizing. The way you do this is to first list the permissions in full screen, and then switch to full screen mode, calling up the required resolution. It sounds ugly, but it seems to be the most reliable way to solve the problem.
In general, a real exclusive full-screen mode is not worth the trouble, since you will always flicker when someone goes over Alt + Tab (you cannot avoid this if the mode switches, as the screen itself will have to be reconfigured.) A much better solution is Use a full-screen borderless window. You simply create a class of windows without any decoration, make it full-screen, place it so that it covers the entire screen and becomes with it. Then you do not need to worry about Alt + Enter and Alt + Tab. It also allows people to continue to work on the second screen without flickering. Performance wise, that's pretty good (most new games support this as "unlimited full screen mode.")
There may be a silver bullet that solves all this correctly, but I have not seen it yet. If there is a cleaner / more pleasant solution, I would be very interested to hear that. "Unlimited full-screen mode" appears to be the current standard, although, IIRC, Unity 5 allows "unlimited full-screen mode" for Direct3D 11.