日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WTL 绘制 圆角对话框 自绘对话框

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WTL 绘制 圆角对话框 自绘对话框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要思路:

先把對話框設為透明,再畫一個圓角矩形


具體代碼:


1.設置透明,在OnInitDialog添加如下代碼。

關于SetLayeredWindowAttributes函數的具體使用方法,可參照:
WTL 設置窗口透明 SetLayeredWindowAttributes使用方法

LONG nExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);nExStyle |= WS_EX_LAYERED;::SetWindowLong(m_hWnd, GWL_EXSTYLE, nExStyle); SetLayeredWindowAttributes(m_hWnd, TRANSPARENT_BACKGROUND_COLOR, 128, LWA_COLORKEY);

此處的 TRANSPARENT_BACKGROUND_COLOR 是一個自定義顏色,用來透明,不能與對話框需要顯示的顏色相同 ,可以如下定義:

#define TRANSPARENT_BACKGROUND_COLOR RGB(254,253,252)


2.用透明色(即TRANSPARENT_BACKGROUND_COLOR )填滿整個窗口

在OnPaint中添加如下代碼:

CPaintDC dc(m_hWnd);CRect dlgRect;GetWindowRect(dlgRect);CBrush Backbr;HBRUSH hBackbr = Backbr.CreateSolidBrush(TRANSPARENT_BACKGROUND_COLOR);CRect allRect(0,0,dlgRect.Width(),dlgRect.Height()); //用于繪制上方白色背景dc.FillRect(&allRect,Backbr);DeleteObject(hBackbr);

此時整個窗口都是透明的了。


3.繪制圓角矩形

在OnPaint中添加如下代碼:

CBrush br;HBRUSH hbr = br.CreateSolidBrush(RGB(255,0,0)); //紅色背景dc.SelectBrush(hbr);CPen pen; HPEN hpen = pen.CreatePen(PS_SOLID,1,RGB(0,255,0));//綠色邊線dc.SelectPen(hpen);dc.RoundRect(0,0,dlgRect.Width(),dlgRect.Height(),30,30);DeleteObject(hbr);DeleteObject(hpen);


大功告成,效果圖如下:

總結

以上是生活随笔為你收集整理的WTL 绘制 圆角对话框 自绘对话框的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。