我有一個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