| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1879 人关注过本帖
标题:如何设置按钮控件的透明度???
只看楼主 加入收藏
widget
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-13
结帖率:0
收藏
 问题点数:0 回复次数:1 
如何设置按钮控件的透明度???
对窗口控件设置透明度时可以通过SetLayeredWindowAttributes()函数设置,我编了段代码能够设置dialog的透明度,但是同样的代码却不能设置button的透明度,为什么呢?button和dialog都继承自CWnd,而SetLayeredWindowAttributes()是CWnd的函数。
我编的那段代码如下:
void COoDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: Add your message handler code here and/or call default

    LONG lWindowLong;
    HWND hWnd ,hWnd2;
    HMODULE hUser32;
    typedef BOOL (WINAPI *lpfn) (HWND hWnd, COLORREF cr, BYTE bAlpha, DWORD dwFlags);
    lpfn g_pSetLayeredWindowAttributes;
    hUser32 = GetModuleHandle(_T("USER32.DLL"));
    g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, "SetLayeredWindowAttributes");
    //hWnd =GetDlgItem(IDOK)->GetSafeHwnd();//获取“确定”按钮的句柄
    //hWnd =GetSafeHwnd();//获取dialog的句柄
    lWindowLong = GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED;
    ::SetWindowLong(hWnd, GWL_EXSTYLE, lWindowLong);
    g_pSetLayeredWindowAttributes(hWnd, 0, 100, 2);
    ::RedrawWindow(hWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
    if (hUser32 != NULL)
        FreeLibrary(hUser32);
   
    CDialog::OnLButtonDown(nFlags, point);
}

当hWnd =GetSafeHwnd();获取dialog的句柄时,程序能正常改变dialog的透明度
当hWnd =GetDlgItem(IDOK)->GetSafeHwnd();获取“确定”按钮的句柄时,程序却不能改变“确定”按钮的透明度。为什么???期待各位的解答,谢谢。
搜索更多相关主题的帖子: 透明度 控件 按钮 
2010-06-02 17:16
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
按钮要透明度,是个奇怪的想法。
如果不是矩形按钮,使用带A的图片做按钮,是有透明通道,可以选择SKIN++为控件换肤来实现不规则形状的按钮。
2010-06-02 23:55
快速回复:如何设置按钮控件的透明度???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.105268 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved