📄 dlgrelationset.cpp
字号:
// DlgRelationSet.cpp : 实现文件
//
#include "stdafx.h"
#include "Temperature.h"
#include "DlgRelationSet.h"
// CDlgRelationSet 对话框
extern CTemperatureApp theApp;
IMPLEMENT_DYNAMIC(CDlgRelationSet, CDialog)
CDlgRelationSet::CDlgRelationSet(CWnd* pParent /*=NULL*/)
: CDialog(CDlgRelationSet::IDD, pParent),
m_pName( NULL ),
m_pValue( NULL ),
m_pDeviceClient( NULL ),
m_pList( NULL ),
m_pnCount( NULL ),
m_strStatic(_T(""))
, m_strEdit(_T(""))
, m_strEdit1(_T("")),
m_nSelectItem( -1 )
{
}
CDlgRelationSet::~CDlgRelationSet()
{
if( m_pName )
{
delete[] m_pName;
m_pName = NULL;
}
if( m_pValue )
{
delete[] m_pValue;
m_pValue = NULL;
}
}
void CDlgRelationSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_STATIC_SET_NAME, m_strStatic);
DDX_Text(pDX, IDC_EDIT_SET_EDIT, m_strEdit);
DDX_Control(pDX, IDC_LIST_CARD, m_ListCtrl);
DDX_Text(pDX, IDC_EDIT1, m_strEdit1);
DDV_MaxChars(pDX, m_strEdit1, 4);
}
BEGIN_MESSAGE_MAP(CDlgRelationSet, CDialog)
ON_BN_CLICKED(ID_ADD, &CDlgRelationSet::OnBnClickedOk)
ON_WM_CLOSE()
ON_NOTIFY(HDN_ITEMCHANGED, 0, &CDlgRelationSet::OnHdnItemchangedListCard)
ON_BN_CLICKED(IDC_BTN_MODIFY, &CDlgRelationSet::OnBnClickedBtnModify)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_CARD, &CDlgRelationSet::OnLvnItemchangedListCard)
ON_BN_CLICKED(ID_DELETE, &CDlgRelationSet::OnBnClickedCancel)
END_MESSAGE_MAP()
// CDlgRelationSet 消息处理程序
BOOL CDlgRelationSet::OnInitDialog()
{
CDialog::OnInitDialog();
if( theApp.m_Lang == 0 )
{
SetWindowText( _T("设置") );
}
m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT );
UINT nStrProduct = IDS_STR_SHORT_NAME;
CString str;
if( theApp.m_Lang == 0 )
{
nStrProduct = IDS_STR_SHORT_NAME_CH;
str.LoadString( IDS_STR_SHORT_NAME_CH );
GetDlgItem( IDC_STATIC_SN )->SetWindowText( str );
str.LoadString( IDS_STR_ADD_CH );
GetDlgItem( ID_ADD )->SetWindowText( str );
str.LoadString( IDS_STR_MODIFY_CH );
GetDlgItem( IDC_BTN_MODIFY )->SetWindowText( str );
str.LoadString( IDS_STR_DELETE_CH );
GetDlgItem( ID_DELETE )->SetWindowText( str );
}
str.LoadString( nStrProduct );
m_ListCtrl.InsertColumn( 0, str, LVCFMT_LEFT, 60 );
if( m_pName )
{
m_ListCtrl.InsertColumn( 1, m_pName, LVCFMT_LEFT, 100 );
}
else
{
str.LoadString( IDS_STR_PRODUCT_NAME );
m_ListCtrl.InsertColumn( 1, str, LVCFMT_LEFT, 100 );
}
InitList();
return TRUE;
}
void CDlgRelationSet::SetName(const TCHAR* strName )
{
if( strName )
{
if( m_pName )
{
delete[] m_pName;
}
m_pName = new TCHAR[ _tcslen(strName) + 1];
if( m_pName )
{
_tcscpy( m_pName, strName );
}
m_strStatic = strName;
}
}
//void CDlgRelationSet::SetValueString(const char* strValue )
//{
// if( strValue )
// {
// if( m_pValue )
// {
// delete[] m_pValue;
// }
// m_pValue = new char[ strlen(strValue) + 1];
// if( m_pValue )
// {
// strcpy( m_pValue, strValue );
// }
//
// m_strEdit = strValue;
// }
//}
// Add
void CDlgRelationSet::OnBnClickedOk()
{
UpdateData( TRUE );
char ch[64];
UINT nIDRes;
//LPTSTR lpStrCompare;
LPTSTR lpStr = m_strEdit.GetBuffer();
//WideCharToMultiByte(CP_ACP,0,lpStr,-1,ch,64,NULL,NULL);
strcpy( ch, lpStr );
lpStr = m_strEdit1.GetBuffer();
//WideCharToMultiByte(CP_ACP,0,lpStr,-1,ch,64,NULL,NULL);
int nVal = atoi( lpStr );
int nItemCount = m_ListCtrl.GetItemCount();
if( m_strEdit.GetLength() == 0 || m_strEdit1.GetLength() == 0 )
{
if( theApp.m_Lang == 0 )
{
MessageBox( _T("空数据") );
}
else
{
MessageBox( _T("Empty data") );
}
return;
}
BOOL IsRepeat = FALSE;
for( int i=0; i<nItemCount; i++ )
{
if( m_ListCtrl.GetItemData( i ) == nVal )
{
IsRepeat = TRUE;
nIDRes = theApp.m_Lang == 0 ? IDS_STR_SN_CH : IDS_STRINGNEW;
break;
}
CString strTemp = m_ListCtrl.GetItemText( 0, 1 );
CString strTemp2 = m_strEdit.GetBuffer();
if( strTemp == strTemp2 )
{
IsRepeat = TRUE;
nIDRes = theApp.m_Lang == 0 ? IDS_STR_SNN_CH : IDS_STR_NEWW;
break;
}
}
if( IsRepeat == FALSE )
{
m_pList[*m_pnCount].CardData.CardID = nVal;
strcpy( (char*)m_pList[*m_pnCount].CardData.CardName, ch );
(*m_pnCount)++;
int nItem = m_ListCtrl.InsertItem( nItemCount, m_strEdit1 );
m_ListCtrl.SetItemData( nItem, nVal );
m_ListCtrl.SetItemText( nItem, 1, m_strEdit );
m_ListCtrl.EnsureVisible( nItem, TRUE );
}
else
{
CString str;
str.LoadString( nIDRes );
MessageBox( str );
}
//OnOK();
}
void CDlgRelationSet::OnClose()
{
CDialog::OnClose();
}
void CDlgRelationSet::OnHdnItemchangedListCard(NMHDR *pNMHDR, LRESULT *pResult)
{
BOOL IsFind = FALSE;
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
DWORD dwData = m_ListCtrl.GetItemData( phdr->iItem );
CARD_ID_NAME_MEM* pData = m_pList;
char* pStr;
for( int i=0; i< (*m_pnCount); i++ )
{
if( dwData == pData->CardData.CardID )
{
TCHAR ch[128];
pStr = (char*)pData->CardData.CardName;
memset( ch, 0, sizeof(ch) );
//MultiByteToWideChar( CP_ACP, 0, pStr, strlen(pStr), ch, 128 );
strcpy( ch, pStr );
m_strEdit = ch;
m_strEdit.Format( _T("%d"), pData->CardData.CardID );
m_dwSelectVal = dwData;
m_nSelectPos = i;
IsFind = TRUE;
UpdateData( FALSE );
break;
}
pData++;
}
if( IsFind == FALSE )
{
m_strEdit = _T("");
m_strEdit = _T("");
UpdateData( FALSE );
}
*pResult = 0;
}
void CDlgRelationSet::InitList()
{
TCHAR ch[128];
char* pStr = NULL;
CARD_ID_NAME_MEM* pData = m_pList;
int nItem;
int ItemIndex = 0;
if( m_pList && (*m_pnCount) > 0 )
{
for( int i=0; i< *m_pnCount; i++ )
{
if( pData->CardData.CardID == 0 )
{
pData++;
continue;
}
_stprintf( ch, _T("%d"), pData->CardData.CardID );
nItem = m_ListCtrl.InsertItem( ItemIndex, ch );
m_ListCtrl.SetItemData( nItem, pData->CardData.CardID );
pStr = (char*)pData->CardData.CardName;
memset( ch, 0, sizeof(ch) );
//MultiByteToWideChar( CP_ACP, 0, pStr, strlen(pStr), ch, 128 );
strcpy( ch, pStr );
m_ListCtrl.SetItemText( nItem, 1, ch );
ItemIndex++;
pData++;
}
}
}
void CDlgRelationSet::OnBnClickedBtnModify()
{
UpdateData( TRUE );
if( m_nSelectItem != -1 )
{
char ch[64];
LPTSTR lpStr = m_strEdit.GetBuffer();
//WideCharToMultiByte(CP_ACP,0,lpStr,-1,ch,64,NULL,NULL);
strcpy( ch, lpStr );
m_ListCtrl.SetItemText( m_nSelectItem, 1, lpStr );
CARD_ID_NAME_MEM* pData = m_pList;
for( int i=0; i<(*m_pnCount); i++ )
{
if( m_dwSelectVal == pData->CardData.CardID )
{
strcpy( (char*)m_pList[i].CardData.CardName, ch );
break;
}
pData++;
}
}
}
void CDlgRelationSet::OnLvnItemchangedListCard(NMHDR *pNMHDR, LRESULT *pResult)
{
BOOL IsFind = FALSE;
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
m_nSelectItem = -1;
m_nSelectItem = pNMLV->iItem;
DWORD dwData = m_ListCtrl.GetItemData( pNMLV->iItem );
CARD_ID_NAME_MEM* pData = m_pList;
char* pStr;
for( int i=0; i< (*m_pnCount); i++ )
{
if( dwData == pData->CardData.CardID )
{
TCHAR ch[128];
memset( ch, 0, sizeof(ch) );
pStr = (char*)pData->CardData.CardName;
//MultiByteToWideChar( CP_ACP, 0, pStr, strlen(pStr), ch, 128 );
strcpy( ch, pStr );
m_strEdit = ch;
m_strEdit1.Format( _T("%d"), pData->CardData.CardID );
m_dwSelectVal = dwData;
m_nSelectPos = i;
UpdateData( FALSE );
IsFind = TRUE;
break;
}
pData++;
}
if( IsFind == FALSE )
{
m_strEdit = _T("");
m_strEdit1 = _T("");
UpdateData( FALSE );
}
*pResult = 0;
}
void CDlgRelationSet::OnBnClickedCancel()
{
if( m_nSelectItem != -1 )
{
UINT nRCLang = ( theApp.m_Lang == 0 ) ? IDS_STR_DELETE_SURE_CH : IDS_STR_DELETE_SURE;
DWORD dwSelectVal;
CString str;
str.LoadString( nRCLang );
CString strText;
dwSelectVal = m_ListCtrl.GetItemData( m_nSelectItem );
strText.Format( str, dwSelectVal );
int nRet = ::MessageBox( NULL, strText, _T(""), MB_YESNO );
CARD_ID_NAME_MEM* pData = m_pList;
if( nRet == IDYES )
{
m_ListCtrl.DeleteItem( m_nSelectItem );
for( int i=0; i<(*m_pnCount); i++ )
{
if( dwSelectVal == pData->CardData.CardID )
{
pData->CardData.CardID = 0;
(*m_pnCount)--;
break;
}
pData++;
}
}
int nItemCount = m_ListCtrl.GetItemCount();
m_nSelectItem = nItemCount - 1;
if( nItemCount == 0 )
{
m_strEdit = _T("");
m_strEdit1 = _T("");
UpdateData( FALSE );
}
}
//OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -