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

📄 ctrlpage1.cpp

📁 《Visual C++.NET MFC类库应用详解》程序实例
💻 CPP
字号:
// CtrlPage1.cpp : 实现文件
//

#include "stdafx.h"
#include "ControlUse.h"
#include "CtrlPage1.h"


// CCtrlPage1 对话框

IMPLEMENT_DYNAMIC(CCtrlPage1, CPropertyPage)
CCtrlPage1::CCtrlPage1()
	: CPropertyPage(CCtrlPage1::IDD)
{
	m_DrawTool=-1;

}

CCtrlPage1::~CCtrlPage1()
{
}

void CCtrlPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST1, m_DrawList);
	DDX_Control(pDX, IDC_CHECKLISTBOX, m_checkList);

    int iEvent;
    int iItem;
    if( m_checkList.GetCount() > 0 )
    {
	  for( iEvent = 0; iEvent < m_listNames.GetSize(); iEvent++ )
	  {
		 iItem = m_checkList.FindStringExact( -1, m_listNames[iEvent] );
		 ASSERT( iItem != LB_ERR );
		 if( pDX->m_bSaveAndValidate )
			m_checkFlags[iEvent] = m_checkList.GetCheck( iItem );
		 else
			m_checkList.SetCheck( iItem, m_checkFlags[iEvent] != FALSE );
	  }
    }
}


BEGIN_MESSAGE_MAP(CCtrlPage1, CPropertyPage)
	ON_WM_PAINT()
	ON_LBN_SELCHANGE(IDC_LIST1, OnLbnSelchangeList1)
	ON_LBN_SELCHANGE(IDC_CHECKLISTBOX, OnLbnSelchangeChecklistbox)
END_MESSAGE_MAP()


// CCtrlPage1 消息处理程序

BOOL CCtrlPage1::OnInitDialog()
{
	CPropertyPage::OnInitDialog();

	// TODO:  在此添加额外的初始化
	m_DrawList.AddString("Line");
	m_DrawList.AddString("Rectangle");
	m_DrawList.AddString("Ellipse");
	m_DrawList.AddString("Text");

    m_listNames.Add("Line");m_checkFlags.Add(1);
	m_listNames.Add("Rectangle");m_checkFlags.Add(1);
	m_listNames.Add("Ellipse");m_checkFlags.Add(1);
	m_listNames.Add("Text");m_checkFlags.Add(1);

    int iEvent;
    for( iEvent = 0; iEvent < m_listNames.GetSize(); iEvent++ )
   	   m_checkList.AddString( m_listNames[iEvent] );

    UpdateData( FALSE );

	return TRUE;  
}

void CCtrlPage1::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此添加消息处理程序代码

	switch(m_DrawTool)
    {
	case 0:	dc.MoveTo(80,80);dc.LineTo(160,80);break;
	case 1:	dc.Rectangle(80,80,160,120);break;
	case 2:	dc.Ellipse(80,80,160,120);break;
	case 3:	dc.TextOut(80,100,"Hello,World!");break;
	}

	for( int i = 0; i< m_listNames.GetSize(); i++ )
	{
        if(m_checkFlags[i])
	    switch(i)
        {
	    case 0:	dc.MoveTo(180,70);dc.LineTo(260,70);break;
	    case 1:	dc.Rectangle(180,80,260,120);break;
	    case 2:	dc.Ellipse(180,80,260,120);break;
	    case 3:	dc.TextOut(180,90,"Hello,World!");break;
	    }
	}


	// 不为绘图消息调用 CPropertyPage::OnPaint()

}

void CCtrlPage1::OnLbnSelchangeList1()
{
	// TODO: 在此添加控件通知处理程序代码
	switch(m_DrawList.GetCurSel())
	{
	case 0:m_DrawTool=0;break;
	case 1:m_DrawTool=1;break;
	case 2:m_DrawTool=2;break;
	case 3:m_DrawTool=3;break;

	}
	Invalidate();
}

void CCtrlPage1::OnLbnSelchangeChecklistbox()
{
	// TODO: 在此添加控件通知处理程序代码
   int iEvent;
   int iItem;
   if( m_checkList.GetCount() > 0 )
   {
	  for( iEvent = 0; iEvent < m_listNames.GetSize(); iEvent++ )
	  {
		 iItem = m_checkList.FindStringExact( -1, m_listNames[iEvent] );
		 ASSERT( iItem != LB_ERR );
		 m_checkFlags[iEvent] = m_checkList.GetCheck( iItem );

	  }
   }
	Invalidate();

}

⌨️ 快捷键说明

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