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

📄 mainfrm.cpp

📁 任意点阵字模生成软件源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "Screen.h"

#include "MainFrm.h"

#include "screenview.h"
#include "myeditvw.h"
#include "listvw.h"
#include "drawvw.h"
#include "pagedlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame
int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam);

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_SIZING()
	ON_WM_SIZE()
	ON_COMMAND(ID_SAVE, OnSave)
	ON_BN_CLICKED(ID_ADDPAGEBTN, OnAddPageBtn)
	ON_BN_CLICKED(ID_ADDBTN, OnAddbtn)
	ON_COMMAND(ID_DELPAGEBTN, OnDelPageBtn)
	ON_BN_CLICKED(ID_ADDPICBTN, OnAddPicBtn)
	ON_BN_CLICKED(ID_MODIFYBTN, OnModifyBtn)
	ON_BN_CLICKED(ID_DELETEBTN, OnDelWordBtn)
	ON_COMMAND(ID_SETBACKBTN, OnSetbackbtn)
	ON_COMMAND(ID_SETFRONTBTN, OnSetfrontbtn)
	ON_BN_CLICKED(ID_LOCKBTN, OnCheckLockBtn)
	ON_BN_CLICKED(ID_SHOWRECTANGLE, OnCheckShowRectangle)
	ON_CBN_SELCHANGE(ID_SETFONT, OnSelchangeFont)
	ON_COMMAND(ID_SETCUOTI, OnSetcuoTi)
	ON_UPDATE_COMMAND_UI(ID_SETCUOTI, OnUpdateSetcuoTi)
	ON_COMMAND(ID_SETXIETI, OnXieTi)
	ON_UPDATE_COMMAND_UI(ID_SETXIETI, OnUpdateXieTi)
	ON_EN_CHANGE(ID_SETWORDWIDTH, OnChangeWordWidth)
	ON_EN_CHANGE(ID_SETWORDHEIGHT, OnChangeWordHeight)
	ON_EN_CHANGE(ID_SETSCREENWIDTH, OnChangeScreenWidth)
	ON_EN_CHANGE(ID_SETSCREENHEIGHT, OnChangeScreenHeight)
	ON_COMMAND(ID_CANCELSELECTBTN, OnCancelselectbtn)
	ON_COMMAND(ID_IMPORT, OnImport)
	ON_WM_CHAR()
	ON_WM_KEYDOWN()
	ON_COMMAND(ID_DOWNLOAD, OnDownload)
	ON_COMMAND(ID_DOWNONE, OnDownone)
	ON_COMMAND(ID_SUPPER, OnSupper)
	ON_MESSAGE(MYWM_PROGRESS , OnProgress) 
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	bBold=TRUE;
	bItalic=FALSE;
	bLock=TRUE;
	bShowRectangle=FALSE;
	bInit=FALSE;
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	CSetDlg dgl;
	if(dgl.DoModal()==IDOK)
	{
		comm=dgl.comm;
		baurd=dgl.baurd ;
	}

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_standToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_standToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!m_wndToolBarDraw.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBarDraw.LoadToolBar(IDR_SETTOOLBAR))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}	

	if (!m_txtToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_txtToolBar.LoadToolBar(IDR_TEXTTOOLBAR))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}	
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
SetWindowText("LED电子显示屏上位机更改软件");
AddStandToolBar();
 CRect rect;
 m_wndToolBarDraw.GetWindowRect(&rect);
 //rect.OffsetRect(1, 0);
 //this->RecalcLayout();    //关键的一步,重新排列
