📄 keydlg.cpp
字号:
// KeyDlg.cpp : implementation file
//
#include "stdafx.h"
#include "testd.h"
#include "KeyDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CKeyDlg dialog
CKeyDlg::CKeyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CKeyDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CKeyDlg)
m_key = _T("");
//}}AFX_DATA_INIT
rect1=CRect(230,25,355,155);
point=CPoint(rect1.left,rect1.top);
}
void CKeyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CKeyDlg)
DDX_Control(pDX, IDC_STATICKEY, m_skey);
DDX_Text(pDX, IDC_KEY, m_key);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CKeyDlg, CDialog)
//{{AFX_MSG_MAP(CKeyDlg)
ON_WM_DESTROY()
ON_WM_CTLCOLOR()
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CKeyDlg message handlers
void CKeyDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData();
key=m_key;
CDialog::OnOK();
}
BOOL CKeyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
btnok.Create("确定",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,CRect(95,120,165,145),this,IDOK);
rgna.CreateRoundRectRgn(5,5,370,180,30,30);
rgnb.CreateRoundRectRgn(15,15,377,185,30,30);
rgnc.CreateRoundRectRgn(5,5,500,265,30,30);
rgnc.CombineRgn(&rgnb,&rgna,RGN_OR);
SetWindowRgn(rgnc,TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CKeyDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
rgna.DeleteObject();
rgnb.DeleteObject();
rgnc.DeleteObject();
KillTimer(1);
}
HBRUSH CKeyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID()==IDC_KEY)
{
CBrush br(RGB(0,255,255));
pDC->SetBkColor(RGB(0,255,255));
hbr=br;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CKeyDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC memdc;
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BACKGROUND);
memdc.CreateCompatibleDC(&dc);
CBitmap *def=memdc.SelectObject(&bitmap);
CBrush br(RGB(50,50,50));
CRect rect;
GetClientRect(&rect);
CRgn rgna,rgnb,rgnc;
rgna.CreateRoundRectRgn(8,8,379,185,30,40);
rgnb.CreateRoundRectRgn(0,0,367,174,30,40);
rgnc.CreateRoundRectRgn(0,0,510,260,40,40);
rgnc.CombineRgn(&rgna,&rgnb,RGN_DIFF);
memdc.FillRgn(&rgnc,&br);
CFont font;
font.CreateFont(MulDiv(9, -dc.GetDeviceCaps(LOGPIXELSY), 72),
0, 0, 0, FW_THIN, FALSE, FALSE, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH|FF_SWISS, _T("宋体"));
CPen pen(PS_SOLID, 2, RGB(72, 72, 72));
CPen pen1(PS_SOLID,2, RGB(192, 192, 192));
CPen *oldpen;
memdc.FillRect(rect1,&br);
oldpen=memdc.SelectObject(&pen);
memdc.MoveTo(rect1.left,rect1.bottom);
memdc.LineTo(rect1.left,rect1.top);
memdc.LineTo(rect1.right,rect1.top);
memdc.SelectObject(&pen1);
memdc.MoveTo(rect1.right,rect1.top);
memdc.LineTo(rect1.right,rect1.bottom);
memdc.LineTo(rect1.left,rect1.bottom);
memdc.SelectObject(oldpen);
memdc.SelectObject(&font);
DrawRect(&memdc);
dc.BitBlt(0,0,rect.Width(),rect.Height(),&memdc,0,0,SRCCOPY);
memdc.SelectObject(def);
pen.DeleteObject();
pen1.DeleteObject();
font.DeleteObject();
SetTimer(1,100,NULL);
}
void CKeyDlg::DrawRect(CDC *pDC)
{
CRgn rgn;
rgn.CreateRectRgnIndirect(&rect1);
pDC->SelectClipRgn(&rgn,RGN_COPY);
COLORREF oldColor = pDC->SetTextColor(RGB(255,255,255));
int nOldMode = pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(point.x+5,point.y+6,"欢迎进入!");
pDC->TextOut(point.x+5,point.y+26,"这是一个电子日记本!");
pDC->TextOut(point.x+5,point.y+46,"有什么问题请联系我");
pDC->TextOut(point.x+5,point.y+66,"作者:郭井胜");
pDC->SetTextColor(oldColor);
pDC->SetBkMode(nOldMode);
pDC->SelectClipRgn(NULL, RGN_COPY);
}
void CKeyDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
point.y-=2;
if(point.y<rect1.top-80)
{
KillTimer(1);
InvalidateRect(rect1,false);
point.y=rect1.bottom;
CDialog::OnTimer(nIDEvent);
}
InvalidateRect(rect1,false);
CDialog::OnTimer(nIDEvent);
CDialog::OnTimer(nIDEvent);
}
BOOL CKeyDlg::OnEraseBkgnd(CDC *dc)
{
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -