BCG使用经验总结_软件使用经验总结

2020-02-28 其他工作总结 下载本文

BCG使用经验总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件使用经验总结”。

BCG使用的经验总结

一、怎样生成一个BCG的树形列表

首先,在需要生成BCG树形列表的界面所在的“.H”文件中加入下面这句话:CBCGPGridCtrl * m_zbxn;

其次,在对应的“.CPP”文件中加入下面的这句话:

将m_zbxn = NULL;这是初始化,必须的,防止野指针的出现。

二、将界面嵌入到当前的DLG窗口的方法

三、需要加入“行选择变化消息响应函数”

在对应的“.H”文件中加入下列标黑的代码

在对应的“.CPP”代码中加入下列标黑的代码

其中的BLJD_ZBXN,为create语句中的最后一个参数,必须保持一致,同时要在H或CPP文件中用#define BLJD_ZBXN 1002,定义一下这个宏,这才能保证嵌入的正确性。

/************************************************************************/ /* 菜单调用函数

*/ /************************************************************************/ UINT CPlugBLJD::GetMenu(CMenu * menu, UINT ChildID, char * MenuName){ HMODULE hDLL=GetModuleHandle(_T(PLUG_BLJD_NAME));HINSTANCE hexe=AfxGetResourceHandle();AfxSetResourceHandle((HINSTANCE)hDLL);

UINT uResID = ChildID;menu->LoadMenu(IDR_BLJD);int iMenuCnt = menu->GetMenuItemCount();for(int i=0;i

char str[255]={0};

UINT id = 0;

id = menu->GetMenuItemID(i);

//-

//如果id=0,就判断为分割线

//-

if(id!= 0)

{

if(id>1000000)

{

CMenu * pSubMenu = menu->GetSubMenu(i);

int iSubMenuCnt = pSubMenu->GetMenuItemCount();

for(int n=0;n

{

id = pSubMenu->GetMenuItemID(n);

if(id!=0)

{

pSubMenu->GetMenuString(id, str, 255, MF_BYCOMMAND);

m_uRes = ChildID;

pSubMenu->ModifyMenu(id, MF_BYCOMMAND, uResID, str);

uResID++;

}

}

}

else

{

menu->GetMenuString(id, str, 255, MF_BYCOMMAND);

m_uRes = ChildID;

menu->ModifyMenu(id, MF_BYCOMMAND, uResID, str);

uResID++;

}

} } memcpy(MenuName, “兵力机动(&D)”, 12);AfxSetResourceHandle(hexe);return uResID;} 附录:

需要注意的事情:在COPY代码的时候,一定要注意,最好将原来的代码重新动手打一下。

/************************************************************************/ /* 取下一个装备内码(当期最大的加一)

/************************************************************************/ BOOL CZbxn::GetNextFACode(CString& maxCode){ CADORecordset adoRecordSet(CBLJDProject::m_adoConn);

CString strSQL;COleDateTime currentTime = COleDateTime::GetCurrentTime();strSQL.Format(“select max(ZBNM)as ZBNM from BLJD_JCSJ_ZBXN where ZBNM like 'ZB%d%s'”,currentTime.GetYear(), “%”);

if(!adoRecordSet.Open(strSQL, CADORecordset.openQuery)){

return FALSE;}

CString strMaxCode;adoRecordSet.GetFieldValue(“ZBNM”, strMaxCode);if(strMaxCode.GetLength()){

maxCode.Format(“ZB%d%04d”, currentTime.GetYear(), atoi(strMaxCode.Mid(6))+1);} else {

maxCode.Format(“ZB%d%04d”, currentTime.GetYear(), 1);}

adoRecordSet.Close();return TRUE;

}

/************************************************************************/ /* BCG树形控件初始化,同时加载相应的列值

*/ /************************************************************************/ void CZbxn::ONINT(){ int nIndex = 0;m_zbxn->InsertColumn(nIndex, “名称”, 75);m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);

nIndex++;m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);m_zbxn->SetColumnAlign(nIndex, HDF_RIGHT);m_zbxn->SetColumnVisible(nIndex, FALSE);

nIndex++;m_zbxn->InsertColumn(nIndex, “速度”, 75);m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);m_zbxn->InsertColumn(nIndex, “桥梁最小宽度”, 75);m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);m_zbxn->SetColumnVisible(nIndex, FALSE);

nIndex++;m_zbxn->InsertColumn(nIndex, “最小转弯半径”, 75);m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);m_zbxn->SetColumnVisible(nIndex, FALSE);

nIndex++;m_zbxn->InsertColumn(nIndex, “内码”, 75);m_zbxn->SetHeaderAlign(nIndex, HDF_CENTER);m_zbxn->SetColumnVisible(nIndex, FALSE);

nIndex++;m_zbxn->AdjustLayout();