// DockControlBar(&m_wndToolBarDraw, AFX_IDW_DOCKBAR_TOP, &rect);
int k=m_wndToolBarDraw.GetCount();
for(int index=0;index<m_wndToolBarDraw.GetCount();index++)
{
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETFONTSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETFONTSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
	//	rect.bottom += 500;
	//	rect.left=0;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_fontStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_SETFONTSTATIC))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
//		if (!m_wndToolBarDraw.m_Combo.Create(
		//填充内容
		m_wndToolBarDraw.m_fontStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_fontStatic.SetWindowText("字体:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETFONT)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETFONT, TBBS_SEPARATOR, 40);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.left=36;
		rect.top+=2;
		rect.bottom += 200;
	//	rect.left=0;
	//ect.right=rect.left+460;
		// 创建并显示
		if (!m_wndToolBarDraw.m_fontCombo.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST|CBS_SIMPLE|CBS_SORT,
			rect,&m_wndToolBarDraw,ID_SETFONT))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
m_wndToolBarDraw.m_fontCombo.SetWindowText("宋体");
		//填充内容
//m_wndToolBarDraw.m_Static.SetFont(&(m_wndToolBarDraw.m_font),0);
//m_wndToolBarDraw.m_Static.SetWindowText("字体:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETCOLORSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETCOLORSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
	//	rect.bottom += 500;
	//	rect.left=0;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_colorStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_SETCOLORSTATIC))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
//		if (!m_wndToolBarDraw.m_Combo.Create(
		//填充内容
		m_wndToolBarDraw.m_colorStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_colorStatic.SetWindowText("颜色:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETCOLOR)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETCOLOR, TBBS_SEPARATOR, 20);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
	//	rect.left=36;
		rect.left-=44;
		rect.top+=2;
		rect.bottom += 200;
	//	rect.left=0;
	//ect.right=rect.left+460;
		// 创建并显示
		if (!m_wndToolBarDraw.m_colorCombo.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST|CBS_SIMPLE,
			rect,&m_wndToolBarDraw,ID_SETCOLOR))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		//填充内容
		m_wndToolBarDraw.m_colorCombo.AddString("A");
		m_wndToolBarDraw.m_colorCombo.AddString("B");
		m_wndToolBarDraw.m_colorCombo.AddString("C");
		m_wndToolBarDraw.m_colorCombo.AddString("D");

//m_wndToolBarDraw.m_Static.SetFont(&(m_wndToolBarDraw.m_font),0);
//m_wndToolBarDraw.m_Static.SetWindowText("字体:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_WORDWIDTHSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_WORDWIDTHSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_wordwidthStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_WORDWIDTHSTATIC))
		{
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_wordwidthStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_wordwidthStatic.SetWindowText("字宽:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETWORDWIDTH)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETWORDWIDTH, TBBS_SEPARATOR, 10);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.left-=44;
		rect.top+=2;
		rect.bottom += 200;
		// 创建并显示
		if (!m_wndToolBarDraw.m_wordWidth.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
			rect,&m_wndToolBarDraw,ID_SETWORDWIDTH))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_wordWidth.SetWindowText("16");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_WORDHEIGHTSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_WORDHEIGHTSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_wordheightStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_WORDHEIGHTSTATIC))
		{
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_wordheightStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_wordheightStatic.SetWindowText("字高:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETWORDHEIGHT)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETWORDHEIGHT, TBBS_SEPARATOR, 10);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.left-=44;
		rect.top+=2;
		rect.bottom += 200;
		// 创建并显示
		if (!m_wndToolBarDraw.m_wordHeight.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
			rect,&m_wndToolBarDraw,ID_SETWORDHEIGHT))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_wordHeight.SetWindowText("16");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SCREENWIDTHSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SCREENWIDTHSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_screenwidthStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_SCREENWIDTHSTATIC))
		{
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_screenwidthStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_screenwidthStatic.SetWindowText("屏宽:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETSCREENWIDTH)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETSCREENWIDTH, TBBS_SEPARATOR, 10);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.left-=44;
		rect.top+=2;
		rect.bottom += 200;
		// 创建并显示
		if (!m_wndToolBarDraw.m_screenWidth.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
			rect,&m_wndToolBarDraw,ID_SETSCREENWIDTH))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_screenWidth.SetWindowText("128");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SCREENHEIGHTSTATIC)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SCREENHEIGHTSTATIC, TBBS_SEPARATOR, 80);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.top+=2;
		rect.right=rect.left+40;
		// 创建并显示
		if (!m_wndToolBarDraw.m_screenheightStatic.Create("",WS_CHILD|WS_VISIBLE,
			rect,&m_wndToolBarDraw,ID_SCREENHEIGHTSTATIC))
		{
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_screenheightStatic.SetFont(&(m_wndToolBarDraw.m_font),0);
		m_wndToolBarDraw.m_screenheightStatic.SetWindowText("屏高:");
	}
	if(m_wndToolBarDraw.GetItemID(index)==ID_SETSCREENHEIGHT)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_wndToolBarDraw.SetButtonInfo(index, ID_SETSCREENHEIGHT, TBBS_SEPARATOR, 10);
		m_wndToolBarDraw.GetItemRect(index, &rect);
		//设置位置
		rect.left-=44;
		rect.top+=2;
		rect.bottom += 200;
		// 创建并显示
		if (!m_wndToolBarDraw.m_screenHeight.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,
			rect,&m_wndToolBarDraw,ID_SETSCREENHEIGHT))
		{
			//m_ObjectBar.GetWindow()
			TRACE0("Failed to create combo-box\n");
			return FALSE;
		}
		m_wndToolBarDraw.m_screenHeight.SetWindowText("48");
	}
}
	AddTextToolBar();
	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_standToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_standToolBar);
	m_wndToolBarDraw.EnableDocking(CBRS_ALIGN_TOP);
	DockControlBar(&m_wndToolBarDraw);

	m_txtToolBar.EnableDocking(CBRS_ALIGN_TOP);
	DockControlBar(&m_txtToolBar);
