我有一个C++类MyDialog
,源自CDialog
,其中我删除了Windows框架,从而删除了Windows生成的影子。如何将CS_DROPSHADOW应用于CDialog的子类
我想重新添加阴影,而不添加框架。我发现有一种可以应用的课程风格CS_DROPSHADOW
。但我找不到如何应用它。
我发现了一种方法ModifyStyle
,但它只修改WS_...
样式,而不是CS_...
样式。
我该如何运用班级风格CS_DROPSHADOW
?
我有一个C++类MyDialog
,源自CDialog
,其中我删除了Windows框架,从而删除了Windows生成的影子。如何将CS_DROPSHADOW应用于CDialog的子类
我想重新添加阴影,而不添加框架。我发现有一种可以应用的课程风格CS_DROPSHADOW
。但我找不到如何应用它。
我发现了一种方法ModifyStyle
,但它只修改WS_...
样式,而不是CS_...
样式。
我该如何运用班级风格CS_DROPSHADOW
?
我的同事帮我带班风格像这样注册类:
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
这增加了一层阴影,这是很好的。但不是我正在寻找的航空阴影。
更多答复欢迎!
您可能能够保留框架样式,但是响应WM_NCCALCSIZE
以使客户端覆盖整个窗口,从而有效地实现边框零宽度。
我试着在'OnNcCalcSize'方法中操作'NCCALCSIZE_PARAMS'。但是如果我膨胀矩形('lpncsp-> rgrc'),客户端可能会变小,如果减少,或者只是在增加时得到一个白色框架。阴影不变。我应该怎么做呢? – JOG 2012-08-08 14:03:59
@JOG,抱歉,这是我现在唯一的想法。我从来没有试过这样做,但我知道试图实现微软从未想到的事情总是很困难。对不起,它没有解决。 – 2012-08-08 14:28:21