Я хочу, чтобы окно не мерцало при изменении его размера
Не обрабатывать WM_ERASEBACKGROUND и подобные сообщения.Оставьте всю картину в DirectX, и мерцания не будет.Любое мерцание - это, в основном, вы (или ваши элементы управления), которые сначала рисуют что-то, а затем DirectX рисует поверх него изображение.
, а также я хочу, чтобы рисунки не растягивались с размером окна.
Невозможно (по крайней мере, без хаков).Предполагая, что вы используете DirectX 9, вы должны повторно инициализировать устройство, чтобы изменить его разрешение, и это медленно.
Я могу придумать несколько обходных путей, чтобы попытаться, например, изменить матрицу проекции, чтобы приразрешение в окне просмотра остается тем же (без повторной инициализации), то, что вы видите через окно просмотра, отражает размер окна.
Другими словами, вы устанавливаете область просмотра в 640x480 и сохраняете ее, но если пользователь изменяет размерваше окно должно быть 1024x768, вы упаковываете 1024x768 вещей в ваше окно просмотра 640x480, которое затем растягивается, чтобы заполнить окно 1024x768.
Это должно создать впечатление, что вы «изменяете размер» окна просмотра, но на самом деле этомасштабирование, качество изображения снизится.Вот почему вы можете захотеть переустановить область просмотра в конце, после того, как пользователь закончит с изменением размера окна.Таким образом, вы получаете быстрое изменение размера в первую очередь, а затем качество изображения.