Я хочу, чтобы диалоговое окно было без полей и все же имело тень диалога. Я наткнулся на это решение Borderless Window Using Areo Snap, Shadow, Minimize Animation, and Shake, которое использует обходное решение, создавая диалоговое окно с Margin размером 1 px и расширяя к нему клиентскую область.Нарисуйте поля диалога в диалоговом окне MFC
MARGINS borderless = { 1, 1, 1, 1 };
DwmExtendFrameInfoClientArea(this->GetSafeHwnd(), &borderless);
Сообщение отметил, что клиент зона буквально расширяется и прозрачный рисунок делает диалоговые края 1px каждой видимой снова.
Теперь это именно то, что случилось, когда я попытался нарисовать Solid прямоугольник на весь диалог:
// getting the client area
CRect clientRect;
GetClientRect(&clientRect);
// expanding it to the new margins
clientRect.left -= 1;
clientRect.top -= 1;
clientRect.right += 2;
clientRect.bottom += 2;
// set the Device Context to draw non transparent and with a black background
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(RGB(0, 0, 0));
// finally draw a rectangle to it
CBrush brush_back_ground(RGB(0, 0, 0));
pDC->FillRect(clientRect, &brush_back_ground);
Но диалог по-прежнему обращается с его полями:
Как бы это можно рисовать что-то растянутое на полях? Позже я собираюсь использовать фотографии в качестве диалога «Фон», который также следует рисовать на полях.
Вы не можете использовать функции 24bpp GDI унаследованных рисовать в области стекла, выход будет оставаться прозрачным. Вам нужно 32bpp рендеринг, альфа-канал должен быть включен, GDI + может это сделать. –