⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttons.cpp

📁 创建特色按钮
💻 CPP
字号:
///////////////////////////////////////////////////////////////////
// Module   : BUTTONS.CPP
//
// Purpose  : Implementation of program that uses all predefined 
//            button styles for CButton and CBitmapButton classes
//            in a frame window.
//
// Author   : Rob McGregor, rob_mcgregor@compuserve.com
//        
// Date     : 03-20-96
///////////////////////////////////////////////////////////////////

#include "buttons.h"

// Message map for CMainWnd
BEGIN_MESSAGE_MAP(CMainWnd, CMainFrame)
   ON_COMMAND(IDC_BTNABOUT, OnBtnAboutClick)      
   ON_COMMAND(IDC_BTNEXIT, OnBtnExitClick)      
   ON_COMMAND(IDC_BTNAUTORADIO1, OnAutoRadio1Click)
   ON_COMMAND(IDC_BTNAUTORADIO2, OnAutoRadio2Click)
   ON_COMMAND(IDC_BITBTN1, OnBitBtn1Click)      
   ON_COMMAND(IDC_BITBTN2, OnBitBtn2Click)      
   ON_COMMAND(IDC_BITBTN3, OnBitBtn3Click)      
END_MESSAGE_MAP()

//
// CMainWnd Methods
//

///////////////////////////////////////////////////////////////////
// CMainWnd::CMainWnd() - constructor

CMainWnd::CMainWnd()
{
   // Initialize the child control pointers to NULL...
   m_pBtnAbout = 0;  
   m_pBtnExit  = 0;
   
   m_pBtnCheck      = 0;
   m_pBtnCheckLeft  = 0;
   m_pBtnAutoCheck1 = 0;
   m_pBtnAutoCheck2 = 0;
   
   m_pBtn3State      = 0;
   m_pBtnAuto3State1 = 0;
   m_pBtnAuto3State2 = 0;
   
   m_pBtnRadio      = 0;
   m_pBtnRadioLeft  = 0;
   m_pBtnAutoRadio1 = 0;
   m_pBtnAutoRadio2 = 0;
   
   m_pBtnGroup1 = 0;
   m_pBtnGroup2 = 0;
   m_pBtnGroup3 = 0;
   m_pBtnGroup4 = 0;

   m_pBitBtn1 = 0;
   m_pBitBtn2 = 0;
   m_pBitBtn3 = 0;
}  
                
///////////////////////////////////////////////////////////////////
// CMainWnd::~CMainWnd() - destructor (overrides default)

CMainWnd::~CMainWnd()
{
   if (m_pBtnAbout) delete m_pBtnAbout;
   if (m_pBtnExit)  delete m_pBtnExit;
   
   if (m_pBtnCheck)      delete m_pBtnCheck;
   if (m_pBtnCheckLeft)  delete m_pBtnCheckLeft;
   if (m_pBtnAutoCheck1) delete m_pBtnAutoCheck1;
   if (m_pBtnAutoCheck2) delete m_pBtnAutoCheck2;
   
   if (m_pBtn3State)      delete m_pBtn3State;
   if (m_pBtnAuto3State1) delete m_pBtnAuto3State1;
   if (m_pBtnAuto3State2) delete m_pBtnAuto3State2;
   
   if (m_pBtnRadio)      delete m_pBtnRadio;
   if (m_pBtnRadioLeft)  delete m_pBtnRadioLeft;
   if (m_pBtnAutoRadio1) delete m_pBtnAutoRadio1;
   if (m_pBtnAutoRadio2) delete m_pBtnAutoRadio2;
   
   if (m_pBtnGroup1) delete m_pBtnGroup1;
   if (m_pBtnGroup2) delete m_pBtnGroup2;
   if (m_pBtnGroup3) delete m_pBtnGroup3;
   if (m_pBtnGroup4) delete m_pBtnGroup4;

   if (m_pBitBtn1) delete m_pBitBtn1;
   if (m_pBitBtn2) delete m_pBitBtn2;
   if (m_pBitBtn3) delete m_pBitBtn3;
}

