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

📄 childview.cpp

📁 这些源代码
💻 CPP
字号:
// ChildView.cpp : implementation of the CChildView class
//

#include "stdafx.h"
#include "List.h"
#include "ChildView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CAPITOL States[] = 
    {
    "Colorado", "Denver",
    "Texas", "Austin",
    "Alabama", "Montgomery",
    "Alaska", "Juneau",
    "Oregon", "Salem",
    "New Hampshire", "Montpelier",
    "Virginia", "Roanoke",
    "Arizona", "Tucson",
    "Idaho", "Boise",
    "Minnesota", "St. Paul",
	"Tennessee", "Nashville",
	"Arkansas", "Little Rock",
	"Delaware", "Dover",
	"New York", "Albany",
	"Pennsylvania", "Harrisburg",
	"Ohio", "Columbus",
	"Louisiana", "Baton Rouge",
	"Rhode Island", "Providence",
	"Michigan", "Lansing",
	"Utah", "Salt Lake City",
	"Oklahoma", "Oklahoma City",
	"Wyoming", "Casper",
	"Canada", "Ottawa"
    };

/////////////////////////////////////////////////////////////////////////////
// CChildView

CChildView::CChildView()
{
	m_nSortBy = 0;
    SortArray ();
}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView,CWnd )
    //{{AFX_MSG_MAP(CChildView)
    ON_WM_PAINT()
	ON_COMMAND(ID_SORT_BYCAPITOL, OnSortBycapitol)
	ON_COMMAND(ID_SORT_BYSTATE, OnSortBystate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CChildView message handlers

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
    if (!CWnd::PreCreateWindow(cs))
        return FALSE;

    cs.dwExStyle |= WS_EX_CLIENTEDGE;
    cs.style &= ~WS_BORDER;
    cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 
        ::LoadCursor(NULL, IDC_ARROW), HBRUSH(COLOR_WINDOW+1), NULL);

    return TRUE;
}

void CChildView::OnPaint() 
{
CFont font;
CPoint  point(0, 0);
int     tabs[2] = {130, 200};
char    szText[_MAX_PATH];

    CPaintDC dc(this); // device context for painting
    font.CreatePointFont (100, "Times New Roman Bold");
    dc.SelectObject (&font);

    LOGFONT lf;
    memset (&lf, '\0', sizeof (LOGFONT));
    font.GetLogFont (&lf);
    CAPITOL state = m_States.GetHead ();
    POSITION pos = m_States.GetHeadPosition ();
    while (pos != NULL)
    {
        state = m_States.GetNext (pos);
        sprintf (szText, "%s\t%s", state.State, state.Capitol);
        dc.TabbedTextOut (point.x, point.y, szText, 2, tabs, 0);
        point.y += abs(lf.lfHeight);
    } 

    // TODO: Add your message handler code here
    
    // Do not call CWnd::OnPaint() for painting messages
}

void CChildView::SortArray()
{
POSITION pos;

	if (!m_States.IsEmpty ())
	{
		while ((pos = m_States.GetHeadPosition ()) != NULL)
			m_States.RemoveHead ();
	}
    for (int i = 0; i < (sizeof(States)/sizeof(CAPITOL)); ++i)
    {
        if (m_States.IsEmpty())
        {
            m_States.AddHead (States[i]);
            continue;
        }
        CAPITOL next;
        pos = m_States.GetHeadPosition ();
        next = m_States.GetTail ();
        for (next = m_States.GetHead(); pos != NULL; next = m_States.GetNext (pos))
        {
			if (CompareStrings (next, States[i]) > 0)
				break;
        }
        if (pos == NULL)
        {
			if (CompareStrings (States[i], next) < 0)
            {
                pos = m_States.GetTailPosition ();
                m_States.InsertBefore (pos, States[i]);
            }
            else
                m_States.AddTail (States[i]);
            continue;
        }
        m_States.GetPrev (pos);
        m_States.InsertBefore (pos, States[i]);
    }
}

int CChildView::CompareStrings(CAPITOL & c1, CAPITOL & c2)
{
char *str1, *str2;

	switch (m_nSortBy)
	{
		case 0:
			str1 = c1.State;
			str2 = c2.State;
			break;
		case 1:
			str1 = c1.Capitol;
			str2 = c2.Capitol;
			break;
	}
	return (strcmp (str1, str2));
}

void CChildView::OnSortBycapitol() 
{
	m_nSortBy = 1;
    SortArray ();
	Invalidate ();
}

void CChildView::OnSortBystate() 
{
	m_nSortBy = 0;
    SortArray ();
	Invalidate ();
}

⌨️ 快捷键说明

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