簡體   English   中英

如何將CS_DROPSHADOW應用於CDialog的子類

[英]How to apply CS_DROPSHADOW to a subclass of CDialog

我有一個c ++類, MyDialog ,源自CDialog ,我刪除了Windows框架,從而刪除了Windows生成的陰影。

我想再次添加陰影,而不添加框架。 我發現有一個可以應用的類樣式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以使客戶端覆蓋整個窗口,從而有效地使邊框為零寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM