如何将 CS_DROPSHADOW 应用于 CDialog 的子类

JOG*_*JOG 2 c++ mfc cdialog dropshadow

我有一个 C++ 类,MyDialog派生自CDialog,我在其中删除了 Windows 框架,从而删除了 Windows 生成的阴影。

我想再次添加阴影,而不添加框架。我发现有一种CS_DROPSHADOW可以应用的类风格。但我找不到如何应用它。

我找到了一个方法ModifyStyle,但它只修改WS_...样式,而不修改CS_...样式。

如何应用课堂风格CS_DROPSHADOW

JOG*_*JOG 5

我的同事帮我注册了一个班级,班级风格是这样的:

    WNDCLASS wndClass;
    GetClassInfo(NULL, WC_DIALOG, &wndClass);
    wndClass.style |= CS_DROPSHADOW;
    wndClass.lpszClassName = TEXT("MyDialog");
    RegisterClass(&wndClass); 
Run Code Online (Sandbox Code Playgroud)

WC_DIALOG普通班在哪里CDialog

然后在定义我的对话框的资源文件中使用此类:

IDD_MYDIALOGEX 54, 22, 264, 95
STYLE DS_SETFONT | DS_CENTER | WS_POPUP
CLASS "MyDialog"
FONT 8, "Microsoft Sans Serif", 0, 0, 0x0
BEGIN
    // Contents ...
END
Run Code Online (Sandbox Code Playgroud)

这添加了阴影,这很好。但不是我一直在寻找的航空阴影。 在此输入图像描述

欢迎更多解答!