人人范文网 范文大全

BCG使用经验总结

发布时间:2020-03-03 14:08:22 来源:范文大全 收藏本文 下载本文 手机版

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心得

BCG Offer experience sharing

乖乖虎童车经验总结童车使用攻略

ControLogix PLC系统使用经验总结

自动化学报latex使用经验总结

我的pc使用经验总结(稿)

测试仪器示波器使用技巧经验总结

IBM的SWOT和BCG分析案例

使用六类综合布线系统的经验总结(整理)

新教材 新教法 新体会——使用北师大教材经验总结

BCG使用经验总结
《BCG使用经验总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档