//	this->FloatControlBar(&m_txtToolBar,CPoint(30,120));
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
cs.style&=~FWS_ADDTOTITLE;
//return CMDIFrameWnd::PreCreateWindow(cs);

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	CRect rc;
	GetClientRect(&rc);
	if(m_wndSplit1.CreateStatic(this,2,1)==NULL)
		return FALSE;
//	m_wndSplit1.CreateView(0,0,RUNTIME_CLASS(CScreenView),CSize(rc.Width(),rc.Height()*4/5),pContext);
	if(m_wndSplit2.CreateStatic(&m_wndSplit1,1,2,WS_CHILD|WS_VISIBLE,m_wndSplit1.IdFromRowCol(0,0))==FALSE)
		return FALSE;
	m_wndSplit2.CreateView(0,0,RUNTIME_CLASS(CScreenView),CSize(200,800),pContext);
	m_wndSplit2.CreateView(0,1,RUNTIME_CLASS(CDrawVw),CSize(100,800),pContext);
	m_wndSplit1.CreateView(1,0,RUNTIME_CLASS(CMyEditVw),CSize(100,0),pContext);
	bInit=TRUE;
	return TRUE;
	//return CFrameWnd::OnCreateClient(lpcs, pContext);
}

void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) 
{
	CFrameWnd::OnSizing(fwSide, pRect);
	
	// TODO: Add your message handler code here
	
}

void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
	CFrameWnd::OnSize(nType, cx, cy);
		CRect rc;
	if(bInit)
	{
		GetClientRect(&rc);
		m_wndSplit1.SetRowInfo(0,rc.Height()*3/4,0);
	//	m_wndSplit1.SetRowInfo(0,rc.Height()/5,100);
		//m_wndSplit1.SetColumnInfo(0,500,0);
		m_wndSplit1.RecalcLayout();
	}	
	// TODO: Add your message handler code here
	
}

void CMainFrame::RecalcLayout(BOOL bNotify) 
{
	// TODO: Add your specialized code here and/or call the base class
	CFrameWnd::RecalcLayout(bNotify);
	
}

void CMainFrame::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType) 
{
	// TODO: Add your specialized code here and/or call the base class

	CFrameWnd::CalcWindowRect(lpClientRect, nAdjustType);
}

BOOL CMainFrame::AddTextToolBar()
{
 CRect rect;
 m_txtToolBar.GetWindowRect(&rect);
 //rect.OffsetRect(1, 0);
 //this->RecalcLayout();    //关键的一步,重新排列
// DockControlBar(&m_wndToolBarDraw, AFX_IDW_DOCKBAR_TOP, &rect);
int k=m_txtToolBar.GetCount();

for(int index=0;index<m_txtToolBar.GetCount();index++)
{

	if(m_txtToolBar.GetItemID(index)==ID_TEXTINPUT)
	{
		//设置指定工具项的宽度并获取新的区域 80是宽度
		m_txtToolBar.SetButtonInfo(index, ID_TEXTINPUT, TBBS_SEPARATOR, 260);
		m_txtToolBar.GetItemRect(index, &rect);
		//设置位置

⌨️ 快捷键说明

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