程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 怎樣實現XP風格按鈕

怎樣實現XP風格按鈕

編輯:關於VC++

示例代碼運行效果圖

在vc6下面怎樣實現具有xp風格的按鈕?我這裡介紹一種簡單的方法。 我們需要用到兩個類,一個是CButtonST,另一個是CWinXpButtonST.這兩個類一個是按鈕類,另一個是Xp風格按鈕類,大家可以從我的例子原代碼中得到相關的4個文件(BtnST.h、BtnST.cpp、WinXPButtonST.h、WinXPButtonST.cpp)。

下面開始制作這個示例程序 

1、使用vc的向導制作一個工程dialog工程,起名為:XPDlg。並接受一切默認值。

2、將我上面提到的4個文件copy到你的工程所在的目錄。打開FileView將4個文件加入到你的工程中去。查看ClassView增加了2個類,CButtonSt 和CWinXpButtonST。

3、在CAboutDlg類中加入#include "WinXPButtonSt.h"並加入成員 CWinXPButtonST m_OK;

4、使用MFC 類向導在類CAboutDlg中,加入2個函數 ON_WM_CTLCOLOR ON_WN_INITDIALOG注意這個地方是CAboutDlg類,而不是默認的CXPDlgDlg類, 如下圖:

5、在OnInitDialog中加入如下代碼:

m_OK.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_OK.SetBkColor(RGB(162,189,252));
m_OK.SetRounded(TRUE);
m_OK.SetTooltipText(_T("關閉"));

6、在CAboutDlg::OnCtlColor中加入如下代碼:

if(nCtlColor==CTLCOLOR_LISTBOX)
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
}
else if(nCtlColor==CTLCOLOR_SCROLLBAR)
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
}
else if(nCtlColor==CTLCOLOR_EDIT)
{
  //pDC->SetBkMode(TRANSPARENT);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(233,233,220));
  HBRUSH b=CreateSolidBrush(RGB(233,233,220));
  return b;
}
else if(nCtlColor==CTLCOLOR_STATIC)
{
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(160,180,220));
  HBRUSH b=CreateSolidBrush(RGB(160,180,220));
  return b;
}
else if(nCtlColor==CTLCOLOR_DLG)
{
  pDC->SetTextColor(RGB(0,0,0));
  pDC->SetBkColor(RGB(160,180,220));
  HBRUSH b=CreateSolidBrush(RGB(160,180,220));
  return b;
}

7、在CAboutDlg::DoDataExchange中加入如下代碼:

DDX_Control(pDX, IDOK, m_OK);

8、打開Dialog對話框IDD_XPDLG_DIALOG 並加入一個Button,雙擊這個Button,生成該按鈕單擊處理函數,在其中加入

CAboutDlg Dlg;
Dlg.DoModal();

9、運行Ctrl+F7

這個程序所用到的類,是一個意大利人寫的,還有其他不少功能,大家可以參照說明來使用,順便提一句,這個類不能用作商業用途,如果需要的話,需要給作者支付5$.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved