使用Win32和视觉样式按钮背景透明度

时间:2009-05-11 23:54:57

标签: c winapi button transparency comctl32

编辑:如果之前有人在win32中尝试过此操作,我是否正在使用DrawThemeBackground()进行正确的指示?

我最近使用ComCtl32.dll版本6的清单启用了Visual Styles。 Win32中的视觉样式示例:Visual Styles

按钮看起来很棒,但我无法弄清楚如何使按钮周围的背景透明。请参阅示例图片:http://www.freeimagehosting.net/image.php?2bdeff33ba.jpg

我的主窗口背景颜色设置为深灰色,并显示:

a.hbrBackground = GetStockObject(DKGRAY_BRUSH);

常用控件初始化为:

INITCOMMONCONTROLSEX stylesStruct;
stylesStruct.dwSize = sizeof(stylesStruct);
stylesStruct.dwICC = ICC_STANDARD_CLASSES;
InitCommonControlsEx(&stylesStruct);

我创建了按钮窗口:

j = CreateWindow(L"BUTTON", L"hello",
    WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 100, 100,
    100, 100, h, 0, hInst, 0);

按钮在白色背景上看起来很好,但边框变得可见其他任何东西。是否可以使按钮周围的边框透明?

1 个答案:

答案 0 :(得分:1)

您是否尝试过WS_EX_TRANSPARENT

我认为你可以在Visual Studio的资源编辑器中设置它,如果你正在使用它。