/********************************************************************** /* 调整树形控件的颜色

CBCGPGridColors colors;colors.m_LeftOffsetColors.m_clrBackground = globalData.clrWindow;

m_zbxn->SetColorTheme(colors);}

//从数据库中查询相应的值,并且以无根节点的形式显示,关键代码为标红的部分

CADORecordset * m_adoRS;strSQL.Format(“select MC, XH, ZZXL, XZXL, ZDPD, JDSD, HYL, CD, XDJJ, DLZXKD,QLZDCZ, QLZXKD, ZXZWBJ, HDZDCZ, SDZXKD, SDZDGD, ZBNM from BLJD_JCSJ_ZBXN”);m_adoRS = new CADORecordset(CBLJDProject::m_adoConn);

if(!m_adoRS->Open(strSQL,CADORecordset.openQuery)){

return FALSE;} int nCount = m_adoRS->GetRecordCount();if(!m_adoRS->IsBOF())

{

//将数据库中的装备名称插入到列表中

while(!m_adoRS->IsEOF()){ CBCGPGridRow *pRow = m_zbxn->CreateRow(m_zbxn->GetColumnCount());

ASSERT_VALID(pRow);m_adoRS->GetFieldValue(“MC”,strMC);

//装备名称

m_adoRS->GetFieldValue(“XH”,strXH);

//序号 m_adoRS->GetFieldValue(“ZZXL”, strZZXL);//装载效率 m_adoRS->GetFieldValue(“XZXL”, strXZXL);//卸载效率 m_adoRS->GetFieldValue(“ZDPD”, strZDPD);//最大坡度 m_adoRS->GetFieldValue(“JDSD”, strJDSD);//机动速度 m_adoRS->GetFieldValue(“HYL”, strHYL);//耗油量 m_adoRS->GetFieldValue(“CD”, strCD);//长度 m_adoRS->GetFieldValue(“XDJJ”, strXDJJ);//行动间距

m_adoRS->GetFieldValue(“DLZXKD”, strDLZXKD);//道路最小宽度 m_adoRS->GetFieldValue(“QLZDCZ”, strQLZDCZ);//桥梁最大承重

m_adoRS->GetFieldValue(“QLZXKD”, strQLZXKD);//桥梁最小宽度 m_adoRS->GetFieldValue(“ZXZWBJ”, strZXZWBJ);//最下转弯半径 m_adoRS->GetFieldValue(“HDZDCZ”, strHDZDCZ);//涵洞最大承重 m_adoRS->GetFieldValue(“SDZXKD”, strSDZXKD);//隧道最小宽度 m_adoRS->GetFieldValue(“SDZDGD”, strSDZDGD);//隧道最大高度 m_adoRS->GetFieldValue(“ZBNM”,strZBNM);pRow->GetItem(0)->SetValue((LPCTSTR)strMC);pRow->GetItem(1)->SetValue((LPCTSTR)strXH);pRow->GetItem(2)->SetValue(strZZXL);pRow->GetItem(3)->SetValue(strXZXL);pRow->GetItem(4)->SetValue(strZDPD);pRow->GetItem(5)->SetValue(strJDSD);pRow->GetItem(6)->SetValue(strHYL);pRow->GetItem(7)->SetValue(strCD);pRow->GetItem(8)->SetValue(strXDJJ);pRow->GetItem(9)->SetValue(strDLZXKD);pRow->GetItem(10)->SetValue(strQLZDCZ);pRow->GetItem(11)->SetValue(strQLZXKD);pRow->GetItem(12)->SetValue(strZXZWBJ);pRow->GetItem(13)->SetValue(strHDZDCZ);pRow->GetItem(14)->SetValue(strSDZXKD);pRow->GetItem(15)->SetValue(strSDZDGD);pRow->GetItem(16)->SetValue((LPCTSTR)strZBNM);

pRow->AllowSubItems();m_zbxn->AddRow(pRow,FALSE);

m_adoRS->MoveNext();

} }

将数据从列表树总移除出去的代码如下:

m_zbxn->RemoveRow(row->GetRowId());//将数据从列表树中移除出去

/************************************************************************/ /* 数字类型检查

*/ /************************************************************************/ BOOL CZbxn::IsNumber(LPCTSTR lpsCaption, CEdit* edt){ ASSERT(edt);

CString strData;// 读取控件中的数据

edt->GetWindowText(strData);

// 只允许输数据

int nStringLength = strData.GetLength();int nDotCount = 0;// 点字符不能多于1个

for(int nIndex = 0;nIndex

if(strData.GetAt(nIndex)== '.')

{

nDotCount++;

if(nDotCount > 1)

{

CString csTmp;

csTmp = strData.Left(nIndex);

csTmp += strData.Right(strData.GetLength()1);

edt->SetWindowText(csTmp);

return FALSE;

}

} }

// 不允许输入数字和点以外的字符

for(int nnIndex = 0;nnIndex

if(strData[ nnIndex ]!= '.' &&(strData[ nnIndex ] > '9' || strData[ nnIndex ]

{

strData = strData.Left(nnIndex)+ strData.Right(strData.GetLength()1);

MeageBox(“数据类型不匹配”, lpsCaption, MB_ICONERROR);

edt->SetWindowText(_T(“”));

edt->SetFocus();

return FALSE;

} } return TRUE;}

要使用BCG界面首先要在初始化中加入这样一句话: m_LXPG = new CBCGPGridCtrl();其中m_LXPG 为CBCGPGridCtrl类型的控制型变量

《BCG使用经验总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
BCG使用经验总结
点击下载文档
相关专题 软件使用经验总结 经验总结 BCG 软件使用经验总结 经验总结 BCG
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文