📄 sbsgl.cpp
字号:
// sbsgl.cpp : implementation file
//
#include "stdafx.h"
#include "xxgl.h"
#include "sbsgl.h"
#include "time.h"
#include "strt.h"
#include "ext.h"
#include "func.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
Csbsgl::Csbsgl(CWnd* pParent /*=NULL*/)
: CDialog(Csbsgl::IDD, pParent)
{
//{{AFX_DATA_INIT(Csbsgl)
m_byjx = _T("");
m_cjpp = _T("");
m_gdbh = _T("");
m_ghdw = _T("");
m_jbr = _T("");
m_jfxs = _T("");
m_rkfs = _T("");
m_rkn = _T("");
m_rkr = _T("");
m_rky = _T("");
m_sbmc = _T("");
m_scdm = _T("");
m_ssbm = _T("");
m_sxjf = _T("");
m_wpdj = _T("");
m_wpsl = _T("");
m_xhgg = _T("");
m_yqdm = _T("");
m_zje = _T("");
m_zjly = _T("");
//}}AFX_DATA_INIT
}
void Csbsgl::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Csbsgl)
DDX_Control(pDX, IDC_xyg, m_xyg);
DDX_Control(pDX, IDC_TREE1, m_tree);
DDX_Text(pDX, IDC_byjx, m_byjx);
DDX_Text(pDX, IDC_cjpp, m_cjpp);
DDX_Text(pDX, IDC_gdbh, m_gdbh);
DDX_Text(pDX, IDC_ghdw, m_ghdw);
DDX_Text(pDX, IDC_jbr, m_jbr);
DDX_Text(pDX, IDC_jfxs, m_jfxs);
DDX_Text(pDX, IDC_rkfs, m_rkfs);
DDX_Text(pDX, IDC_rkn, m_rkn);
DDX_Text(pDX, IDC_rkr, m_rkr);
DDX_Text(pDX, IDC_rky, m_rky);
DDX_Text(pDX, IDC_sbmc, m_sbmc);
DDX_Text(pDX, IDC_scdm, m_scdm);
DDX_Text(pDX, IDC_ssbm, m_ssbm);
DDX_Text(pDX, IDC_sxjf, m_sxjf);
DDX_Text(pDX, IDC_wpdj, m_wpdj);
DDX_Text(pDX, IDC_wpsl, m_wpsl);
DDX_Text(pDX, IDC_xhgg, m_xhgg);
DDX_Text(pDX, IDC_yqdm, m_yqdm);
DDX_Text(pDX, IDC_zje, m_zje);
DDX_Text(pDX, IDC_zjly, m_zjly);
//}}AFX_DATA_MAP
HTREEITEM htreeitem;
HTREEITEM h1,h2;
FILE *fpe;
char e_id_buf[50],e_code_buf[50],p_id_buf[50];
char e_name_buf[50],e_abbr_buf[50],a_id_buf[50];
char m_un_buf[50],c_pr_buf[50];
char id_buf[7][3];
int i,j,k,l,n,m;
long order;
int flag,flag1;
char buf1[50];
int parent,ret;
char buf2[10];
if (g_come_in_flag == 0){
/*
m_rkn = _T("");
g_cur_sb_search_pos = 0;
g_old_htreeitem = NULL;
fpe = fopen("c:\\xxsbgl\\sbqk.txt","rb");
i = 0;
flag = 0;
g_end_p = g_begin_p = 0;
while (flag == 0){
ret = get_a_line(fpe,g_e_id[i]);
if (ret == -1)
break;
get_a_line(fpe,g_e_code[i]);
get_a_line(fpe,g_p_id[i]);
get_a_line(fpe,g_e_name[i]);
get_a_line(fpe,g_e_abbr[i]);
get_a_line(fpe,g_a_id[i]);
get_a_line(fpe,g_m_un[i]);
get_a_line(fpe,g_c_pr[i]);
get_a_line(fpe,buf2);
g_parent[i] = atoi(buf2);
if (buf2[0] != '-'){
if ((buf2[0] < '0')||(buf2[0] > '9'))
j = 0;
}
order = i;
if (g_parent[i] == -1)
g_htreeitem[i] = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,NULL,TVI_LAST);
else
g_htreeitem[i] = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,g_htreeitem[g_parent[i]],TVI_LAST);
m_tree.SetItemText(g_htreeitem[i],g_e_name[i]);
i ++;
if (i == 1681)
j = 0;
}
g_end_sbs = i;
*/
end_g_id_buf = 0;
order = 0;
g_end_sbs = 0;
fpe = fopen("c:\\xxsbgl\\sbqk1.txt","r");
while (!feof(fpe)){
memset(e_id_buf,0,50);
memset(e_code_buf,0,50);
memset(p_id_buf,0,50);
memset(e_name_buf,0,50);
memset(e_abbr_buf,0,50);
memset(a_id_buf,0,50);
memset(m_un_buf,0,50);
memset(c_pr_buf,0,50);
fgets(e_id_buf,50,fpe);
e_id_buf[strlen(e_id_buf)-1] = 0;
if (e_id_buf[0] == 0)
goto end;
fgets(e_code_buf,50,fpe);
e_code_buf[strlen(e_code_buf)-1] = 0;
fgets(p_id_buf,50,fpe);
p_id_buf[strlen(p_id_buf)-1] = 0;
fgets(e_name_buf,50,fpe);
e_name_buf[strlen(e_name_buf)-1] = 0;
fgets(e_abbr_buf,50,fpe);
e_abbr_buf[strlen(e_abbr_buf)-1] = 0;
fgets(a_id_buf,50,fpe);
a_id_buf[strlen(a_id_buf)-1] = 0;
fgets(m_un_buf,50,fpe);
m_un_buf[strlen(m_un_buf)-1] = 0;
fgets(c_pr_buf,50,fpe);
c_pr_buf[strlen(c_pr_buf)-1] = 0;
for (i=0;i<7;i++){
g_id_buf[end_g_id_buf][i][0] = id_buf[i][0] = e_id_buf[i*2];
g_id_buf[end_g_id_buf][i][1] = id_buf[i][1] = e_id_buf[i*2+1];
g_id_buf[end_g_id_buf][i][2] = id_buf[i][2] = 0;
}
for (i=0;i<7;i++){
if ((id_buf[i][0] != '0')||(id_buf[i][1] != '0')){
flag = 0;
for (k=order-1;k>=0;k--){
flag1 = 0;
for (l=0;l<=i;l++){
if ((id_buf[l][0] != g_e_id[k][l*2])||
((id_buf[l][1] != g_e_id[k][l*2+1]))){
flag1 = 1;
}
}
if (flag1 == 0){
flag = 1;
break;
}
}
if (flag == 0){
if (i == 0){
h1 = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,NULL,TVI_LAST);
strcpy(buf1,e_id_buf);
for (m=2;m<14;m++)
e_id_buf[m] = '0';
clear_space(e_id_buf);
strcpy(g_e_id[g_end_sbs],e_id_buf);
strcpy(e_id_buf,buf1);
clear_space(e_code_buf);
strcpy(g_e_code[g_end_sbs],e_code_buf);
clear_space(p_id_buf);
strcpy(g_p_id[g_end_sbs],p_id_buf);
clear_space(e_name_buf);
strcpy(g_e_name[g_end_sbs],e_name_buf);
clear_space(e_abbr_buf);
strcpy(g_e_abbr[g_end_sbs],e_abbr_buf);
clear_space(a_id_buf);
strcpy(g_a_id[g_end_sbs],a_id_buf);
clear_space(m_un_buf);
strcpy(g_m_un[g_end_sbs],m_un_buf);
clear_space(c_pr_buf);
strcpy(g_c_pr[g_end_sbs],c_pr_buf);
g_htreeitem[g_end_sbs] = h1;
g_parent[order] = -1;
g_end_sbs ++;
order ++;
m_tree.SetItemText(h1,e_name_buf);
}
else{
for (k=0;k<g_end_sbs;k++){
flag = 0;
for (j=0;j<i;j++){
if ((g_e_id[k][j*2] != id_buf[j][0])||
(g_e_id[k][j*2+1] != id_buf[j][1])){
flag = 1;
break;
}
}
if (flag == 0){
if ((g_e_id[k][i*2] != '0')||
(g_e_id[k][i*2+1] != '0')){
flag = 1;
}
}
if (flag == 0){
parent = k;
h2 = g_htreeitem[k];
}
}
h1 = m_tree.InsertItem(0,"",0,0,TVIS_BOLD,0xff,order,h2,TVI_LAST);
strcpy(buf1,e_id_buf);
for (m=2*i+2;m<14;m++)
e_id_buf[m] = '0';
clear_space(e_id_buf);
strcpy(g_e_id[g_end_sbs],e_id_buf);
strcpy(e_id_buf,buf1);
clear_space(e_code_buf);
strcpy(g_e_code[g_end_sbs],e_code_buf);
clear_space(p_id_buf);
strcpy(g_p_id[g_end_sbs],p_id_buf);
clear_space(e_name_buf);
strcpy(g_e_name[g_end_sbs],e_name_buf);
clear_space(e_abbr_buf);
strcpy(g_e_abbr[g_end_sbs],e_abbr_buf);
clear_space(a_id_buf);
strcpy(g_a_id[g_end_sbs],a_id_buf);
clear_space(m_un_buf);
strcpy(g_m_un[g_end_sbs],m_un_buf);
clear_space(c_pr_buf);
strcpy(g_c_pr[g_end_sbs],c_pr_buf);
g_htreeitem[g_end_sbs] = h1;
g_parent[order] = parent;
g_end_sbs ++;
order ++;
m_tree.SetItemText(h1,e_name_buf);
}
}
}
else{
break;
}
}
end_g_id_buf ++;
}
end:
fclose(fpe);
}
// TV_INSERTSTRUCT TV_ITEM
}
BEGIN_MESSAGE_MAP(Csbsgl, CDialog)
//{{AFX_MSG_MAP(Csbsgl)
ON_EN_CHANGE(IDC_byjx, OnChangebyjx)
ON_BN_CLICKED(IDC_xyg, Onxyg)
ON_WM_KEYDOWN()
ON_EN_SETFOCUS(IDC_sbmc, OnSetfocussbmc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Csbsgl message handlers
clear_space(char buf[])
{
int n,l;
l = strlen(buf);
n = l-1;
while (buf[n] == ' '){
buf[n] = 0;
n --;
if (n == 0)
break;
}
}
void Csbsgl::OnOK()
{
// TODO: Add extra validation here
FILE *fpe;
int i,j,k;
fpe = fopen("c:\\xxsbgl\\sbqk.txt","w");
for (i=0;i<g_end_sbs;i++){
if (g_e_id[i][0] == 0){
strcpy(g_e_id[i]," ");
}
fprintf(fpe,"%s\n",g_e_id[i]);
if (g_e_code[i][0] == 0){
strcpy(g_e_code[i]," ");
}
fprintf(fpe,"%s\n",g_e_code[i]);
if (g_p_id[i][0] == 0){
strcpy(g_p_id[i]," ");
}
fprintf(fpe,"%s\n",g_p_id[i]);
if (g_e_name[i][0] == 0){
strcpy(g_e_name[i]," ");
}
fprintf(fpe,"%s\n",g_e_name[i]);
if (g_e_abbr[i][0] == 0){
strcpy(g_e_abbr[i]," ");
}
fprintf(fpe,"%s\n",g_e_abbr[i]);
if (g_a_id[i][0] == 0){
strcpy(g_a_id[i]," ");
}
fprintf(fpe,"%s\n",g_a_id[i]);
if (g_m_un[i][0] == 0){
strcpy(g_m_un[i]," ");
}
fprintf(fpe,"%s\n",g_m_un[i]);
if (g_c_pr[i][0] == 0){
strcpy(g_c_pr[i]," ");
}
fprintf(fpe,"%s\n",g_c_pr[i]);
fprintf(fpe,"%d\n",g_parent[i]);
}
fclose(fpe);
g_come_in_flag = 1;
CDialog::OnOK();
}
int get_a_line(FILE *fpe,char buf[])
{
int c,i;
i = 0;
c = fgetc1(fpe);
while ((c != 13)&&(c != -1)){
buf[i++] = c;
c = fgetc1(fpe);
}
buf[i] = 0;
if (c == -1)
return -1;
else
c = fgetc1(fpe);
if (c == -1)
return -1;
return 0;
}
int fgetc1(FILE *fpe)
{
int ret,c;
if (g_end_p == 0){
ret = fread(g_f_buffer,1,20000,fpe);
if ((ret == 0)||(ret == -1))
return -1;
g_end_p = ret;
g_begin_p = 1;
c = g_f_buffer[0];
return c;
}
else if (g_begin_p == g_end_p){
ret = fread(g_f_buffer,1,20000,fpe);
if ((ret == 0)||(ret == -1))
return -1;
g_end_p = ret;
g_begin_p = 1;
c = g_f_buffer[0];
return c;
}
else{
c = g_f_buffer[g_begin_p++];
return c;
}
}
void Csbsgl::OnChangebyjx()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
int i,j,flag;
CString str;
char buf[40];
i = 0;
GetDlgItemText(IDC_byjx,str);
strcpy(buf,str.GetBuffer(40));
for (i=0;i<g_end_sbs;i++){
flag = 0;
for (j=0;j<strlen(buf);j++){
if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
flag = 1;
break;
}
/*
if (strstr(g_e_abbr[i],buf) != NULL){
flag = 0;
break;
}
*/
}
if (flag == 0){
if (g_e_abbr[i][j] == 0){
if (g_old_htreeitem != g_htreeitem[i]){
if (g_old_htreeitem != NULL){
m_tree.SetItemState(g_old_htreeitem,0,0xffff);
}
}
m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
set_cur_sel(i);
g_old_htreeitem = g_htreeitem[i];
m_tree.Invalidate(TRUE);
g_cur_sb_search_pos = i+1;
return;
}
}
}
for (i=0;i<g_end_sbs;i++){
flag = 1;
for (j=0;j<strlen(buf);j++){
/* if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
flag = 1;
break;
}
*/
if (strstr(g_e_abbr[i],buf) != NULL){
flag = 0;
break;
}
}
if (flag == 0){
if (g_old_htreeitem != g_htreeitem[i]){
if (g_old_htreeitem != NULL){
m_tree.SetItemState(g_old_htreeitem,0,0xffff);
}
}
m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
set_cur_sel(i);
g_old_htreeitem = g_htreeitem[i];
m_tree.Invalidate(TRUE);
g_cur_sb_search_pos = i+1;
break;
}
}
}
void Csbsgl::Onxyg()
{
// TODO: Add your control notification handler code here
int i,j,k,flag;
CString str;
char buf[40];
i = 0;
GetDlgItemText(IDC_byjx,str);
strcpy(buf,str.GetBuffer(40));
for (k=0;k<g_end_sbs;k++){
i = k + g_cur_sb_search_pos;
i = i % g_end_sbs;
flag = 1;
for (j=0;j<strlen(buf);j++){
/* if ((buf[j] != g_e_abbr[i][j])&&(buf[j] != '?')){
flag = 1;
break;
}
*/
if (strstr(g_e_abbr[i],buf) != NULL){
flag = 0;
break;
}
}
if (flag == 0){
if (g_old_htreeitem != g_htreeitem[i]){
if (g_old_htreeitem != NULL){
m_tree.SetItemState(g_old_htreeitem,0,0xffff);
}
}
m_tree.Select(g_htreeitem[i],TVGN_FIRSTVISIBLE);
m_tree.SetItemState(g_htreeitem[i],TVIS_DROPHILITED,0xffff);
set_cur_sel(i);
g_old_htreeitem = g_htreeitem[i];
m_tree.Invalidate(TRUE);
g_cur_sb_search_pos = i+1;
break;
}
}
}
void Csbsgl::set_cur_sel(int n)
{
SetDlgItemText(IDC_sbmc,g_e_name[n]);
}
void Csbsgl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
void Csbsgl::OnSetfocussbmc()
{
// TODO: Add your control notification handler code here
int i;
CWnd *pwnd;
pwnd = GetDlgItem(IDC_byjx);
pwnd->SetFocus();
Onxyg();
i = 0;
}
void trim(char *buf)
{
int i,j;
char bu[200];
strcpy(bu,buf);
j = 0;
for (i=0;i<strlen(bu);i++){
if (bu[i] != ' ')
buf[j++] = bu[i];
}
buf[j] = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -