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

📄 testddlg.cpp

📁 用VC编的电子日记软件
💻 CPP
字号:
// testdDlg.cpp : implementation file
//

#include "stdafx.h"
#include "testd.h"
#include "testdDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();
	
	// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA
	
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL
	
	// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestdDlg dialog

CTestdDlg::CTestdDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestdDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestdDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	move=false;
	rect=CRect(230,187,290,210);
	editrect=CRect(370,20,670,480);
	fontcolor=RGB(0,0,0);
	bdown=false;
}

void CTestdDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestdDlg)
	DDX_Control(pDX, IDC_NOTE, m_edit);
	DDX_Control(pDX, IDC_LINK, m_link);
	DDX_Control(pDX, IDC_MOOD, m_mood);
	DDX_Control(pDX, IDC_WELCOME2, m_welcome2);
	DDX_Control(pDX, IDC_STATICWELCOM, m_welcome);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTestdDlg, CDialog)
//{{AFX_MSG_MAP(CTestdDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_THINK,OnThink)
ON_COMMAND(IDC_OPEN,OnOpen)
ON_COMMAND(IDC_SET ,OnSet)
ON_COMMAND(IDC_SAVE,OnSave)
ON_WM_TIMER()
ON_WM_DESTROY()
ON_WM_NCRBUTTONDOWN()
ON_WM_NCHITTEST()
ON_COMMAND(IDC_PICTRUE,OnExit)
ON_COMMAND(IDC_FONT,OnFont)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestdDlg message handlers

