📄 jobdlg.cpp
字号:
// 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 + -