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

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

我发现了一种方法ModifyStyle,但它仅修改了WS_...样式,而不是CS_...样式。

如何应用类样式CS_DROPSHADOW

最佳答案

我的同事帮助我注册了一个具有以下类风格的类(class):

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

其中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

这增加了阴影,这很好。但不是我一直在寻找的航空阴影。

欢迎更多答案!

关于c++ - 如何将CS_DROPSHADOW应用于CDialog的子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11846914/

10-11 17:57