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

📄 jobdlg.cpp

📁 该程序实现的是一个在织布厂用的提花机程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// JobDlg.cpp : implementation file
//

#include "stdafx.h"
#include "wea2.h"
#include "JobDlg.h"
#include "keybDlg.h"
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>


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

/////////////////////////////////////////////////////////////////////////////
// CJobDlg dialog


CJobDlg::CJobDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CJobDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CJobDlg)
	//}}AFX_DATA_INIT
}


void CJobDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CJobDlg)
	DDX_Control(pDX, IDC_LIST_JOB, m_JobList);
	DDX_Control(pDX, IDC_LIST_WEA, m_WeaList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CJobDlg, CDialog)
	//{{AFX_MSG_MAP(CJobDlg)
	ON_BN_CLICKED(IDC_APPEND, OnAppend)
	ON_BN_CLICKED(IDC_INSERT, OnInsert)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_BN_CLICKED(IDC_DOWN, OnDown)
	ON_NOTIFY(NM_CLICK, IDC_LIST_WEA, OnClickListWea)
	ON_BN_CLICKED(IDC_FROM, OnFrom)
	ON_BN_CLICKED(IDC_TO, OnTo)
	ON_BN_CLICKED(IDC_WEAREPEAT, OnWearepeat)
	ON_BN_CLICKED(IDC_LOADJOB, OnLoadjob)
	ON_BN_CLICKED(IDC_SAVEJOB, OnSavejob)
	ON_BN_CLICKED(IDC_JOBREPEAT, OnJobrepeat)
	ON_BN_CLICKED(IDC_BACK, OnBack)
	ON_BN_CLICKED(IDC_CLEARJOB, OnClearjob)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_LANGUAGE,OnLanguage)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CJobDlg message handlers

BOOL CJobDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	RECT top;
	top.left=top.top=0;
	top.right=GetSystemMetrics(SM_CXSCREEN);
	top.bottom=GetSystemMetrics(SM_CYSCREEN);
	top.bottom-=20;
	UINT cont[]={IDC_LIST_JOB,IDC_LIST_WEA,IDOK,IDC_APPEND,IDC_INSERT,
	IDC_DEL,IDC_DOWN,IDC_FROM,IDC_TO,IDC_WEAREPEAT,IDC_LOADJOB,IDC_BACK,
	IDC_SAVEJOB,IDC_CLEARJOB,IDC_JOBREPEAT,IDC_STATIC1,IDC_STATIC2};
	ReSize(this,top,cont,sizeof(cont)/sizeof(UINT));

	m_hDLL=NULL;
	m_hDLL = LoadLibrary("KeyB");
	if (m_hDLL != NULL)
	{
		get_string=(GET_STRING)GetProcAddress(m_hDLL, "GetString");
	    if ( !get_string)
	    {
		    AfxMessageBox("Can't load dll function ---GetString ");
			FreeLibrary(m_hDLL);
			m_hDLL=NULL;
		}
		get_number=(GET_NUMBER)GetProcAddress(m_hDLL, "GetNumber");
	    if ( !get_number)
	    {
		    AfxMessageBox("Can't load dll function ---GetNumber ");
			FreeLibrary(m_hDLL);
			m_hDLL=NULL;
		}
	}
	else
		AfxMessageBox("Can't load  DLL");
/*
	CStringArray SA;
	SA.Add("Wea Filename");
	SA.Add("Picks ");
	SA.Add("From  ");
	SA.Add(" To   ");
	SA.Add("Repeat ");
	InitialList(&m_WeaList,SA);
	SA.RemoveAll();
	SA.Add("Job_List Filename");
	SA.Add("Job Repeat");
	InitialList(&m_JobList,SA);
//	CButton* pb=(CButton*)GetDlgItem(IDC_BACK);
//	pb->SetEnable(0);
*/
	if(g_language==E)
	{
		OnLanguage(0,0);
	}
	else
	{
		OnLanguage(1,0);
//		PostMessage(WM_LANGUAGE,1,0);
	}
	if(g_job.GetSize()>0)
	{
		m_index=0;
		m_JobName=g_job.m_JobPathName+g_job.m_JobFileName;
		UpdateList(0);
		m_bEnable=1;
		EnableKey(1);
		EnableOK(1);
		g_job.ReArrange();
		m_job=g_job;
		g_running.Initialize(&g_job);
		UpdateData(0);
		g_bProgramReady=TRUE;
		m_bModified=FALSE;
		return TRUE;
	}
	m_job.m_Width=0;

		
	g_bProgramReady=FALSE;
	m_bEnable=0;
	EnableKey(0);