BOOL CTestdDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	// Add "About..." menu item to system menu.
	
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	
	// 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
	
	// TODO: Add extra initialization here


	rgn1.CreateRectRgn(0,0,700,500);
	SetWindowRgn(rgn1,true);

	SetWindowText("电子日记本");
    
	GetNumber(date.year);
	GetDate();
	date.m_year=time;
	date.date=dat;

	m_welcome.behead=true;
	m_welcome2.behead=true;

	
	date.Create("",WS_CHILD|WS_VISIBLE,CRect(0,150,230,300),this);
	think.Create("",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,rect,this,IDC_THINK);
	btnsave.isflat=true;
	btnopen.isflat=true;
	btnset.isflat=true;
	btnselect.isflat=true;
	btnfont.isflat=true;
	m_link.issub=true;
	btnsave.Create("打开",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(50,275,270,300),this,IDC_OPEN);
	btnopen.Create("保存",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(50,310,270,335),this,IDC_SAVE);
	btnfont.Create("字体颜色",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(50,345,270,370),this,IDC_FONT);
	btnset.Create("设置",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(50,380,270,405),this,IDC_SET);
	btnselect.Create("退出",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(50,415,270,440),this,IDC_PICTRUE);
	
	CFile file("c:\\windows\\key.dat",CFile::modeRead);
	CArchive ar(&file,CArchive::load);
	doc.Serialize(ar);
	setdlg.m_path=doc.path;
	ar.Close();
	file.Close();


	
	SetTimer(1,300000,NULL);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTestdDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CTestdDlg::OnPaint() 
{
	CPaintDC dc(this);
	CBitmap bkimage;
	CDC memdc;
	memdc.CreateCompatibleDC(&dc);
	bkimage.LoadBitmap(IDB_BKGROUND);
	CBitmap *defbitmap=memdc.SelectObject(&bkimage);
	CRect rect;
	GetClientRect(&rect);	
	
	CPen bkpen,kk,lpen;
	int r=100;
	int g=111;
	int b=179;
	
	int cr=r/30;
	int cg=g/30;
	int cb=b/30;	
	for(int i=0;i<=30;i+=2)
	{
		if(r>=cr)
			r-=cr;
		if(g>=cg)
			g-=cg;
		if(b>=cb)
			b-=cb;
		kk.CreatePen(PS_SOLID,3,RGB(r,g,b));
		CPen *oldpen=memdc.SelectObject(&kk);
		memdc.MoveTo(308+i,0);
		memdc.LineTo(308+i,500);
		memdc.MoveTo(359-i,0);
		memdc.LineTo(359-i,500);
		memdc.SelectObject(oldpen);	
		kk.DeleteObject();
		
	}
	
	
	for(int j=0;j<=20;j+=4)
	{
		lpen.CreatePen(PS_SOLID,2,RGB(120,120,120));
		CPen *oldpen=memdc.SelectObject(&lpen);
		memdc.MoveTo(680+j,0);
		memdc.LineTo(680+j,500);
		memdc.SelectObject(oldpen);		
		lpen.DeleteObject();
		
	}
	bkpen.CreatePen(PS_SOLID,8,RGB(0,0,20));
	CPen *oldpen=memdc.SelectObject(&bkpen);
	memdc.MoveTo(334,0);
	memdc.LineTo(334,500);
	memdc.SelectObject(oldpen);
	bkpen.DeleteObject();
	
	
	CPen linepen1,line1;
	linepen1.CreatePen(PS_SOLID,6,RGB(60,60,60));
	line1.CreatePen(PS_SOLID,0,RGB(30,30,230));
	CPen *def1=memdc.SelectObject(&linepen1);
	memdc.MoveTo(10,120);
	memdc.LineTo(300,120);
	memdc.SelectObject(&line1);
	
	memdc.MoveTo(10,120);
	memdc.LineTo(300,120);
	memdc.SelectObject(def1);
	line1.DeleteObject();
	linepen1.DeleteObject();
	
	CPen linepen,line;
	linepen.CreatePen(PS_SOLID,6,RGB(60,60,60));
	line.CreatePen(PS_SOLID,0,RGB(30,30,230));
	CPen *def=memdc.SelectObject(&linepen);
	memdc.MoveTo(10,240);
	memdc.LineTo(300,240);
	memdc.SelectObject(&line);
	
	memdc.MoveTo(10,239);
	memdc.LineTo(300,239);
	memdc.SelectObject(def);
	line.DeleteObject();
	linepen.DeleteObject();
	
	CPen p1(PS_SOLID,3, RGB(50, 50, 50));
	CPen p2(PS_SOLID,2, RGB(212, 212, 212));
	
	oldpen=memdc.SelectObject(&p1);
	memdc.MoveTo(editrect.left,editrect.bottom);
	memdc.LineTo(editrect.left,editrect.top);
	memdc.LineTo(editrect.right,editrect.top);
	memdc.SelectObject(&p2);
	memdc.MoveTo(editrect.right,editrect.top);
	memdc.LineTo(editrect.right,editrect.bottom);
	memdc.LineTo(editrect.left,editrect.bottom);
	memdc.SelectObject(oldpen);
	p1.DeleteObject();
	p2.DeleteObject();
				
				
	dc.BitBlt(0,0,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
	memdc.SelectObject(defbitmap); 
	CBitmap editbitmap;
	editbitmap.LoadBitmap(IDB_BITMAP);
	CBitmap *defb;
	defb=memdc.SelectObject(&editbitmap);
	dc.BitBlt(editrect.left,editrect.top,editrect.Width(),editrect.Height(),&memdc,0,0,SRCCOPY);
	memdc.SelectObject(defb);
	memdc.DeleteDC();
	editbitmap.DeleteObject();
	bkimage.DeleteObject();
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.

BOOL CTestdDlg::OnEraseBkgnd(CDC *dc)
{
	return true;
}

HBRUSH CTestdDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	
	// TODO: Return a different brush if the default is not desired	
	if(pWnd->GetDlgCtrlID()==IDC_NOTE)
	{
		
		pDC->SetTextColor(fontcolor);
	}
	return hbr;
}

void CTestdDlg::OnThink()
{
	CColorDialog dlg;
	if(dlg.DoModal()==IDOK)
	{
		think.color=dlg.GetColor();
	}
}
void CTestdDlg::OnOpen()
{
	if(filedlg.DoModal()==IDOK)
	{
		filename=filedlg.getfile;
		CFile file(filename,CFile::modeRead);
		CArchive ar(&file,CArchive::load);
		doc.Serialize(ar);
		m_write=doc.diary;
		think.color=doc.moodcolor;
		date.m_year=doc.year;
		date.date=doc.date;	
		fontcolor=doc.ftcolor;
		ar.Close();
		file.Close();
		
		
		m_edit.SetWindowText(m_write);
		
		CRect cliprect(0,120,250,240);		
		InvalidateRect(&cliprect);
	}
}
void CTestdDlg::OnSet()
{
	setdlg.DoModal();
	
}
void CTestdDlg::OnSave()
{
	CString filen;
	filen=dat;
	m_edit.GetWindowText(m_write);
	doc.diary=m_write;
	doc.moodcolor=think.color;
	doc.date=date.date;
	doc.year=date.m_year;
	doc.ftcolor=fontcolor;
	CFile file(setdlg.m_path+filen+".dia",CFile::modeCreate|CFile::modeWrite);
	CArchive ar(&file,CArchive::store);
	doc.Serialize(ar);
	ar.Close();
	file.Close();
}

void CTestdDlg::GetNumber(int year)
{
	int k,l;
	k=year;
	l=year;
	CString tempa;
	CString tempb;
	CString tempc;
	CString tempd;
	for(int i=1;i<1000;i*=10)
	{
		
		k=l/(1000/i);
		l=l%(1000/i);
		if(i==1)
		{
			switch(k)
			{
			case 0:
				tempa="零";
				break;
			case 1:
				tempa="一";
				break;
			case 2:
				tempa="二";
				break;
			case 3:
				tempa="三";
				break;
			case 4:
				tempa="四";
				break;
			case 5:
				tempa="五";
				break;
			case 6:
				tempa="六";
				break;
			case 7:
				tempa="七";
				break;
			case 8:
				tempa="八";
				break;
			case 9:
				tempa="九";
				break;
			}
		}
		if(i==10)
		{
			switch(k)
			{
			case 0:
				tempb="零";
				break;
			case 1:
				tempb="一";
				break;
			case 2:
				tempb="二";
				break;
			case 3:
				tempb="三";
				break;
			case 4:
				tempb="四";
				break;
			case 5:
				tempb="五";
				break;
			case 6:
				tempb="六";
				break;
			case 7:
				tempb="七";
				break;
			case 8:
				tempb="八";
				break;
			case 9:
				tempb="九";
				break;
			}
		}
		if(i==100)
		{
			switch(k)
			{
			case 0:
				tempc="零";
				break;
			case 1:
				tempc="一";
				break;
			case 2:
				tempc="二";
				break;
			case 3:
				tempc="三";
				break;
			case 4:
				tempc="四";
				break;
			case 5:
				tempc="五";
				break;
			case 6:
				tempc="六";
				break;
			case 7:
				tempc="七";
				break;
			case 8:
				tempc="八";
				break;
			case 9:
				tempc="九";
				break;
			}
		}
		if(l>=0&&l<=9)
		{
			switch(l)
			{
			case 0:
				tempd="零";
				break;
			case 1:
				tempd="一";
				break;
			case 2:
				tempd="二";
				break;
			case 3:
				tempd="三";
				break;
			case 4:
				tempd="四";
				break;
			case 5:
				tempd="五";
				break;
			case 6:
				tempd="六";
				break;
			case 7:
				tempd="七";
				break;
			case 8:
				tempd="八";
				break;
			case 9:
				tempd="九";
				break;
			}
		}
		
}
time.Format("%2s %2s %2s %2s 年",tempa,tempb,tempc,tempd);
}

void CTestdDlg::GetDate()
{
	dat.Format("%d 月 %d 日",date.month,date.day);
}

void CTestdDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	OnSave();
	CDialog::OnTimer(nIDEvent);
}

void CTestdDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	KillTimer(1);
}


void CTestdDlg::OnNcRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnRButtonDown(nFlags, point);
}

UINT CTestdDlg::OnNcHitTest(CPoint point)
{
	UINT test=CDialog::OnNcHitTest(point);
	return test==HTCLIENT?HTCAPTION:test;
}
void CTestdDlg::OnExit()
{
	CDialog::OnCancel();
}
void CTestdDlg::OnFont()
{
	CColorDialog dlg;
	if(dlg.DoModal()==IDOK)
	{
       fontcolor=dlg.GetColor();
	   CString note;
		CEdit *edit=(CEdit *)GetDlgItem(IDC_NOTE);
		edit->GetWindowText(note);
		CRect rect;
		edit->GetClientRect(&rect);
        edit->InvalidateRect(&rect,false);
		edit->SetWindowText(note);
	}
	}

⌨️ 快捷键说明

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