WowButtons与GdiDrawStream功能

介绍 ThemeButton是一个CButton派生类。它是一个非常简单的图形按钮,有特殊的位图表示五种按钮状态:正常、热、按下、禁用和默认。按钮是绘制的窗口,它的主题可改变的按钮。每个主题位图有一个背景色,它是透明的。 对于绘制按钮,我使用的功能GdiDrawStream;这是私人活动。我将解释这个函数如何工作以及它有什么类型的参数。该函数中使用的主要内容是GdiDrawStreamStruct结构。我认为这个函数有参数像:GetObject,处理设备对象,结构的大小GdiDrawStreamStruct和指针的结构。 使用的代码 ThemeButton类有一个公共函数InitControl。这个函数有Macintosh, Vista, XP和Luna Longhorn样式的默认参数。 函数的参数如下: 位图资源标识符。 位图列表方向:垂直或水平。 位图列表中每个图像的像素宽度。 位图列表中每个图像的像素高度。 位图的透明颜色。 按钮文本的字体名称。 按钮绘制风格:Mac, Vista, XP或Luna Longhorn风格。隐藏,收缩,复制Code

BOOL CWowButtonsDlg::OnInitDialog()
{
     CDialog::OnInitDialog();
     // Set the icon for this dialog.
     // The framework does this automatically
     //  when the application's main window is not a dialog
     SetIcon(m_hIcon, TRUE);  // Set big icon
     SetIcon(m_hIcon, FALSE); // Set small icon

     m_vista_but1.InitControl(IDB_VISTA_PUSHBUTTON_BMP,TRUE,21,23,RGB(0,0,0),
         _T("Tahoma"),ThemeButton::VISTA_STYLE);
     m_vista_but2.InitControl(IDB_VISTA_PUSHBUTTON_BMP,TRUE,21,23,RGB(0,0,0),
         _T("Tahoma"),ThemeButton::VISTA_STYLE);
     m_vista_but3.InitControl(IDB_VISTA_PUSHBUTTON_BMP,TRUE,21,23,RGB(0,0,0),
         _T("Tahoma"),ThemeButton::VISTA_STYLE);
     m_vista_but4.InitControl(IDB_VISTA_PUSHBUTTON_BMP,TRUE,21,23,RGB(0,0,0),
         _T("Tahoma"),ThemeButton::VISTA_STYLE);
     m_mac_but1  .InitControl(IDB_MAC_PUSHBUTTON_BMP,  
         TRUE,34,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::MAC_STYLE);
     m_mac_but2  .InitControl(IDB_MAC_PUSHBUTTON_BMP,  
         TRUE,34,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::MAC_STYLE);
     m_mac_but3  .InitControl(IDB_MAC_PUSHBUTTON_BMP,  
         TRUE,34,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::MAC_STYLE);
     m_mac_but4  .InitControl(IDB_MAC_PUSHBUTTON_BMP,  
         
         TRUE,34,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::MAC_STYLE);
     m_xp_but1   .InitControl(IDB_XP_PUSHBUTTON_BMP,    
         TRUE,20,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::XP_STYLE);
     m_xp_but2   .InitControl(IDB_XP_PUSHBUTTON_BMP,   
         TRUE,20,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::XP_STYLE);
     m_xp_but3   .InitControl(IDB_XP_PUSHBUTTON_BMP,   
         TRUE,20,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::XP_STYLE);
     m_xp_but4   .InitControl(IDB_XP_PUSHBUTTON_BMP,    
         TRUE,20,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::XP_STYLE);
     m_luna_but1 .InitControl(IDB_LONGHORN_PUSHBUTTON, 
         TRUE,28,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::LUNA_LONGHORN);
     m_luna_but2 .InitControl(IDB_LONGHORN_PUSHBUTTON, 
         TRUE,28,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::LUNA_LONGHORN);
     m_luna_but3 .InitControl(IDB_LONGHORN_PUSHBUTTON, 
         TRUE,28,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::LUNA_LONGHORN);
     m_luna_but4 .InitControl(IDB_LONGHORN_PUSHBUTTON, 
         TRUE,28,23,RGB(0,0,0),_T("Tahoma"),ThemeButton::LUNA_LONGHORN);

     return TRUE;  // return TRUE  unless you set the focus to a control
}

更新(3.7.2006) 现在,使用LR_CREATEDIBSECTION标志调用函数LoadImage。 更新(7.3.2007) 我将类的名称改为ThameButton。创建新的头文件GdiDrawStream.h用于绘制函数,标志&结构声明。我添加XP和Luna Longhorn风格的按钮。 本文转载于:http://www.diyabc.com/frontweb/news441.html

posted @ 2020-08-07 01:49  Dincat  阅读(223)  评论(0编辑  收藏  举报