//	EnableOK(0);
	UpdateData(0);
	m_index=-1;
	m_bModified=FALSE;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CJobDlg::OnAppend() 
{
	CString lpszFullName=GetFileName(CString(".WEA"));
	if(lpszFullName.IsEmpty())
		return;
/*	DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
	LPCTSTR lpszFilter = ".wea Files(*..wea)|*.wea|All files(*.*)|*.*||";
	CFileDialog dlg(TRUE,NULL,NULL,dwFlags,lpszFilter,NULL);
	if(dlg.DoModal() == IDOK)
	{
		lpszFullName=dlg.GetPathName();
	}
	else
		return;

	CFileDlg dlg;
	dlg.m_match=CString("*.wea");
	dlg.m_info.Format(IDS_SELECT_WEA_NAME+g_language);
	if(dlg.DoModal()==IDOK)
	{
		CString path;
		char buffer[_MAX_PATH];
		_getcwd(buffer,_MAX_PATH);
		path=CString(buffer)+"\\";
		lpszFullName=path+dlg.m_file;
	}
	else
		return;
*/
	if(g_job.Append(lpszFullName))
	{
		m_index++;
		CWea* pw=(CWea*)g_job.GetAt(m_index);
		pw->m_nRepeat=0;
		UpdateList(m_index);
		if(m_bEnable==0)
		{
			EnableKey(1);
			m_bEnable=1;
		}
		g_bProgramReady=TRUE;
		m_bModified=TRUE;
		g_job.m_nRepeat=0;
	}
}

void CJobDlg::UpdateList(int index)
{
	m_WeaList.DeleteAllItems();
	m_JobList.DeleteAllItems();
	CStringArray SA;
	CString info;
	int n=g_job.GetSize();
	if(n==0)
	{
		g_job.m_JobPathName.Empty();
		g_job.m_JobFileName.Empty();
		g_job.m_nRepeat=0;
		return;
	}

	ASSERT(index<n);
	for(int i=0;i<n;i++)
	{
		SA.RemoveAll();
		CWea* pw=(CWea*)g_job.GetAt(i);
//		info.Format("%s%s",pw->m_WeaPathName,pw->m_WeaFileName);
		info.Format("%s",pw->m_WeaFileName);
		SA.Add(info);
		info.Format("%d",pw->m_Wea1->WeaSize.cy);
		SA.Add(info);
		info.Format("%d",pw->m_StartPoint.y+1);
		SA.Add(info);
		info.Format("%d",pw->m_StartPoint.y+pw->m_Size.cy);
		SA.Add(info);
		info.Format("%d",pw->m_nRepeat);
		SA.Add(info);
		InsertItemString(&m_WeaList,i, SA);
	}
	m_WeaList.SetItemState(index,LVIS_DROPHILITED ,LVIS_DROPHILITED );

	SA.RemoveAll();
//	info.Format("%s%s",g_job.m_JobPathName,g_job.m_JobFileName);
	info.Format("%s",g_job.m_JobFileName);
	SA.Add(info);
	info.Format("%d",g_job.m_nRepeat);
	SA.Add(info);
	InsertItemString(&m_JobList,0, SA);
}

void CJobDlg::OnInsert() 
{
	CString lpszFullName=GetFileName(CString(".WEA"));
	if(lpszFullName.IsEmpty())
		return;
/*	DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
	LPCTSTR lpszFilter = ".wea Files(*..wea)|*.wea|All files(*.*)|*.*||";
	CFileDialog dlg(TRUE,NULL,NULL,dwFlags,lpszFilter,NULL);
	if(dlg.DoModal() == IDOK)
	{
		lpszFullName=dlg.GetPathName();
	}
	else
		return;
*/
    if(g_job.GetSize()==0)
		m_index=0;
	else
		m_bModified=TRUE;
	g_job.Insert(lpszFullName,m_index);
	CWea* pw=(CWea*)g_job.GetAt(m_index);
	pw->m_nRepeat=0;
		g_job.m_nRepeat=0;
	UpdateList(m_index);
	if(m_bEnable==0)
	{
		EnableKey(1);
		m_bEnable=1;
	}
}

