📄 testddlg.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 + -