///////////////////////////////////////////////////////////////////
// CMainWnd::CreateChildControls() 

void CMainWnd::CreateChildControls()
{
   // Allocate the child controls
   m_pBtnAbout = new CButton; ASSERT_VALID(m_pBtnAbout);
   m_pBtnExit  = new CButton; ASSERT_VALID(m_pBtnExit);
   
   m_pBtnGroup1     = new CButton; ASSERT_VALID(m_pBtnGroup1);
   m_pBtnCheck      = new CButton; ASSERT_VALID(m_pBtnCheck);
   m_pBtnCheckLeft  = new CButton; ASSERT_VALID(m_pBtnCheckLeft);
   m_pBtnAutoCheck1 = new CButton; ASSERT_VALID(m_pBtnAutoCheck1);
   m_pBtnAutoCheck2 = new CButton; ASSERT_VALID(m_pBtnAutoCheck2);
   
   m_pBtnGroup2      = new CButton; ASSERT_VALID(m_pBtnGroup2);
   m_pBtn3State      = new CButton; ASSERT_VALID(m_pBtn3State);
   m_pBtnAuto3State1 = new CButton; ASSERT_VALID(m_pBtnAuto3State1);
   m_pBtnAuto3State2 = new CButton; ASSERT_VALID(m_pBtnAuto3State2);
   
   m_pBtnGroup3     = new CButton; ASSERT_VALID(m_pBtnGroup3);
   m_pBtnRadio      = new CButton; ASSERT_VALID(m_pBtnRadio);
   m_pBtnRadioLeft  = new CButton; ASSERT_VALID(m_pBtnRadioLeft);
   m_pBtnAutoRadio1 = new CButton; ASSERT_VALID(m_pBtnAutoRadio1);
   m_pBtnAutoRadio2 = new CButton; ASSERT_VALID(m_pBtnAutoRadio2);
   
   m_pBtnGroup4 = new CButton; ASSERT_VALID(m_pBtnGroup1);
   m_pBitBtn1   = new CBitmapButton; ASSERT_VALID(m_pBitBtn1);
   m_pBitBtn2   = new CBitmapButton; ASSERT_VALID(m_pBitBtn2);
   m_pBitBtn3   = new CBitmapButton; ASSERT_VALID(m_pBitBtn3);

   // initialize the child buttons
   if (!m_pBtnExit->Create("Exit", BS_PUSH, 
      CRect(424, 8, 513, 33), this, IDC_BTNEXIT))
      { TRACE0("Failed to create Exit button\n"); }

   if (!m_pBtnAbout->Create("About", BS_DEFPUSH, 
      CRect(424, 40 , 513, 65), this, IDC_BTNABOUT))
      { TRACE0("Failed to create About button\n"); }

   //
   // Check Boxes
   //
   if (!m_pBtnGroup1->Create("Check Boxes", BS_GROUP, 
      CRect(8, 8, 209, 137), this, IDC_BTNGROUP1))
      { TRACE0("Failed to create Group Box 1\n"); }

   if (!m_pBtnCheck->Create("Standard Check Box", BS_CHECK, 
      CRect(24, 32, 193, 49), this, IDC_BTNCHECK))
      { TRACE0("Failed to create Check Box\n"); }

   if (!m_pBtnCheckLeft->Create("LeftText Check Box", 
      BS_CHECK | BS_LEFTTEXT, 
      CRect(24, 56, 193, 73), this, IDC_BTNCHECKLEFT))
      { TRACE0("Failed to create LeftText Check Box\n"); }
                                                         
   if (!m_pBtnAutoCheck1->Create("Auto Check Box 1", BS_AUTOCHECK, 
   CRect(24, 88, 193, 105), 
      this, IDC_BTNAUTOCHECK1))
      { TRACE0("Failed to create AutoCheck Box 1\n"); }

   if (!m_pBtnAutoCheck2->Create("Auto Check Box 2", BS_AUTOCHECK, 
   CRect(24, 112, 193, 129), 
      this, IDC_BTNAUTOCHECK2))
      { TRACE0("Failed to create AutoCheck Box 2\n"); }

   //
   // 3-State Check Boxes
   //

   if (!m_pBtnGroup2->Create("3-State", BS_GROUP, 
      CRect(8, 144, 209, 249), this, IDC_BTNGROUP2))
      { TRACE0("Failed to create Group Box 2\n"); }

   if (!m_pBtn3State->Create("3-State Check Box", BS_3, 
   CRect(24, 168, 193, 185), 
      this, IDC_BTN3STATE))
      { TRACE0("Failed to create 3-State button\n"); }

   if (!m_pBtnAuto3State1->Create("3-State Auto Check 1", BS_AUTO3, 
   CRect(24, 200, 193, 217), 
      this, IDC_BTNAUTO3STATE1))
      { TRACE0("Failed to create Auto 3-State button 1\n"); }

   if (!m_pBtnAuto3State2->Create("3-State Auto Check 2", BS_AUTO3, 
      CRect(24, 224, 193, 241), this, IDC_BTNAUTO3STATE2))
      { TRACE0("Failed to create Auto3State button 2\n"); }

   //
   // Radio Buttons
   //
   if (!m_pBtnGroup3->Create("Radio Buttons", BS_GROUP, 
      CRect(216, 8, 409, 137), this, IDC_BTNGROUP3))
      { TRACE0("Failed to create Group Box 3\n"); }

   if (!m_pBtnRadio->Create("Radio Button", BS_RADIO, 
      CRect(232, 32, 401, 49), this, IDC_BTNRADIO))  
      { TRACE0("Failed to create Radio button\n"); }

   if (!m_pBtnRadioLeft->Create("LeftText Radio Button", 
      BS_RADIO | BS_LEFTTEXT, 
      CRect(232, 56, 401, 73), this, IDC_BTNRADIOLEFT))
      { TRACE0("Failed to create LeftText Radio button\n"); }

   if (!m_pBtnAutoRadio1->Create("Auto Radio Button 1", 
      BS_AUTORADIO, CRect(232, 88, 401, 105), 
      this, IDC_BTNAUTORADIO1))
      { TRACE0("Failed to create AutoRadio button 1\n"); }

   if (!m_pBtnAutoRadio2->Create("Auto Radio Button 2", 
      BS_AUTORADIO, CRect(232, 112, 401, 129), 
      this, IDC_BTNAUTORADIO2))
      { TRACE0("Failed to create AutoRadio button 2\n"); }

   //
   // Bitmap Buttons
   //
   if (!m_pBtnGroup4->Create("Bitmap Buttons", BS_GROUP, 
      CRect(216, 144, 409, 249), this, IDC_BTNGROUP4))
      { TRACE0("Failed to create Group Box 4\n"); }

   // BitBtn1
   if (!m_pBitBtn1->Create("Test", BS_PUSH | BS_OWNERDRAW, 
      CRect(232, 184, 281, 233), this, IDC_BITBTN1))
      { TRACE0("Failed to create Bitmap button 1\n"); }
   
   if (!m_pBitBtn1->LoadBitmaps(IDR_BITMAP1UP, IDR_BITMAP1DOWN))
      { TRACE0("Failed to load bitmap for Bitmap button 1\n"); }

   // BitBtn2
   if (!m_pBitBtn2->Create("", BS_PUSH | BS_OWNERDRAW, 
      CRect(288, 184, 337, 233), this, IDC_BITBTN2))
      { TRACE0("Failed to create Bitmap button 2\n"); }

   if (!m_pBitBtn2->LoadBitmaps(IDR_BITMAP2UP, IDR_BITMAP2DOWN))
      { TRACE0("Failed to load bitmap for Bitmap button 2\n"); }

   // BitBtn3
   if (!m_pBitBtn3->Create("", BS_PUSH | BS_OWNERDRAW, 
      CRect(344, 184, 393, 233), this, IDC_BITBTN3))
      { TRACE0("Failed to create Bitmap button 3\n"); }

   if (!m_pBitBtn3->LoadBitmaps(IDR_BITMAP3UP, IDR_BITMAP3DOWN))
      { TRACE0("Failed to load bitmap for Bitmap button 3\n"); }

   // Set some button states
   m_pBtnAuto3State1->SetCheck(3); 
   m_pBtnAuto3State2->SetCheck(1); 
   m_pBtnRadio->SetCheck(1); 
   m_pBtnAutoCheck1->SetCheck(1);
}
  