void CJobDlg::OnDel() 
{
	int n=g_job.GetSize();
	if(n==0)
		return;
	CWea* pw=(CWea*) g_job.GetAt(m_index);
	delete pw;
	g_job.RemoveAt(m_index);
	if(n==1)
	{
		EnableKey(0);
		m_bEnable=0;
		g_bProgramReady=FALSE;
		m_index=-1;
		UpdateList(m_index);	
		return;
	}
	if(n-1==m_index)
		m_index--;
	UpdateList(m_index);	
	m_bModified=TRUE;
}

void CJobDlg::OnDown() 
{
	int n=g_job.GetSize();
	if(n==0)
		return;
	if(m_index<n-1)
		m_index++;
	else
		m_index=0;
	UpdateList(m_index);	
}

void CJobDlg::OnClickListWea(NMHDR* pNMHDR, LRESULT* pResult) 
{
	for(int i=0;i<m_WeaList.GetItemCount();i++)
	{
		if(m_WeaList.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
		{
			m_index=i;
		    break;
		}
	}
	
	*pResult = 0;
}

void CJobDlg::OnFrom() 
{
	CWea* pw=(CWea*)g_job.GetAt(m_index);
	CString info;
	int y,end_y;
	end_y=pw->m_StartPoint.y+pw->m_Size.cy;
	info.Format(IDS_FROM+g_language);
	if(m_hDLL)
	{
		y=get_number(info,pw->m_StartPoint.y+1,g_language);
//		if(y>pw->m_Wea1->WeaSize.cy )
		if(y>end_y )
		{
			AfxMessageBox(IDS_START_GREATE+g_language);
			return;
		}
		if(y<1)
		{
			AfxMessageBox(IDS_TOO_SMALL+g_language);
			return;
		}
		pw->m_StartPoint.y=y-1;
//		pw->m_Size.cy=pw->m_Size.cy-pw->m_StartPoint.y;
		pw->m_Size.cy=end_y-pw->m_StartPoint.y;
		pw->SetRange(pw->m_StartPoint,pw->m_Size);
		UpdateList(m_index);
		m_bModified=TRUE;
	}
/*	CWea* pw=(CWea*)g_job.GetAt(m_index);
	CNumDlg dlg;
	dlg.m_num=pw->m_StartPoint.y+1;
	dlg.m_info.Format(IDS_FROM+g_language);
	if(dlg.DoModal()==IDOK)
	{
		if(dlg.m_num>pw->m_Size.cy)
		{
			AfxMessageBox(IDS_START_GREATE+g_language);
				return;
		}
		pw->m_StartPoint.y=dlg.m_num-1;
		pw->m_Size.cy=pw->m_Size.cy-pw->m_StartPoint.y;
	}
	pw->SetRange(pw->m_StartPoint,pw->m_Size);
	UpdateList(m_index);
	m_bModified=TRUE;
*/}

void CJobDlg::OnTo() 
{
	CWea* pw=(CWea*)g_job.GetAt(m_index);
	CString info;
	int y;
	info.Format(IDS_TO+g_language);
	if(m_hDLL)
	{
		y=get_number(info,pw->m_StartPoint.y+pw->m_Size.cy,g_language);
		if(y>pw->m_Wea1->WeaSize.cy || y<pw->m_StartPoint.y+1)
		{
			AfxMessageBox(IDS_ERROR_END+g_language);
				return;
		}
		pw->m_Size.cy=y-pw->m_StartPoint.y;
		pw->SetRange(pw->m_StartPoint,pw->m_Size);
		UpdateList(m_index);
		m_bModified=TRUE;
	}
/*
	
	
	
	CWea* pw=(CWea*)g_job.GetAt(m_index);

⌨️ 快捷键说明

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