vb2008 不规则形状窗体的问题(避免浪费,再回答追分)

来源:百度知道 编辑:UC知道 时间:2024/06/24 22:18:55
虽然里面直接有设置透明色的TransparencyKey,但是我的窗体形状第一次载入后就不会改变。不需要它实时计算输出窗体形状,占用系统资源。所以想问下,用API绘制特定的形状是怎么做的?谢谢了~~

如果仅限给winXP或以上的系统使用,可以用Layered Window
在form_load中(API函数上msdn找吧。。)

SetWindowLong(hwnd,GWL_EXSTYLE,GetWindowLong(hwnd,GWL_EXSTYLE) or WS_EX_LAYERED)'设置窗体为Layered
SetLayeredWindowAttributes(hwnd,&Hc8c9ca,0,LWA_COLORKEY)'c8c9ca是一种很少用的颜色,当你窗体上是这个颜色的时候,就是透明。当然你也可以选择其它颜色
然后你就可以绘制了,透明的时候就用&HC8c9ca这种颜色
SetLayeredWindowAttributes:

BOOL SetLayeredWindowAttributes( HWND hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);