///////////////////////////////////////////////////////////////////
// CMainWnd::OnAutoRadio1Click() 

void CMainWnd::OnAutoRadio1Click()
{
   // Set a new font for each control
   //
   if (m_pFont)
   {
      delete m_pFont;
      m_pFont = 0;
   }

   SetChildFonts(IDC_BTNABOUT, IDC_BTNGROUP4, 
                 _T("MS Sans Serif"), 8);
   Invalidate();
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnAutoRadio2Click() 

void CMainWnd::OnAutoRadio2Click()
{
   // Set a new font for each control
   //
   if (m_pFont)
   {
      delete m_pFont;
      m_pFont = 0;
   }
   SetChildFonts(IDC_BTNABOUT, IDC_BTNGROUP4, 
                 _T("Times New Roman"), 11);
   Invalidate();
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnBtnExitClick() 

void CMainWnd::OnBtnExitClick()
{
   DestroyWindow();
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnBtnAboutClick() 

void CMainWnd::OnBtnAboutClick()
{
   ::MessageBeep(MB_ICONINFORMATION);
   MessageBox(_T("Look at all those MFC button styles!"),
              _T("About"), MB_OK | MB_ICONINFORMATION);
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnBitBtn1Click() 

void CMainWnd::OnBitBtn1Click()
{
   ::MessageBeep(MB_ICONINFORMATION);

   // Launch the Windows Paint applet...
   ::WinExec(_T("pbrush"), SW_SHOWNORMAL);
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnBitBtn2Click() 

void CMainWnd::OnBitBtn2Click()
{
   ::MessageBeep(MB_ICONINFORMATION);

   // Launch the Windows Notepad applet...
   ::WinExec(_T("notepad"), SW_SHOWNORMAL);
}

///////////////////////////////////////////////////////////////////
// CMainWnd::OnBitBtn3Click() 

void CMainWnd::OnBitBtn3Click()
{
   ::MessageBeep(MB_ICONINFORMATION);

   // Launch the Windows Explorer...
   ::WinExec(_T("explorer"), SW_SHOWNORMAL);
}

//
// CButtonApp Methods
//

///////////////////////////////////////////////////////////////////
// CButtonApp::InitInstance 

BOOL CButtonApp::InitInstance()
{
   // Allocate a new frame window object
   CMainWnd* pFrame = new CMainWnd;

   // Initialize the frame window                                      
   pFrame->Create(0, _T("MFC Button Style Sampler"),
                  WS_POPUPWINDOW | WS_DLGFRAME,
                  CRect(0, 0, 530, 290));

   // Assign the frame window as the app's main frame window
   this->m_pMainWnd = pFrame;
   pFrame->SetClientBackColor(COLOR_BTNFACE);
  
   // Create the child controls for the frame window
   pFrame->CreateChildControls();

   // Center and show the frame window
   pFrame->CenterWindow();
   pFrame->ShowWindow(m_nCmdShow);
   pFrame->UpdateWindow();

   return TRUE;
}
                
///////////////////////////////////////////////////////////////////
// Declare, create, and run the application

CButtonApp MyEditApp;

///////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -