📄 tname.cpp
字号:
// tname.cpp : implementation file
//
#include "stdafx.h"
#include "LandSoft.h"
#include "tname.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTypeName dialog
CTypeName::CTypeName(CWnd* pParent,CArray<RGBQUAD,RGBQUAD>& quads,
CArray<Types,Types>& blocks,BOOL evername,
int minarea,BOOL savetip)
:CDialog(CTypeName::IDD,pParent)
{
m_ControlsNum=blocks.GetSize();
m_Controls.SetSize(m_ControlsNum,-1);
m_BlockTypes.Copy(blocks);
m_Quads.Copy(quads);
m_bEverName=evername;
m_bOren8=TRUE;
//{{AFX_DATA_INIT(CTypeName)
m_MinArea = minarea;
m_bSaveTip = savetip;
//}}AFX_DATA_INIT
}
void CTypeName::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTypeName)
DDX_Text(pDX, IDC_EDIT_AREA, m_MinArea);
DDX_Check(pDX, IDC_CHECK_SAVE, m_bSaveTip);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTypeName, CDialog)
//{{AFX_MSG_MAP(CTypeName)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_RADIO_4, OnRadio4)
ON_BN_CLICKED(IDC_RADIO_8, OnRadio8)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTypeName message handlers
BOOL CTypeName::OnInitDialog()
{
CDialog::OnInitDialog();
for(int i=0;i<m_ControlsNum;i=i+2) // 逐行绘制控件
{
CString id;
id.Format("%d",i+1);
m_Controls[i].m_ID.Create(id,WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(18,93+15*i,33,116+15*i),this,MYID+3*i);
m_Controls[i].m_Name.Create(ES_CENTER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
CRect(51,91+15*i,137,116+15*i),this,MYID+3*i+1);
BYTE colorindex=m_BlockTypes[i].Val;
CString value;
value.Format("%d",colorindex);
m_Controls[i].m_Value.Create(value,WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(200,93+15*i,230,116+15*i),this,MYID+3*i+2);
if((i+1)<m_ControlsNum)
{
CString id2;
id2.Format("%d",i+2);
m_Controls[i+1].m_ID.Create(id2,WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(245+18,93+15*i,245+33,116+15*i),this,MYID+3*(i+1));
m_Controls[i+1].m_Name.Create(ES_CENTER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
CRect(245+51,91+15*i,245+137,116+15*i),this,MYID+3*(i+1)+1);
BYTE colorindex2=m_BlockTypes[i+1].Val;
CString value2;
value2.Format("%d",colorindex2);
m_Controls[i+1].m_Value.Create(value2,WS_CHILD|WS_VISIBLE|SS_CENTER,
CRect(245+200,93+15*i,245+230,116+15*i),this,MYID+3*(i+1)+2);
}
}
if(m_bEverName)
for (int j=0;j<m_ControlsNum;j++)
m_Controls[j].m_Name.SetWindowText(m_BlockTypes[j].Name);
m_OK.Create(_T("确定"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|WS_TABSTOP,
CRect(100,110+15*i,210,138+15*i),this,IDOK);
m_Cancel.Create(_T("取消"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|WS_TABSTOP,
CRect(290,110+15*i,400,138+15*i),this,IDCANCEL);
SetWindowPos(NULL,100,50,500,55+15*i+125,SWP_NOACTIVATE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CTypeName::OnPaint() // 绘制颜色方块
{
CPaintDC dc(this); // device context for painting
for(int i=0;i<m_ControlsNum;i=i+2)
{
CRect rect(155,91+15*i,180,116+15*i);
BYTE colorindex=m_BlockTypes[i].Val;
RGBQUAD rgbquad=m_Quads[colorindex];
CBrush cbBack(RGB(rgbquad.rgbRed,rgbquad.rgbGreen,rgbquad.rgbBlue));
dc.FillRect(rect,&cbBack);
if((i+1)<m_ControlsNum)
{
CRect rect2(245+155,91+15*i,245+180,116+15*i);
BYTE colorindex2=m_BlockTypes[i+1].Val;
RGBQUAD rgbquad2=m_Quads[colorindex2];
CBrush cbBack2(RGB(rgbquad2.rgbRed,rgbquad2.rgbGreen,rgbquad2.rgbBlue));
dc.FillRect(rect2,&cbBack2);
}
}
}
void CTypeName::OnOK() // 更新与控件相连的值
{
for(int i=0;i<m_ControlsNum;i++)
m_Controls[i].m_Name.GetWindowText(m_BlockTypes[i].Name);
CDialog::OnOK();
}
void CTypeName::OnRadio4()
{
m_bOren8=FALSE;
}
void CTypeName::OnRadio8()
{
m_bOren8=TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -